[{"data":1,"prerenderedAt":9158},["ShallowReactive",2],{"dev-uc-internet-shopping":3},{"id":4,"title":5,"body":6,"description":9149,"extension":9150,"faq":9151,"meta":9152,"navigation":7920,"noindex":9153,"path":9154,"seo":9155,"stem":9156,"__hash__":9157},"content\u002Fuse-cases\u002Finternet-shopping.md","Internet-shopping optimization problem",{"type":7,"value":8,"toc":9140},"minimark",[9,34,51,64,69,74,77,1261,1265,1284,2586,3123,3127,3239,5920,5923,7860,7864,7874,8137,8142,8146,8149,8208,8340,8534,8537,9009,9012,9059,9062,9065,9117,9120,9136],[10,11,12,13,17,18,21,22,29,30,33],"p",{},"Let us take a deep dive into the so-called \"internet-shopping optimization problem\", also known as \"supplier selection and order allocation\". This is a very common problem that occurs basically whenever a large number of items needs to be ordered from a large number of suppliers. As it involves ",[14,15,16],"em",{},"integer"," quantities, it is usually formulated as a ",[14,19,20],{},"mixed-integer linear problem"," (MILP). Unfortunately, MILPs are known to be ",[23,24,28],"a",{"href":25,"rel":26},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FNP-hardness",[27],"nofollow","NP-hard"," - which more or less says that they can be ",[14,31,32],{},"very"," hard to solve.",[10,35,36,37,42,43,46,47,50],{},"You can replicate all results by running ",[23,38,41],{"href":39,"rel":40},"https:\u002F\u002Fgithub.com\u002FQuicopt\u002FTutorials\u002Fblob\u002Fmain\u002Fuse-cases\u002Finternet-shopping.ipynb",[27],"this notebook",". Note that this will execute the open-source solver CP-SAT ",[14,44,45],{},"on your machine"," while Quicopt runs on our ",[14,48,49],{},"API server",". This means the hardware is not identical, which it should be for a strictly rigorous comparison.",[10,52,53,54,58,59,63],{},"Even if you're running CP-SAT on CPUs faster than our test server, you should still notice that ",[55,56,57],"strong",{},"Quicopt is a lot faster!"," On top of that, CP-SAT uses 8 cores while Quicopt uses just one! (CP-SAT's number of cores can be controlled by adjusting ",[60,61,62],"code",{},"WORKERS",", see below. Finally, be mindful of the fact that CP-SAT operates non-deterministically, i.e. runtimes will fluctuate quite a lot, as will solution quality.)",[65,66,68],"h2",{"id":67},"the-problem-as-a-milp","The problem as a MILP",[70,71,73],"h3",{"id":72},"variables","Variables",[10,75,76],{},"The variables of our optimization problems are given in the following table:",[78,79,80,99],"table",{},[81,82,83],"thead",{},[84,85,86,90,93,96],"tr",{},[87,88,89],"th",{},"symbol",[87,91,92],{},"values",[87,94,95],{},"meaning",[87,97,98],{},"cost it carries",[100,101,102,353,557,838,1046],"tbody",{},[84,103,104,215,218,251],{},[105,106,107],"td",{},[108,109,112,141],"span",{"className":110},[111],"katex",[108,113,116],{"className":114},[115],"katex-mathml",[117,118,120],"math",{"xmlns":119},"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML",[121,122,123,136],"semantics",{},[124,125,126],"mrow",{},[127,128,129,133],"msub",{},[130,131,132],"mi",{},"z",[130,134,135],{},"v",[137,138,140],"annotation",{"encoding":139},"application\u002Fx-tex","z_v",[108,142,146],{"className":143,"ariaHidden":145},[144],"katex-html","true",[108,147,150,155],{"className":148},[149],"base",[108,151],{"className":152,"style":154},[153],"strut","height:0.5806em;vertical-align:-0.15em;",[108,156,159,164],{"className":157},[158],"mord",[108,160,132],{"className":161,"style":163},[158,162],"mathnormal","margin-right:0.044em;",[108,165,168],{"className":166},[167],"msupsub",[108,169,173,206],{"className":170},[171,172],"vlist-t","vlist-t2",[108,174,177,201],{"className":175},[176],"vlist-r",[108,178,182],{"className":179,"style":181},[180],"vlist","height:0.1514em;",[108,183,185,190],{"style":184},"top:-2.55em;margin-left:-0.044em;margin-right:0.05em;",[108,186],{"className":187,"style":189},[188],"pstrut","height:2.7em;",[108,191,197],{"className":192},[193,194,195,196],"sizing","reset-size6","size3","mtight",[108,198,135],{"className":199,"style":200},[158,162,196],"margin-right:0.0359em;",[108,202,205],{"className":203},[204],"vlist-s","​",[108,207,209],{"className":208},[176],[108,210,213],{"className":211,"style":212},[180],"height:0.15em;",[108,214],{},[105,216,217],{},"0 or 1",[105,219,220,221,250],{},"variant ",[108,222,224,237],{"className":223},[111],[108,225,227],{"className":226},[115],[117,228,229],{"xmlns":119},[121,230,231,235],{},[124,232,233],{},[130,234,135],{},[137,236,135],{"encoding":139},[108,238,240],{"className":239,"ariaHidden":145},[144],[108,241,243,247],{"className":242},[149],[108,244],{"className":245,"style":246},[153],"height:0.4306em;",[108,248,135],{"className":249,"style":200},[158,162]," is used no\u002Fyes",[105,252,253],{},[108,254,256,280],{"className":255},[111],[108,257,259],{"className":258},[115],[117,260,261],{"xmlns":119},[121,262,263,277],{},[124,264,265],{},[266,267,268,271,273],"msubsup",{},[130,269,270],{},"C",[130,272,135],{},[274,275,276],"mtext",{},"choice",[137,278,279],{"encoding":139},"C^{\\text{choice}}_v",[108,281,283],{"className":282,"ariaHidden":145},[144],[108,284,286,290],{"className":285},[149],[108,287],{"className":288,"style":289},[153],"height:1.0961em;vertical-align:-0.247em;",[108,291,293,297],{"className":292},[158],[108,294,270],{"className":295,"style":296},[158,162],"margin-right:0.0715em;",[108,298,300],{"className":299},[167],[108,301,303,344],{"className":302},[171,172],[108,304,306,341],{"className":305},[176],[108,307,310,322],{"className":308,"style":309},[180],"height:0.8491em;",[108,311,313,316],{"style":312},"top:-2.453em;margin-left:-0.0715em;margin-right:0.05em;",[108,314],{"className":315,"style":189},[188],[108,317,319],{"className":318},[193,194,195,196],[108,320,135],{"className":321,"style":200},[158,162,196],[108,323,325,328],{"style":324},"top:-3.063em;margin-right:0.05em;",[108,326],{"className":327,"style":189},[188],[108,329,331],{"className":330},[193,194,195,196],[108,332,334],{"className":333},[158,196],[108,335,338],{"className":336},[158,337,196],"text",[108,339,276],{"className":340},[158,196],[108,342,205],{"className":343},[204],[108,345,347],{"className":346},[176],[108,348,351],{"className":349,"style":350},[180],"height:0.247em;",[108,352],{},[84,354,355,430,432,463],{},[105,356,357],{},[108,358,360,380],{"className":359},[111],[108,361,363],{"className":362},[115],[117,364,365],{"xmlns":119},[121,366,367,377],{},[124,368,369],{},[127,370,371,374],{},[130,372,373],{},"x",[130,375,376],{},"o",[137,378,379],{"encoding":139},"x_o",[108,381,383],{"className":382,"ariaHidden":145},[144],[108,384,386,389],{"className":385},[149],[108,387],{"className":388,"style":154},[153],[108,390,392,395],{"className":391},[158],[108,393,373],{"className":394},[158,162],[108,396,398],{"className":397},[167],[108,399,401,422],{"className":400},[171,172],[108,402,404,419],{"className":403},[176],[108,405,407],{"className":406,"style":181},[180],[108,408,410,413],{"style":409},"top:-2.55em;margin-left:0em;margin-right:0.05em;",[108,411],{"className":412,"style":189},[188],[108,414,416],{"className":415},[193,194,195,196],[108,417,376],{"className":418},[158,162,196],[108,420,205],{"className":421},[204],[108,423,425],{"className":424},[176],[108,426,428],{"className":427,"style":212},[180],[108,429],{},[105,431,217],{},[105,433,434,435,250],{},"offer ",[108,436,438,451],{"className":437},[111],[108,439,441],{"className":440},[115],[117,442,443],{"xmlns":119},[121,444,445,449],{},[124,446,447],{},[130,448,376],{},[137,450,376],{"encoding":139},[108,452,454],{"className":453,"ariaHidden":145},[144],[108,455,457,460],{"className":456},[149],[108,458],{"className":459,"style":246},[153],[108,461,376],{"className":462},[158,162],[105,464,465],{},[108,466,468,489],{"className":467},[111],[108,469,471],{"className":470},[115],[117,472,473],{"xmlns":119},[121,474,475,486],{},[124,476,477],{},[266,478,479,481,483],{},[130,480,270],{},[130,482,376],{},[274,484,485],{},"use",[137,487,488],{"encoding":139},"C^{\\text{use}}_o",[108,490,492],{"className":491,"ariaHidden":145},[144],[108,493,495,499],{"className":494},[149],[108,496],{"className":497,"style":498},[153],"height:0.9303em;vertical-align:-0.247em;",[108,500,502,505],{"className":501},[158],[108,503,270],{"className":504,"style":296},[158,162],[108,506,508],{"className":507},[167],[108,509,511,549],{"className":510},[171,172],[108,512,514,546],{"className":513},[176],[108,515,518,529],{"className":516,"style":517},[180],"height:0.6644em;",[108,519,520,523],{"style":312},[108,521],{"className":522,"style":189},[188],[108,524,526],{"className":525},[193,194,195,196],[108,527,376],{"className":528},[158,162,196],[108,530,531,534],{"style":324},[108,532],{"className":533,"style":189},[188],[108,535,537],{"className":536},[193,194,195,196],[108,538,540],{"className":539},[158,196],[108,541,543],{"className":542},[158,337,196],[108,544,485],{"className":545},[158,196],[108,547,205],{"className":548},[204],[108,550,552],{"className":551},[176],[108,553,555],{"className":554,"style":350},[180],[108,556],{},[84,558,559,632,714,745],{},[105,560,561],{},[108,562,564,583],{"className":563},[111],[108,565,567],{"className":566},[115],[117,568,569],{"xmlns":119},[121,570,571,580],{},[124,572,573],{},[127,574,575,578],{},[130,576,577],{},"n",[130,579,376],{},[137,581,582],{"encoding":139},"n_o",[108,584,586],{"className":585,"ariaHidden":145},[144],[108,587,589,592],{"className":588},[149],[108,590],{"className":591,"style":154},[153],[108,593,595,598],{"className":594},[158],[108,596,577],{"className":597},[158,162],[108,599,601],{"className":600},[167],[108,602,604,624],{"className":603},[171,172],[108,605,607,621],{"className":606},[176],[108,608,610],{"className":609,"style":181},[180],[108,611,612,615],{"style":409},[108,613],{"className":614,"style":189},[188],[108,616,618],{"className":617},[193,194,195,196],[108,619,376],{"className":620},[158,162,196],[108,622,205],{"className":623},[204],[108,625,627],{"className":626},[176],[108,628,630],{"className":629,"style":212},[180],[108,631],{},[105,633,634],{},[108,635,637,670],{"className":636},[111],[108,638,640],{"className":639},[115],[117,641,642],{"xmlns":119},[121,643,644,667],{},[124,645,646,650,654,657,659,662,664],{},[647,648,649],"mn",{},"0",[651,652,653],"mo",{"separator":145},",",[647,655,656],{},"1",[651,658,653],{"separator":145},[647,660,661],{},"2",[651,663,653],{"separator":145},[651,665,666],{},"…",[137,668,669],{"encoding":139},"0, 1, 2, \\dots",[108,671,673],{"className":672,"ariaHidden":145},[144],[108,674,676,680,683,687,692,695,698,701,704,707,710],{"className":675},[149],[108,677],{"className":678,"style":679},[153],"height:0.8389em;vertical-align:-0.1944em;",[108,681,649],{"className":682},[158],[108,684,653],{"className":685},[686],"mpunct",[108,688],{"className":689,"style":691},[690],"mspace","margin-right:0.1667em;",[108,693,656],{"className":694},[158],[108,696,653],{"className":697},[686],[108,699],{"className":700,"style":691},[690],[108,702,661],{"className":703},[158],[108,705,653],{"className":706},[686],[108,708],{"className":709,"style":691},[690],[108,711,666],{"className":712},[713],"minner",[105,715,716,717],{},"the number of packs bought from offer ",[108,718,720,733],{"className":719},[111],[108,721,723],{"className":722},[115],[117,724,725],{"xmlns":119},[121,726,727,731],{},[124,728,729],{},[130,730,376],{},[137,732,376],{"encoding":139},[108,734,736],{"className":735,"ariaHidden":145},[144],[108,737,739,742],{"className":738},[149],[108,740],{"className":741,"style":246},[153],[108,743,376],{"className":744},[158,162],[105,746,747,837],{},[108,748,750,771],{"className":749},[111],[108,751,753],{"className":752},[115],[117,754,755],{"xmlns":119},[121,756,757,768],{},[124,758,759],{},[266,760,761,763,765],{},[130,762,270],{},[130,764,376],{},[274,766,767],{},"pack",[137,769,770],{"encoding":139},"C^{\\text{pack}}_o",[108,772,774],{"className":773,"ariaHidden":145},[144],[108,775,777,780],{"className":776},[149],[108,778],{"className":779,"style":289},[153],[108,781,783,786],{"className":782},[158],[108,784,270],{"className":785,"style":296},[158,162],[108,787,789],{"className":788},[167],[108,790,792,829],{"className":791},[171,172],[108,793,795,826],{"className":794},[176],[108,796,798,809],{"className":797,"style":309},[180],[108,799,800,803],{"style":312},[108,801],{"className":802,"style":189},[188],[108,804,806],{"className":805},[193,194,195,196],[108,807,376],{"className":808},[158,162,196],[108,810,811,814],{"style":324},[108,812],{"className":813,"style":189},[188],[108,815,817],{"className":816},[193,194,195,196],[108,818,820],{"className":819},[158,196],[108,821,823],{"className":822},[158,337,196],[108,824,767],{"className":825},[158,196],[108,827,205],{"className":828},[204],[108,830,832],{"className":831},[176],[108,833,835],{"className":834,"style":350},[180],[108,836],{}," per pack",[84,839,840,916,918,951],{},[105,841,842],{},[108,843,845,865],{"className":844},[111],[108,846,848],{"className":847},[115],[117,849,850],{"xmlns":119},[121,851,852,862],{},[124,853,854],{},[127,855,856,859],{},[130,857,858],{},"u",[130,860,861],{},"k",[137,863,864],{"encoding":139},"u_k",[108,866,868],{"className":867,"ariaHidden":145},[144],[108,869,871,874],{"className":870},[149],[108,872],{"className":873,"style":154},[153],[108,875,877,880],{"className":876},[158],[108,878,858],{"className":879},[158,162],[108,881,883],{"className":882},[167],[108,884,886,908],{"className":885},[171,172],[108,887,889,905],{"className":888},[176],[108,890,893],{"className":891,"style":892},[180],"height:0.3361em;",[108,894,895,898],{"style":409},[108,896],{"className":897,"style":189},[188],[108,899,901],{"className":900},[193,194,195,196],[108,902,861],{"className":903,"style":904},[158,162,196],"margin-right:0.0315em;",[108,906,205],{"className":907},[204],[108,909,911],{"className":910},[176],[108,912,914],{"className":913,"style":212},[180],[108,915],{},[105,917,217],{},[105,919,920,921,950],{},"supplier ",[108,922,924,937],{"className":923},[111],[108,925,927],{"className":926},[115],[117,928,929],{"xmlns":119},[121,930,931,935],{},[124,932,933],{},[130,934,861],{},[137,936,861],{"encoding":139},[108,938,940],{"className":939,"ariaHidden":145},[144],[108,941,943,947],{"className":942},[149],[108,944],{"className":945,"style":946},[153],"height:0.6944em;",[108,948,861],{"className":949,"style":904},[158,162]," is used no\u002Fyes (that is, any of its offers)",[105,952,953],{},[108,954,956,977],{"className":955},[111],[108,957,959],{"className":958},[115],[117,960,961],{"xmlns":119},[121,962,963,974],{},[124,964,965],{},[266,966,967,969,971],{},[130,968,270],{},[130,970,861],{},[274,972,973],{},"fee",[137,975,976],{"encoding":139},"C^{\\text{fee}}_k",[108,978,980],{"className":979,"ariaHidden":145},[144],[108,981,983,987],{"className":982},[149],[108,984],{"className":985,"style":986},[153],"height:1.1322em;vertical-align:-0.2831em;",[108,988,990,993],{"className":989},[158],[108,991,270],{"className":992,"style":296},[158,162],[108,994,996],{"className":995},[167],[108,997,999,1037],{"className":998},[171,172],[108,1000,1002,1034],{"className":1001},[176],[108,1003,1005,1017],{"className":1004,"style":309},[180],[108,1006,1008,1011],{"style":1007},"top:-2.4169em;margin-left:-0.0715em;margin-right:0.05em;",[108,1009],{"className":1010,"style":189},[188],[108,1012,1014],{"className":1013},[193,194,195,196],[108,1015,861],{"className":1016,"style":904},[158,162,196],[108,1018,1019,1022],{"style":324},[108,1020],{"className":1021,"style":189},[188],[108,1023,1025],{"className":1024},[193,194,195,196],[108,1026,1028],{"className":1027},[158,196],[108,1029,1031],{"className":1030},[158,337,196],[108,1032,973],{"className":1033},[158,196],[108,1035,205],{"className":1036},[204],[108,1038,1040],{"className":1039},[176],[108,1041,1044],{"className":1042,"style":1043},[180],"height:0.2831em;",[108,1045],{},[84,1047,1048,1124,1126,1157],{},[105,1049,1050],{},[108,1051,1053,1072],{"className":1052},[111],[108,1054,1056],{"className":1055},[115],[117,1057,1058],{"xmlns":119},[121,1059,1060,1069],{},[124,1061,1062],{},[127,1063,1064,1067],{},[130,1065,1066],{},"f",[130,1068,861],{},[137,1070,1071],{"encoding":139},"f_k",[108,1073,1075],{"className":1074,"ariaHidden":145},[144],[108,1076,1078,1082],{"className":1077},[149],[108,1079],{"className":1080,"style":1081},[153],"height:0.8889em;vertical-align:-0.1944em;",[108,1083,1085,1089],{"className":1084},[158],[108,1086,1066],{"className":1087,"style":1088},[158,162],"margin-right:0.1076em;",[108,1090,1092],{"className":1091},[167],[108,1093,1095,1116],{"className":1094},[171,172],[108,1096,1098,1113],{"className":1097},[176],[108,1099,1101],{"className":1100,"style":892},[180],[108,1102,1104,1107],{"style":1103},"top:-2.55em;margin-left:-0.1076em;margin-right:0.05em;",[108,1105],{"className":1106,"style":189},[188],[108,1108,1110],{"className":1109},[193,194,195,196],[108,1111,861],{"className":1112,"style":904},[158,162,196],[108,1114,205],{"className":1115},[204],[108,1117,1119],{"className":1118},[176],[108,1120,1122],{"className":1121,"style":212},[180],[108,1123],{},[105,1125,217],{},[105,1127,920,1128,1156],{},[108,1129,1131,1144],{"className":1130},[111],[108,1132,1134],{"className":1133},[115],[117,1135,1136],{"xmlns":119},[121,1137,1138,1142],{},[124,1139,1140],{},[130,1141,861],{},[137,1143,861],{"encoding":139},[108,1145,1147],{"className":1146,"ariaHidden":145},[144],[108,1148,1150,1153],{"className":1149},[149],[108,1151],{"className":1152,"style":946},[153],[108,1154,861],{"className":1155,"style":904},[158,162]," ships for free no\u002Fyes",[105,1158,1159,1260],{},[108,1160,1162,1186],{"className":1161},[111],[108,1163,1165],{"className":1164},[115],[117,1166,1167],{"xmlns":119},[121,1168,1169,1183],{},[124,1170,1171,1174],{},[651,1172,1173],{},"−",[266,1175,1176,1178,1180],{},[130,1177,270],{},[130,1179,861],{},[274,1181,1182],{},"ship",[137,1184,1185],{"encoding":139},"-C^{\\text{ship}}_k",[108,1187,1189],{"className":1188,"ariaHidden":145},[144],[108,1190,1192,1196,1199],{"className":1191},[149],[108,1193],{"className":1194,"style":1195},[153],"height:1.2683em;vertical-align:-0.3013em;",[108,1197,1173],{"className":1198},[158],[108,1200,1202,1205],{"className":1201},[158],[108,1203,270],{"className":1204,"style":296},[158,162],[108,1206,1208],{"className":1207},[167],[108,1209,1211,1251],{"className":1210},[171,172],[108,1212,1214,1248],{"className":1213},[176],[108,1215,1218,1230],{"className":1216,"style":1217},[180],"height:0.967em;",[108,1219,1221,1224],{"style":1220},"top:-2.3987em;margin-left:-0.0715em;margin-right:0.05em;",[108,1222],{"className":1223,"style":189},[188],[108,1225,1227],{"className":1226},[193,194,195,196],[108,1228,861],{"className":1229,"style":904},[158,162,196],[108,1231,1233,1236],{"style":1232},"top:-3.1809em;margin-right:0.05em;",[108,1234],{"className":1235,"style":189},[188],[108,1237,1239],{"className":1238},[193,194,195,196],[108,1240,1242],{"className":1241},[158,196],[108,1243,1245],{"className":1244},[158,337,196],[108,1246,1182],{"className":1247},[158,196],[108,1249,205],{"className":1250},[204],[108,1252,1254],{"className":1253},[176],[108,1255,1258],{"className":1256,"style":1257},[180],"height:0.3013em;",[108,1259],{}," (a saving)",[70,1262,1264],{"id":1263},"objective-function","Objective function",[10,1266,1267,1268,1271,1272,1275,1276,1279,1280,1283],{},"The problem has four \"levels\": ",[55,1269,1270],{},"items"," to buy, ",[55,1273,1274],{},"variants"," of each item, ",[55,1277,1278],{},"offers"," for each variant, and finally the ",[55,1281,1282],{},"suppliers"," offering the offers. The cost function has two main terms:",[108,1285,1288],{"className":1286},[1287],"katex-display",[108,1289,1291,1521],{"className":1290},[111],[108,1292,1294],{"className":1293},[115],[117,1295,1297],{"xmlns":119,"display":1296},"block",[121,1298,1299,1518],{},[124,1300,1301,1333,1336,1353,1370,1374,1382,1385,1391,1393,1396,1398,1415,1418,1426,1428,1434,1436,1444,1446,1452,1455,1457,1459,1461,1463,1476,1478,1486,1488,1494,1496,1504,1506,1512,1514],{},[1302,1303,1304,1312],"munder",{},[124,1305,1306,1309],{},[130,1307,1308],{},"min",[651,1310,1311],{},"⁡",[124,1313,1314,1317,1319,1321,1323,1325,1327,1329,1331],{},[130,1315,132],{"mathvariant":1316},"bold-italic",[651,1318,653],{"separator":145},[130,1320,373],{"mathvariant":1316},[651,1322,653],{"separator":145},[130,1324,577],{"mathvariant":1316},[651,1326,653],{"separator":145},[130,1328,858],{"mathvariant":1316},[651,1330,653],{"separator":145},[130,1332,861],{"mathvariant":1316},[274,1334,1335],{},"  ",[1302,1337,1338,1341],{},[651,1339,1340],{},"∑",[124,1342,1343,1346,1349],{},[130,1344,1345],{},"i",[651,1347,1348],{},"∈",[130,1350,1352],{"mathvariant":1351},"script","I",[1302,1354,1355,1357],{},[651,1356,1340],{},[124,1358,1359,1361,1363],{},[130,1360,135],{},[651,1362,1348],{},[127,1364,1365,1368],{},[130,1366,1367],{"mathvariant":1351},"V",[130,1369,1345],{},[651,1371,1373],{"fence":145,"stretchy":145,"minsize":1372,"maxsize":1372},"1.8em","(",[266,1375,1376,1378,1380],{},[130,1377,270],{},[130,1379,135],{},[274,1381,276],{},[274,1383,1384],{}," ",[127,1386,1387,1389],{},[130,1388,132],{},[130,1390,135],{},[274,1392,1335],{},[651,1394,1395],{},"+",[274,1397,1335],{},[1302,1399,1400,1402],{},[651,1401,1340],{},[124,1403,1404,1406,1408],{},[130,1405,376],{},[651,1407,1348],{},[127,1409,1410,1413],{},[130,1411,1412],{"mathvariant":1351},"O",[130,1414,135],{},[651,1416,1373],{"fence":145,"stretchy":145,"minsize":1417,"maxsize":1417},"1.2em",[266,1419,1420,1422,1424],{},[130,1421,270],{},[130,1423,376],{},[274,1425,767],{},[274,1427,1384],{},[127,1429,1430,1432],{},[130,1431,577],{},[130,1433,376],{},[651,1435,1395],{},[266,1437,1438,1440,1442],{},[130,1439,270],{},[130,1441,376],{},[274,1443,485],{},[274,1445,1384],{},[127,1447,1448,1450],{},[130,1449,373],{},[130,1451,376],{},[651,1453,1454],{"fence":145,"stretchy":145,"minsize":1417,"maxsize":1417},")",[651,1456,1454],{"fence":145,"stretchy":145,"minsize":1372,"maxsize":1372},[274,1458,1335],{},[651,1460,1395],{},[274,1462,1335],{},[1302,1464,1465,1467],{},[651,1466,1340],{},[124,1468,1469,1471,1473],{},[130,1470,861],{},[651,1472,1348],{},[130,1474,1475],{"mathvariant":1351},"K",[651,1477,1373],{"fence":145,"stretchy":145,"minsize":1417,"maxsize":1417},[266,1479,1480,1482,1484],{},[130,1481,270],{},[130,1483,861],{},[274,1485,973],{},[274,1487,1384],{},[127,1489,1490,1492],{},[130,1491,858],{},[130,1493,861],{},[651,1495,1173],{},[266,1497,1498,1500,1502],{},[130,1499,270],{},[130,1501,861],{},[274,1503,1182],{},[274,1505,1384],{},[127,1507,1508,1510],{},[130,1509,1066],{},[130,1511,861],{},[651,1513,1454],{"fence":145,"stretchy":145,"minsize":1417,"maxsize":1417},[130,1515,1517],{"mathvariant":1516},"normal",".",[137,1519,1520],{"encoding":139},"\\min_{\\boldsymbol{z}, \\boldsymbol{x}, \\boldsymbol{n}, \\boldsymbol{u}, \\boldsymbol{k}}\\; \\sum_{i \\in \\mathcal{I}}\\sum_{v \\in \\mathcal{V}_i}\\Bigl(C^{\\text{choice}}_v\\, z_v \\;+\\; \\sum_{o \\in \\mathcal{O}_v}\\bigl(C^{\\text{pack}}_o\\, n_o + C^{\\text{use}}_o\\, x_o\\bigr)\\Bigr) \\;+\\; \\sum_{k \\in \\mathcal{K}}\\bigl(C^{\\text{fee}}_k\\, u_k - C^{\\text{ship}}_k\\, f_k\\bigr).",[108,1522,1524,1941,2156,2292,2470],{"className":1523,"ariaHidden":145},[144],[108,1525,1527,1531,1642,1646,1649,1712,1715,1813,1822,1881,1884,1924,1927,1931,1935,1938],{"className":1526},[149],[108,1528],{"className":1529,"style":1530},[153],"height:2.5444em;vertical-align:-1.3944em;",[108,1532,1536],{"className":1533},[1534,1535],"mop","op-limits",[108,1537,1539,1633],{"className":1538},[171,172],[108,1540,1542,1630],{"className":1541},[176],[108,1543,1546,1619],{"className":1544,"style":1545},[180],"height:0.6679em;",[108,1547,1549,1553],{"style":1548},"top:-2.3479em;margin-left:0em;",[108,1550],{"className":1551,"style":1552},[188],"height:3em;",[108,1554,1556],{"className":1555},[193,194,195,196],[108,1557,1559,1570,1573,1582,1585,1594,1597,1606,1609],{"className":1558},[158,196],[108,1560,1562],{"className":1561},[158,196],[108,1563,1565],{"className":1564},[158,196],[108,1566,132],{"className":1567,"style":1569},[158,1568,196],"boldsymbol","margin-right:0.0421em;",[108,1571,653],{"className":1572},[686,196],[108,1574,1576],{"className":1575},[158,196],[108,1577,1579],{"className":1578},[158,196],[108,1580,373],{"className":1581},[158,1568,196],[108,1583,653],{"className":1584},[686,196],[108,1586,1588],{"className":1587},[158,196],[108,1589,1591],{"className":1590},[158,196],[108,1592,577],{"className":1593},[158,1568,196],[108,1595,653],{"className":1596},[686,196],[108,1598,1600],{"className":1599},[158,196],[108,1601,1603],{"className":1602},[158,196],[108,1604,858],{"className":1605},[158,1568,196],[108,1607,653],{"className":1608},[686,196],[108,1610,1612],{"className":1611},[158,196],[108,1613,1615],{"className":1614},[158,196],[108,1616,861],{"className":1617,"style":1618},[158,1568,196],"margin-right:0.0185em;",[108,1620,1622,1625],{"style":1621},"top:-3em;",[108,1623],{"className":1624,"style":1552},[188],[108,1626,1627],{},[108,1628,1308],{"className":1629},[1534],[108,1631,205],{"className":1632},[204],[108,1634,1636],{"className":1635},[176],[108,1637,1640],{"className":1638,"style":1639},[180],"height:0.8882em;",[108,1641],{},[108,1643],{"className":1644,"style":1645},[690],"margin-right:0.2778em;",[108,1647],{"className":1648,"style":691},[690],[108,1650,1652],{"className":1651},[1534,1535],[108,1653,1655,1703],{"className":1654},[171,172],[108,1656,1658,1700],{"className":1657},[176],[108,1659,1662,1687],{"className":1660,"style":1661},[180],"height:1.05em;",[108,1663,1665,1669],{"style":1664},"top:-1.8557em;margin-left:0em;",[108,1666],{"className":1667,"style":1668},[188],"height:3.05em;",[108,1670,1672],{"className":1671},[193,194,195,196],[108,1673,1675,1678,1682],{"className":1674},[158,196],[108,1676,1345],{"className":1677},[158,162,196],[108,1679,1348],{"className":1680},[1681,196],"mrel",[108,1683,1352],{"className":1684,"style":1686},[158,1685,196],"mathcal","margin-right:0.0738em;",[108,1688,1690,1693],{"style":1689},"top:-3.05em;",[108,1691],{"className":1692,"style":1668},[188],[108,1694,1695],{},[108,1696,1340],{"className":1697},[1534,1698,1699],"op-symbol","large-op",[108,1701,205],{"className":1702},[204],[108,1704,1706],{"className":1705},[176],[108,1707,1710],{"className":1708,"style":1709},[180],"height:1.3217em;",[108,1711],{},[108,1713],{"className":1714,"style":691},[690],[108,1716,1718],{"className":1717},[1534,1535],[108,1719,1721,1804],{"className":1720},[171,172],[108,1722,1724,1801],{"className":1723},[176],[108,1725,1727,1791],{"className":1726,"style":1661},[180],[108,1728,1729,1732],{"style":1664},[108,1730],{"className":1731,"style":1668},[188],[108,1733,1735],{"className":1734},[193,194,195,196],[108,1736,1738,1741,1744],{"className":1737},[158,196],[108,1739,135],{"className":1740,"style":200},[158,162,196],[108,1742,1348],{"className":1743},[1681,196],[108,1745,1747,1751],{"className":1746},[158,196],[108,1748,1367],{"className":1749,"style":1750},[158,1685,196],"margin-right:0.0822em;",[108,1752,1754],{"className":1753},[167],[108,1755,1757,1782],{"className":1756},[171,172],[108,1758,1760,1779],{"className":1759},[176],[108,1761,1764],{"className":1762,"style":1763},[180],"height:0.3281em;",[108,1765,1767,1771],{"style":1766},"top:-2.357em;margin-left:-0.0822em;margin-right:0.0714em;",[108,1768],{"className":1769,"style":1770},[188],"height:2.5em;",[108,1772,1776],{"className":1773},[193,1774,1775,196],"reset-size3","size1",[108,1777,1345],{"className":1778},[158,162,196],[108,1780,205],{"className":1781},[204],[108,1783,1785],{"className":1784},[176],[108,1786,1789],{"className":1787,"style":1788},[180],"height:0.143em;",[108,1790],{},[108,1792,1793,1796],{"style":1689},[108,1794],{"className":1795,"style":1668},[188],[108,1797,1798],{},[108,1799,1340],{"className":1800},[1534,1698,1699],[108,1802,205],{"className":1803},[204],[108,1805,1807],{"className":1806},[176],[108,1808,1811],{"className":1809,"style":1810},[180],"height:1.3944em;",[108,1812],{},[108,1814,1817],{"className":1815},[1816],"mopen",[108,1818,1373],{"className":1819},[1820,1821],"delimsizing","size2",[108,1823,1825,1828],{"className":1824},[158],[108,1826,270],{"className":1827,"style":296},[158,162],[108,1829,1831],{"className":1830},[167],[108,1832,1834,1873],{"className":1833},[171,172],[108,1835,1837,1870],{"className":1836},[176],[108,1838,1841,1852],{"className":1839,"style":1840},[180],"height:0.8991em;",[108,1842,1843,1846],{"style":312},[108,1844],{"className":1845,"style":189},[188],[108,1847,1849],{"className":1848},[193,194,195,196],[108,1850,135],{"className":1851,"style":200},[158,162,196],[108,1853,1855,1858],{"style":1854},"top:-3.113em;margin-right:0.05em;",[108,1856],{"className":1857,"style":189},[188],[108,1859,1861],{"className":1860},[193,194,195,196],[108,1862,1864],{"className":1863},[158,196],[108,1865,1867],{"className":1866},[158,337,196],[108,1868,276],{"className":1869},[158,196],[108,1871,205],{"className":1872},[204],[108,1874,1876],{"className":1875},[176],[108,1877,1879],{"className":1878,"style":350},[180],[108,1880],{},[108,1882],{"className":1883,"style":691},[690],[108,1885,1887,1890],{"className":1886},[158],[108,1888,132],{"className":1889,"style":163},[158,162],[108,1891,1893],{"className":1892},[167],[108,1894,1896,1916],{"className":1895},[171,172],[108,1897,1899,1913],{"className":1898},[176],[108,1900,1902],{"className":1901,"style":181},[180],[108,1903,1904,1907],{"style":184},[108,1905],{"className":1906,"style":189},[188],[108,1908,1910],{"className":1909},[193,194,195,196],[108,1911,135],{"className":1912,"style":200},[158,162,196],[108,1914,205],{"className":1915},[204],[108,1917,1919],{"className":1918},[176],[108,1920,1922],{"className":1921,"style":212},[180],[108,1923],{},[108,1925],{"className":1926,"style":1645},[690],[108,1928],{"className":1929,"style":1930},[690],"margin-right:0.2222em;",[108,1932,1395],{"className":1933},[1934],"mbin",[108,1936],{"className":1937,"style":1645},[690],[108,1939],{"className":1940,"style":1930},[690],[108,1942,1944,1948,2041,2047,2104,2107,2147,2150,2153],{"className":1943},[149],[108,1945],{"className":1946,"style":1947},[153],"height:2.4444em;vertical-align:-1.3944em;",[108,1949,1951],{"className":1950},[1534,1535],[108,1952,1954,2033],{"className":1953},[171,172],[108,1955,1957,2030],{"className":1956},[176],[108,1958,1960,2020],{"className":1959,"style":1661},[180],[108,1961,1962,1965],{"style":1664},[108,1963],{"className":1964,"style":1668},[188],[108,1966,1968],{"className":1967},[193,194,195,196],[108,1969,1971,1974,1977],{"className":1970},[158,196],[108,1972,376],{"className":1973},[158,162,196],[108,1975,1348],{"className":1976},[1681,196],[108,1978,1980,1984],{"className":1979},[158,196],[108,1981,1412],{"className":1982,"style":1983},[158,1685,196],"margin-right:0.0278em;",[108,1985,1987],{"className":1986},[167],[108,1988,1990,2012],{"className":1989},[171,172],[108,1991,1993,2009],{"className":1992},[176],[108,1994,1997],{"className":1995,"style":1996},[180],"height:0.1645em;",[108,1998,2000,2003],{"style":1999},"top:-2.357em;margin-left:-0.0278em;margin-right:0.0714em;",[108,2001],{"className":2002,"style":1770},[188],[108,2004,2006],{"className":2005},[193,1774,1775,196],[108,2007,135],{"className":2008,"style":200},[158,162,196],[108,2010,205],{"className":2011},[204],[108,2013,2015],{"className":2014},[176],[108,2016,2018],{"className":2017,"style":1788},[180],[108,2019],{},[108,2021,2022,2025],{"style":1689},[108,2023],{"className":2024,"style":1668},[188],[108,2026,2027],{},[108,2028,1340],{"className":2029},[1534,1698,1699],[108,2031,205],{"className":2032},[204],[108,2034,2036],{"className":2035},[176],[108,2037,2039],{"className":2038,"style":1810},[180],[108,2040],{},[108,2042,2044],{"className":2043},[1816],[108,2045,1373],{"className":2046},[1820,1775],[108,2048,2050,2053],{"className":2049},[158],[108,2051,270],{"className":2052,"style":296},[158,162],[108,2054,2056],{"className":2055},[167],[108,2057,2059,2096],{"className":2058},[171,172],[108,2060,2062,2093],{"className":2061},[176],[108,2063,2065,2076],{"className":2064,"style":1840},[180],[108,2066,2067,2070],{"style":312},[108,2068],{"className":2069,"style":189},[188],[108,2071,2073],{"className":2072},[193,194,195,196],[108,2074,376],{"className":2075},[158,162,196],[108,2077,2078,2081],{"style":1854},[108,2079],{"className":2080,"style":189},[188],[108,2082,2084],{"className":2083},[193,194,195,196],[108,2085,2087],{"className":2086},[158,196],[108,2088,2090],{"className":2089},[158,337,196],[108,2091,767],{"className":2092},[158,196],[108,2094,205],{"className":2095},[204],[108,2097,2099],{"className":2098},[176],[108,2100,2102],{"className":2101,"style":350},[180],[108,2103],{},[108,2105],{"className":2106,"style":691},[690],[108,2108,2110,2113],{"className":2109},[158],[108,2111,577],{"className":2112},[158,162],[108,2114,2116],{"className":2115},[167],[108,2117,2119,2139],{"className":2118},[171,172],[108,2120,2122,2136],{"className":2121},[176],[108,2123,2125],{"className":2124,"style":181},[180],[108,2126,2127,2130],{"style":409},[108,2128],{"className":2129,"style":189},[188],[108,2131,2133],{"className":2132},[193,194,195,196],[108,2134,376],{"className":2135},[158,162,196],[108,2137,205],{"className":2138},[204],[108,2140,2142],{"className":2141},[176],[108,2143,2145],{"className":2144,"style":212},[180],[108,2146],{},[108,2148],{"className":2149,"style":1930},[690],[108,2151,1395],{"className":2152},[1934],[108,2154],{"className":2155,"style":1930},[690],[108,2157,2159,2163,2221,2224,2264,2271,2277,2280,2283,2286,2289],{"className":2158},[149],[108,2160],{"className":2161,"style":2162},[153],"height:1.8em;vertical-align:-0.65em;",[108,2164,2166,2169],{"className":2165},[158],[108,2167,270],{"className":2168,"style":296},[158,162],[108,2170,2172],{"className":2171},[167],[108,2173,2175,2213],{"className":2174},[171,172],[108,2176,2178,2210],{"className":2177},[176],[108,2179,2182,2193],{"className":2180,"style":2181},[180],"height:0.7144em;",[108,2183,2184,2187],{"style":312},[108,2185],{"className":2186,"style":189},[188],[108,2188,2190],{"className":2189},[193,194,195,196],[108,2191,376],{"className":2192},[158,162,196],[108,2194,2195,2198],{"style":1854},[108,2196],{"className":2197,"style":189},[188],[108,2199,2201],{"className":2200},[193,194,195,196],[108,2202,2204],{"className":2203},[158,196],[108,2205,2207],{"className":2206},[158,337,196],[108,2208,485],{"className":2209},[158,196],[108,2211,205],{"className":2212},[204],[108,2214,2216],{"className":2215},[176],[108,2217,2219],{"className":2218,"style":350},[180],[108,2220],{},[108,2222],{"className":2223,"style":691},[690],[108,2225,2227,2230],{"className":2226},[158],[108,2228,373],{"className":2229},[158,162],[108,2231,2233],{"className":2232},[167],[108,2234,2236,2256],{"className":2235},[171,172],[108,2237,2239,2253],{"className":2238},[176],[108,2240,2242],{"className":2241,"style":181},[180],[108,2243,2244,2247],{"style":409},[108,2245],{"className":2246,"style":189},[188],[108,2248,2250],{"className":2249},[193,194,195,196],[108,2251,376],{"className":2252},[158,162,196],[108,2254,205],{"className":2255},[204],[108,2257,2259],{"className":2258},[176],[108,2260,2262],{"className":2261,"style":212},[180],[108,2263],{},[108,2265,2268],{"className":2266},[2267],"mclose",[108,2269,1454],{"className":2270},[1820,1775],[108,2272,2274],{"className":2273},[2267],[108,2275,1454],{"className":2276},[1820,1821],[108,2278],{"className":2279,"style":1645},[690],[108,2281],{"className":2282,"style":1930},[690],[108,2284,1395],{"className":2285},[1934],[108,2287],{"className":2288,"style":1645},[690],[108,2290],{"className":2291,"style":1930},[690],[108,2293,2295,2299,2355,2361,2418,2421,2461,2464,2467],{"className":2294},[149],[108,2296],{"className":2297,"style":2298},[153],"height:2.3795em;vertical-align:-1.3295em;",[108,2300,2302],{"className":2301},[1534,1535],[108,2303,2305,2346],{"className":2304},[171,172],[108,2306,2308,2343],{"className":2307},[176],[108,2309,2311,2333],{"className":2310,"style":1661},[180],[108,2312,2314,2317],{"style":2313},"top:-1.8479em;margin-left:0em;",[108,2315],{"className":2316,"style":1668},[188],[108,2318,2320],{"className":2319},[193,194,195,196],[108,2321,2323,2326,2329],{"className":2322},[158,196],[108,2324,861],{"className":2325,"style":904},[158,162,196],[108,2327,1348],{"className":2328},[1681,196],[108,2330,1475],{"className":2331,"style":2332},[158,1685,196],"margin-right:0.0144em;",[108,2334,2335,2338],{"style":1689},[108,2336],{"className":2337,"style":1668},[188],[108,2339,2340],{},[108,2341,1340],{"className":2342},[1534,1698,1699],[108,2344,205],{"className":2345},[204],[108,2347,2349],{"className":2348},[176],[108,2350,2353],{"className":2351,"style":2352},[180],"height:1.3295em;",[108,2354],{},[108,2356,2358],{"className":2357},[1816],[108,2359,1373],{"className":2360},[1820,1775],[108,2362,2364,2367],{"className":2363},[158],[108,2365,270],{"className":2366,"style":296},[158,162],[108,2368,2370],{"className":2369},[167],[108,2371,2373,2410],{"className":2372},[171,172],[108,2374,2376,2407],{"className":2375},[176],[108,2377,2379,2390],{"className":2378,"style":1840},[180],[108,2380,2381,2384],{"style":312},[108,2382],{"className":2383,"style":189},[188],[108,2385,2387],{"className":2386},[193,194,195,196],[108,2388,861],{"className":2389,"style":904},[158,162,196],[108,2391,2392,2395],{"style":1854},[108,2393],{"className":2394,"style":189},[188],[108,2396,2398],{"className":2397},[193,194,195,196],[108,2399,2401],{"className":2400},[158,196],[108,2402,2404],{"className":2403},[158,337,196],[108,2405,973],{"className":2406},[158,196],[108,2408,205],{"className":2409},[204],[108,2411,2413],{"className":2412},[176],[108,2414,2416],{"className":2415,"style":350},[180],[108,2417],{},[108,2419],{"className":2420,"style":691},[690],[108,2422,2424,2427],{"className":2423},[158],[108,2425,858],{"className":2426},[158,162],[108,2428,2430],{"className":2429},[167],[108,2431,2433,2453],{"className":2432},[171,172],[108,2434,2436,2450],{"className":2435},[176],[108,2437,2439],{"className":2438,"style":892},[180],[108,2440,2441,2444],{"style":409},[108,2442],{"className":2443,"style":189},[188],[108,2445,2447],{"className":2446},[193,194,195,196],[108,2448,861],{"className":2449,"style":904},[158,162,196],[108,2451,205],{"className":2452},[204],[108,2454,2456],{"className":2455},[176],[108,2457,2459],{"className":2458,"style":212},[180],[108,2460],{},[108,2462],{"className":2463,"style":1930},[690],[108,2465,1173],{"className":2466},[1934],[108,2468],{"className":2469,"style":1930},[690],[108,2471,2473,2477,2534,2537,2577,2583],{"className":2472},[149],[108,2474],{"className":2475,"style":2476},[153],"height:1.317em;vertical-align:-0.35em;",[108,2478,2480,2483],{"className":2479},[158],[108,2481,270],{"className":2482,"style":296},[158,162],[108,2484,2486],{"className":2485},[167],[108,2487,2489,2526],{"className":2488},[171,172],[108,2490,2492,2523],{"className":2491},[176],[108,2493,2495,2506],{"className":2494,"style":1217},[180],[108,2496,2497,2500],{"style":1220},[108,2498],{"className":2499,"style":189},[188],[108,2501,2503],{"className":2502},[193,194,195,196],[108,2504,861],{"className":2505,"style":904},[158,162,196],[108,2507,2508,2511],{"style":1232},[108,2509],{"className":2510,"style":189},[188],[108,2512,2514],{"className":2513},[193,194,195,196],[108,2515,2517],{"className":2516},[158,196],[108,2518,2520],{"className":2519},[158,337,196],[108,2521,1182],{"className":2522},[158,196],[108,2524,205],{"className":2525},[204],[108,2527,2529],{"className":2528},[176],[108,2530,2532],{"className":2531,"style":1257},[180],[108,2533],{},[108,2535],{"className":2536,"style":691},[690],[108,2538,2540,2543],{"className":2539},[158],[108,2541,1066],{"className":2542,"style":1088},[158,162],[108,2544,2546],{"className":2545},[167],[108,2547,2549,2569],{"className":2548},[171,172],[108,2550,2552,2566],{"className":2551},[176],[108,2553,2555],{"className":2554,"style":892},[180],[108,2556,2557,2560],{"style":1103},[108,2558],{"className":2559,"style":189},[188],[108,2561,2563],{"className":2562},[193,194,195,196],[108,2564,861],{"className":2565,"style":904},[158,162,196],[108,2567,205],{"className":2568},[204],[108,2570,2572],{"className":2571},[176],[108,2573,2575],{"className":2574,"style":212},[180],[108,2576],{},[108,2578,2580],{"className":2579},[2267],[108,2581,1454],{"className":2582},[1820,1775],[108,2584,1517],{"className":2585},[158],[10,2587,2588,2589,2618,2619,2647,2648,2736,2737,2765,2766,2854,2855,2943,2944,3032,3033,3122],{},"This means that for every item ",[108,2590,2592,2605],{"className":2591},[111],[108,2593,2595],{"className":2594},[115],[117,2596,2597],{"xmlns":119},[121,2598,2599,2603],{},[124,2600,2601],{},[130,2602,1345],{},[137,2604,1345],{"encoding":139},[108,2606,2608],{"className":2607,"ariaHidden":145},[144],[108,2609,2611,2615],{"className":2610},[149],[108,2612],{"className":2613,"style":2614},[153],"height:0.6595em;",[108,2616,1345],{"className":2617},[158,162]," and every variant ",[108,2620,2622,2635],{"className":2621},[111],[108,2623,2625],{"className":2624},[115],[117,2626,2627],{"xmlns":119},[121,2628,2629,2633],{},[124,2630,2631],{},[130,2632,135],{},[137,2634,135],{"encoding":139},[108,2636,2638],{"className":2637,"ariaHidden":145},[144],[108,2639,2641,2644],{"className":2640},[149],[108,2642],{"className":2643,"style":246},[153],[108,2645,135],{"className":2646,"style":200},[158,162]," we pay ",[108,2649,2651,2670],{"className":2650},[111],[108,2652,2654],{"className":2653},[115],[117,2655,2656],{"xmlns":119},[121,2657,2658,2668],{},[124,2659,2660],{},[266,2661,2662,2664,2666],{},[130,2663,270],{},[130,2665,135],{},[274,2667,276],{},[137,2669,279],{"encoding":139},[108,2671,2673],{"className":2672,"ariaHidden":145},[144],[108,2674,2676,2679],{"className":2675},[149],[108,2677],{"className":2678,"style":289},[153],[108,2680,2682,2685],{"className":2681},[158],[108,2683,270],{"className":2684,"style":296},[158,162],[108,2686,2688],{"className":2687},[167],[108,2689,2691,2728],{"className":2690},[171,172],[108,2692,2694,2725],{"className":2693},[176],[108,2695,2697,2708],{"className":2696,"style":309},[180],[108,2698,2699,2702],{"style":312},[108,2700],{"className":2701,"style":189},[188],[108,2703,2705],{"className":2704},[193,194,195,196],[108,2706,135],{"className":2707,"style":200},[158,162,196],[108,2709,2710,2713],{"style":324},[108,2711],{"className":2712,"style":189},[188],[108,2714,2716],{"className":2715},[193,194,195,196],[108,2717,2719],{"className":2718},[158,196],[108,2720,2722],{"className":2721},[158,337,196],[108,2723,276],{"className":2724},[158,196],[108,2726,205],{"className":2727},[204],[108,2729,2731],{"className":2730},[176],[108,2732,2734],{"className":2733,"style":350},[180],[108,2735],{}," if the variant is chosen, and also for every\nused offer ",[108,2738,2740,2753],{"className":2739},[111],[108,2741,2743],{"className":2742},[115],[117,2744,2745],{"xmlns":119},[121,2746,2747,2751],{},[124,2748,2749],{},[130,2750,376],{},[137,2752,376],{"encoding":139},[108,2754,2756],{"className":2755,"ariaHidden":145},[144],[108,2757,2759,2762],{"className":2758},[149],[108,2760],{"className":2761,"style":246},[153],[108,2763,376],{"className":2764},[158,162]," of that variant we pay ",[108,2767,2769,2788],{"className":2768},[111],[108,2770,2772],{"className":2771},[115],[117,2773,2774],{"xmlns":119},[121,2775,2776,2786],{},[124,2777,2778],{},[266,2779,2780,2782,2784],{},[130,2781,270],{},[130,2783,376],{},[274,2785,767],{},[137,2787,770],{"encoding":139},[108,2789,2791],{"className":2790,"ariaHidden":145},[144],[108,2792,2794,2797],{"className":2793},[149],[108,2795],{"className":2796,"style":289},[153],[108,2798,2800,2803],{"className":2799},[158],[108,2801,270],{"className":2802,"style":296},[158,162],[108,2804,2806],{"className":2805},[167],[108,2807,2809,2846],{"className":2808},[171,172],[108,2810,2812,2843],{"className":2811},[176],[108,2813,2815,2826],{"className":2814,"style":309},[180],[108,2816,2817,2820],{"style":312},[108,2818],{"className":2819,"style":189},[188],[108,2821,2823],{"className":2822},[193,194,195,196],[108,2824,376],{"className":2825},[158,162,196],[108,2827,2828,2831],{"style":324},[108,2829],{"className":2830,"style":189},[188],[108,2832,2834],{"className":2833},[193,194,195,196],[108,2835,2837],{"className":2836},[158,196],[108,2838,2840],{"className":2839},[158,337,196],[108,2841,767],{"className":2842},[158,196],[108,2844,205],{"className":2845},[204],[108,2847,2849],{"className":2848},[176],[108,2850,2852],{"className":2851,"style":350},[180],[108,2853],{}," per pack bought as well as the\nfixed cost ",[108,2856,2858,2877],{"className":2857},[111],[108,2859,2861],{"className":2860},[115],[117,2862,2863],{"xmlns":119},[121,2864,2865,2875],{},[124,2866,2867],{},[266,2868,2869,2871,2873],{},[130,2870,270],{},[130,2872,376],{},[274,2874,485],{},[137,2876,488],{"encoding":139},[108,2878,2880],{"className":2879,"ariaHidden":145},[144],[108,2881,2883,2886],{"className":2882},[149],[108,2884],{"className":2885,"style":498},[153],[108,2887,2889,2892],{"className":2888},[158],[108,2890,270],{"className":2891,"style":296},[158,162],[108,2893,2895],{"className":2894},[167],[108,2896,2898,2935],{"className":2897},[171,172],[108,2899,2901,2932],{"className":2900},[176],[108,2902,2904,2915],{"className":2903,"style":517},[180],[108,2905,2906,2909],{"style":312},[108,2907],{"className":2908,"style":189},[188],[108,2910,2912],{"className":2911},[193,194,195,196],[108,2913,376],{"className":2914},[158,162,196],[108,2916,2917,2920],{"style":324},[108,2918],{"className":2919,"style":189},[188],[108,2921,2923],{"className":2922},[193,194,195,196],[108,2924,2926],{"className":2925},[158,196],[108,2927,2929],{"className":2928},[158,337,196],[108,2930,485],{"className":2931},[158,196],[108,2933,205],{"className":2934},[204],[108,2936,2938],{"className":2937},[176],[108,2939,2941],{"className":2940,"style":350},[180],[108,2942],{},". The second sum is over the\nsuppliers: the charge ",[108,2945,2947,2966],{"className":2946},[111],[108,2948,2950],{"className":2949},[115],[117,2951,2952],{"xmlns":119},[121,2953,2954,2964],{},[124,2955,2956],{},[266,2957,2958,2960,2962],{},[130,2959,270],{},[130,2961,861],{},[274,2963,973],{},[137,2965,976],{"encoding":139},[108,2967,2969],{"className":2968,"ariaHidden":145},[144],[108,2970,2972,2975],{"className":2971},[149],[108,2973],{"className":2974,"style":986},[153],[108,2976,2978,2981],{"className":2977},[158],[108,2979,270],{"className":2980,"style":296},[158,162],[108,2982,2984],{"className":2983},[167],[108,2985,2987,3024],{"className":2986},[171,172],[108,2988,2990,3021],{"className":2989},[176],[108,2991,2993,3004],{"className":2992,"style":309},[180],[108,2994,2995,2998],{"style":1007},[108,2996],{"className":2997,"style":189},[188],[108,2999,3001],{"className":3000},[193,194,195,196],[108,3002,861],{"className":3003,"style":904},[158,162,196],[108,3005,3006,3009],{"style":324},[108,3007],{"className":3008,"style":189},[188],[108,3010,3012],{"className":3011},[193,194,195,196],[108,3013,3015],{"className":3014},[158,196],[108,3016,3018],{"className":3017},[158,337,196],[108,3019,973],{"className":3020},[158,196],[108,3022,205],{"className":3023},[204],[108,3025,3027],{"className":3026},[176],[108,3028,3030],{"className":3029,"style":1043},[180],[108,3031],{}," if the supplier is used, less the\nshipping ",[108,3034,3036,3056],{"className":3035},[111],[108,3037,3039],{"className":3038},[115],[117,3040,3041],{"xmlns":119},[121,3042,3043,3053],{},[124,3044,3045],{},[266,3046,3047,3049,3051],{},[130,3048,270],{},[130,3050,861],{},[274,3052,1182],{},[137,3054,3055],{"encoding":139},"C^{\\text{ship}}_k",[108,3057,3059],{"className":3058,"ariaHidden":145},[144],[108,3060,3062,3065],{"className":3061},[149],[108,3063],{"className":3064,"style":1195},[153],[108,3066,3068,3071],{"className":3067},[158],[108,3069,270],{"className":3070,"style":296},[158,162],[108,3072,3074],{"className":3073},[167],[108,3075,3077,3114],{"className":3076},[171,172],[108,3078,3080,3111],{"className":3079},[176],[108,3081,3083,3094],{"className":3082,"style":1217},[180],[108,3084,3085,3088],{"style":1220},[108,3086],{"className":3087,"style":189},[188],[108,3089,3091],{"className":3090},[193,194,195,196],[108,3092,861],{"className":3093,"style":904},[158,162,196],[108,3095,3096,3099],{"style":1232},[108,3097],{"className":3098,"style":189},[188],[108,3100,3102],{"className":3101},[193,194,195,196],[108,3103,3105],{"className":3104},[158,196],[108,3106,3108],{"className":3107},[158,337,196],[108,3109,1182],{"className":3110},[158,196],[108,3112,205],{"className":3113},[204],[108,3115,3117],{"className":3116},[176],[108,3118,3120],{"className":3119,"style":1257},[180],[108,3121],{}," if shipping is free.",[70,3124,3126],{"id":3125},"constraints","Constraints",[10,3128,3129,3130,3166,3167,3202,3203,3238],{},"This problem has many constraints that restrict the decision variables meaningfully. For ",[108,3131,3133,3147],{"className":3132},[111],[108,3134,3136],{"className":3135},[115],[117,3137,3138],{"xmlns":119},[121,3139,3140,3144],{},[124,3141,3142],{},[130,3143,132],{"mathvariant":1316},[137,3145,3146],{"encoding":139},"\\boldsymbol{z}",[108,3148,3150],{"className":3149,"ariaHidden":145},[144],[108,3151,3153,3157],{"className":3152},[149],[108,3154],{"className":3155,"style":3156},[153],"height:0.4444em;",[108,3158,3160],{"className":3159},[158],[108,3161,3163],{"className":3162},[158],[108,3164,132],{"className":3165,"style":1569},[158,1568],", ",[108,3168,3170,3184],{"className":3169},[111],[108,3171,3173],{"className":3172},[115],[117,3174,3175],{"xmlns":119},[121,3176,3177,3181],{},[124,3178,3179],{},[130,3180,373],{"mathvariant":1316},[137,3182,3183],{"encoding":139},"\\boldsymbol{x}",[108,3185,3187],{"className":3186,"ariaHidden":145},[144],[108,3188,3190,3193],{"className":3189},[149],[108,3191],{"className":3192,"style":3156},[153],[108,3194,3196],{"className":3195},[158],[108,3197,3199],{"className":3198},[158],[108,3200,373],{"className":3201},[158,1568]," and ",[108,3204,3206,3220],{"className":3205},[111],[108,3207,3209],{"className":3208},[115],[117,3210,3211],{"xmlns":119},[121,3212,3213,3217],{},[124,3214,3215],{},[130,3216,577],{"mathvariant":1316},[137,3218,3219],{"encoding":139},"\\boldsymbol{n}",[108,3221,3223],{"className":3222,"ariaHidden":145},[144],[108,3224,3226,3229],{"className":3225},[149],[108,3227],{"className":3228,"style":3156},[153],[108,3230,3232],{"className":3231},[158],[108,3233,3235],{"className":3234},[158],[108,3236,577],{"className":3237},[158,1568],", we have the following five:",[78,3240,3241,3259],{},[81,3242,3243],{},[84,3244,3245,3248,3250,3253,3256],{},[87,3246,3247],{},"row",[87,3249],{},[87,3251,3252],{},"for every",[87,3254,3255],{},"known as",[87,3257,3258],{},"in words",[100,3260,3261,3690,4989,5255,5522],{},[84,3262,3263,3266,3629,3684,3687],{},[105,3264,3265],{},"(1)",[105,3267,3268],{},[108,3269,3271,3332],{"className":3270},[111],[108,3272,3274],{"className":3273},[115],[117,3275,3276],{"xmlns":119},[121,3277,3278,3329],{},[124,3279,3280,3291,3293,3299,3302,3308,3310,3321,3323],{},[266,3281,3282,3285,3287,3289],{},[130,3283,3284],{},"N",[130,3286,376],{},[130,3288,1308],{},[651,3290,1311],{},[274,3292,1384],{},[127,3294,3295,3297],{},[130,3296,373],{},[130,3298,376],{},[651,3300,3301],{},"≤",[127,3303,3304,3306],{},[130,3305,577],{},[130,3307,376],{},[651,3309,3301],{},[266,3311,3312,3314,3316,3319],{},[130,3313,3284],{},[130,3315,376],{},[130,3317,3318],{},"max",[651,3320,1311],{},[274,3322,1384],{},[127,3324,3325,3327],{},[130,3326,373],{},[130,3328,376],{},[137,3330,3331],{"encoding":139},"N^{\\min}_o\\, x_o \\le n_o \\le N^{\\max}_o\\, x_o",[108,3333,3335,3461,3517],{"className":3334,"ariaHidden":145},[144],[108,3336,3338,3342,3409,3412,3452,3455,3458],{"className":3337},[149],[108,3339],{"className":3340,"style":3341},[153],"height:1.0775em;vertical-align:-0.247em;",[108,3343,3345,3349],{"className":3344},[158],[108,3346,3284],{"className":3347,"style":3348},[158,162],"margin-right:0.109em;",[108,3350,3352],{"className":3351},[167],[108,3353,3355,3401],{"className":3354},[171,172],[108,3356,3358,3398],{"className":3357},[176],[108,3359,3362,3374],{"className":3360,"style":3361},[180],"height:0.8305em;",[108,3363,3365,3368],{"style":3364},"top:-2.453em;margin-left:-0.109em;margin-right:0.05em;",[108,3366],{"className":3367,"style":189},[188],[108,3369,3371],{"className":3370},[193,194,195,196],[108,3372,376],{"className":3373},[158,162,196],[108,3375,3376,3379],{"style":324},[108,3377],{"className":3378,"style":189},[188],[108,3380,3382],{"className":3381},[193,194,195,196],[108,3383,3385],{"className":3384},[158,196],[108,3386,3388,3392,3395],{"className":3387},[1534,196],[108,3389,3391],{"className":3390},[196],"m",[108,3393,1345],{"className":3394},[196],[108,3396,577],{"className":3397},[196],[108,3399,205],{"className":3400},[204],[108,3402,3404],{"className":3403},[176],[108,3405,3407],{"className":3406,"style":350},[180],[108,3408],{},[108,3410],{"className":3411,"style":691},[690],[108,3413,3415,3418],{"className":3414},[158],[108,3416,373],{"className":3417},[158,162],[108,3419,3421],{"className":3420},[167],[108,3422,3424,3444],{"className":3423},[171,172],[108,3425,3427,3441],{"className":3426},[176],[108,3428,3430],{"className":3429,"style":181},[180],[108,3431,3432,3435],{"style":409},[108,3433],{"className":3434,"style":189},[188],[108,3436,3438],{"className":3437},[193,194,195,196],[108,3439,376],{"className":3440},[158,162,196],[108,3442,205],{"className":3443},[204],[108,3445,3447],{"className":3446},[176],[108,3448,3450],{"className":3449,"style":212},[180],[108,3451],{},[108,3453],{"className":3454,"style":1645},[690],[108,3456,3301],{"className":3457},[1681],[108,3459],{"className":3460,"style":1645},[690],[108,3462,3464,3468,3508,3511,3514],{"className":3463},[149],[108,3465],{"className":3466,"style":3467},[153],"height:0.786em;vertical-align:-0.15em;",[108,3469,3471,3474],{"className":3470},[158],[108,3472,577],{"className":3473},[158,162],[108,3475,3477],{"className":3476},[167],[108,3478,3480,3500],{"className":3479},[171,172],[108,3481,3483,3497],{"className":3482},[176],[108,3484,3486],{"className":3485,"style":181},[180],[108,3487,3488,3491],{"style":409},[108,3489],{"className":3490,"style":189},[188],[108,3492,3494],{"className":3493},[193,194,195,196],[108,3495,376],{"className":3496},[158,162,196],[108,3498,205],{"className":3499},[204],[108,3501,3503],{"className":3502},[176],[108,3504,3506],{"className":3505,"style":212},[180],[108,3507],{},[108,3509],{"className":3510,"style":1645},[690],[108,3512,3301],{"className":3513},[1681],[108,3515],{"className":3516,"style":1645},[690],[108,3518,3520,3523,3586,3589],{"className":3519},[149],[108,3521],{"className":3522,"style":498},[153],[108,3524,3526,3529],{"className":3525},[158],[108,3527,3284],{"className":3528,"style":3348},[158,162],[108,3530,3532],{"className":3531},[167],[108,3533,3535,3578],{"className":3534},[171,172],[108,3536,3538,3575],{"className":3537},[176],[108,3539,3541,3552],{"className":3540,"style":517},[180],[108,3542,3543,3546],{"style":3364},[108,3544],{"className":3545,"style":189},[188],[108,3547,3549],{"className":3548},[193,194,195,196],[108,3550,376],{"className":3551},[158,162,196],[108,3553,3554,3557],{"style":324},[108,3555],{"className":3556,"style":189},[188],[108,3558,3560],{"className":3559},[193,194,195,196],[108,3561,3563],{"className":3562},[158,196],[108,3564,3566,3569,3572],{"className":3565},[1534,196],[108,3567,3391],{"className":3568},[196],[108,3570,23],{"className":3571},[196],[108,3573,373],{"className":3574},[196],[108,3576,205],{"className":3577},[204],[108,3579,3581],{"className":3580},[176],[108,3582,3584],{"className":3583,"style":350},[180],[108,3585],{},[108,3587],{"className":3588,"style":691},[690],[108,3590,3592,3595],{"className":3591},[158],[108,3593,373],{"className":3594},[158,162],[108,3596,3598],{"className":3597},[167],[108,3599,3601,3621],{"className":3600},[171,172],[108,3602,3604,3618],{"className":3603},[176],[108,3605,3607],{"className":3606,"style":181},[180],[108,3608,3609,3612],{"style":409},[108,3610],{"className":3611,"style":189},[188],[108,3613,3615],{"className":3614},[193,194,195,196],[108,3616,376],{"className":3617},[158,162,196],[108,3619,205],{"className":3620},[204],[108,3622,3624],{"className":3623},[176],[108,3625,3627],{"className":3626,"style":212},[180],[108,3628],{},[105,3630,434,3631],{},[108,3632,3634,3652],{"className":3633},[111],[108,3635,3637],{"className":3636},[115],[117,3638,3639],{"xmlns":119},[121,3640,3641,3649],{},[124,3642,3643,3645,3647],{},[130,3644,376],{},[651,3646,1348],{},[130,3648,1412],{"mathvariant":1351},[137,3650,3651],{"encoding":139},"o \\in \\mathcal{O}",[108,3653,3655,3674],{"className":3654,"ariaHidden":145},[144],[108,3656,3658,3662,3665,3668,3671],{"className":3657},[149],[108,3659],{"className":3660,"style":3661},[153],"height:0.5782em;vertical-align:-0.0391em;",[108,3663,376],{"className":3664},[158,162],[108,3666],{"className":3667,"style":1645},[690],[108,3669,1348],{"className":3670},[1681],[108,3672],{"className":3673,"style":1645},[690],[108,3675,3677,3681],{"className":3676},[149],[108,3678],{"className":3679,"style":3680},[153],"height:0.6833em;",[108,3682,1412],{"className":3683,"style":1983},[158,1685],[105,3685,3686],{},"semi-integer variables, big-M rows",[105,3688,3689],{},"Packs come only from used offers, between the least and the most the offer allows.",[84,3691,3692,3695,4223,4276,4348],{},[105,3693,3694],{},"(2)",[105,3696,3697],{},[108,3698,3700,3784],{"className":3699},[111],[108,3701,3703],{"className":3702},[115],[117,3704,3705],{"xmlns":119},[121,3706,3707,3781],{},[124,3708,3709,3725,3727,3736,3742,3744,3753,3759,3761,3764,3773,3775],{},[127,3710,3711,3713],{},[651,3712,1340],{},[124,3714,3715,3717,3719],{},[130,3716,376],{},[651,3718,1348],{},[127,3720,3721,3723],{},[130,3722,1412],{"mathvariant":1351},[130,3724,135],{},[651,3726,1373],{"fence":145,"stretchy":145,"minsize":1417,"maxsize":1417},[266,3728,3729,3732,3734],{},[130,3730,3731],{},"Q",[130,3733,376],{},[274,3735,767],{},[127,3737,3738,3740],{},[130,3739,577],{},[130,3741,376],{},[651,3743,1173],{},[266,3745,3746,3748,3750],{},[130,3747,3731],{},[130,3749,376],{},[274,3751,3752],{},"lost",[127,3754,3755,3757],{},[130,3756,373],{},[130,3758,376],{},[651,3760,1454],{"fence":145,"stretchy":145,"minsize":1417,"maxsize":1417},[651,3762,3763],{},"≥",[266,3765,3766,3768,3770],{},[130,3767,3731],{},[130,3769,135],{},[274,3771,3772],{},"need",[274,3774,1384],{},[127,3776,3777,3779],{},[130,3778,132],{},[130,3780,135],{},[137,3782,3783],{"encoding":139},"\\sum_{o \\in \\mathcal{O}_v} \\bigl(Q^{\\text{pack}}_o n_o - Q^{\\text{lost}}_o x_o\\bigr) \\ge Q^{\\text{need}}_v\\, z_v",[108,3785,3787,3998,4117],{"className":3786,"ariaHidden":145},[144],[108,3788,3790,3794,3885,3891,3949,3989,3992,3995],{"className":3789},[149],[108,3791],{"className":3792,"style":3793},[153],"height:1.2498em;vertical-align:-0.3998em;",[108,3795,3797,3802],{"className":3796},[1534],[108,3798,1340],{"className":3799,"style":3801},[1534,1698,3800],"small-op","position:relative;top:0em;",[108,3803,3805],{"className":3804},[167],[108,3806,3808,3876],{"className":3807},[171,172],[108,3809,3811,3873],{"className":3810},[176],[108,3812,3815],{"className":3813,"style":3814},[180],"height:0.1786em;",[108,3816,3818,3821],{"style":3817},"top:-2.4003em;margin-left:0em;margin-right:0.05em;",[108,3819],{"className":3820,"style":189},[188],[108,3822,3824],{"className":3823},[193,194,195,196],[108,3825,3827,3830,3833],{"className":3826},[158,196],[108,3828,376],{"className":3829},[158,162,196],[108,3831,1348],{"className":3832},[1681,196],[108,3834,3836,3839],{"className":3835},[158,196],[108,3837,1412],{"className":3838,"style":1983},[158,1685,196],[108,3840,3842],{"className":3841},[167],[108,3843,3845,3865],{"className":3844},[171,172],[108,3846,3848,3862],{"className":3847},[176],[108,3849,3851],{"className":3850,"style":1996},[180],[108,3852,3853,3856],{"style":1999},[108,3854],{"className":3855,"style":1770},[188],[108,3857,3859],{"className":3858},[193,1774,1775,196],[108,3860,135],{"className":3861,"style":200},[158,162,196],[108,3863,205],{"className":3864},[204],[108,3866,3868],{"className":3867},[176],[108,3869,3871],{"className":3870,"style":1788},[180],[108,3872],{},[108,3874,205],{"className":3875},[204],[108,3877,3879],{"className":3878},[176],[108,3880,3883],{"className":3881,"style":3882},[180],"height:0.3998em;",[108,3884],{},[108,3886,3888],{"className":3887},[1816],[108,3889,1373],{"className":3890},[1820,1775],[108,3892,3894,3897],{"className":3893},[158],[108,3895,3731],{"className":3896},[158,162],[108,3898,3900],{"className":3899},[167],[108,3901,3903,3941],{"className":3902},[171,172],[108,3904,3906,3938],{"className":3905},[176],[108,3907,3909,3921],{"className":3908,"style":309},[180],[108,3910,3912,3915],{"style":3911},"top:-2.453em;margin-left:0em;margin-right:0.05em;",[108,3913],{"className":3914,"style":189},[188],[108,3916,3918],{"className":3917},[193,194,195,196],[108,3919,376],{"className":3920},[158,162,196],[108,3922,3923,3926],{"style":324},[108,3924],{"className":3925,"style":189},[188],[108,3927,3929],{"className":3928},[193,194,195,196],[108,3930,3932],{"className":3931},[158,196],[108,3933,3935],{"className":3934},[158,337,196],[108,3936,767],{"className":3937},[158,196],[108,3939,205],{"className":3940},[204],[108,3942,3944],{"className":3943},[176],[108,3945,3947],{"className":3946,"style":350},[180],[108,3948],{},[108,3950,3952,3955],{"className":3951},[158],[108,3953,577],{"className":3954},[158,162],[108,3956,3958],{"className":3957},[167],[108,3959,3961,3981],{"className":3960},[171,172],[108,3962,3964,3978],{"className":3963},[176],[108,3965,3967],{"className":3966,"style":181},[180],[108,3968,3969,3972],{"style":409},[108,3970],{"className":3971,"style":189},[188],[108,3973,3975],{"className":3974},[193,194,195,196],[108,3976,376],{"className":3977},[158,162,196],[108,3979,205],{"className":3980},[204],[108,3982,3984],{"className":3983},[176],[108,3985,3987],{"className":3986,"style":212},[180],[108,3988],{},[108,3990],{"className":3991,"style":1930},[690],[108,3993,1173],{"className":3994},[1934],[108,3996],{"className":3997,"style":1930},[690],[108,3999,4001,4005,4062,4102,4108,4111,4114],{"className":4000},[149],[108,4002],{"className":4003,"style":4004},[153],"height:1.2em;vertical-align:-0.35em;",[108,4006,4008,4011],{"className":4007},[158],[108,4009,3731],{"className":4010},[158,162],[108,4012,4014],{"className":4013},[167],[108,4015,4017,4054],{"className":4016},[171,172],[108,4018,4020,4051],{"className":4019},[176],[108,4021,4023,4034],{"className":4022,"style":309},[180],[108,4024,4025,4028],{"style":3911},[108,4026],{"className":4027,"style":189},[188],[108,4029,4031],{"className":4030},[193,194,195,196],[108,4032,376],{"className":4033},[158,162,196],[108,4035,4036,4039],{"style":324},[108,4037],{"className":4038,"style":189},[188],[108,4040,4042],{"className":4041},[193,194,195,196],[108,4043,4045],{"className":4044},[158,196],[108,4046,4048],{"className":4047},[158,337,196],[108,4049,3752],{"className":4050},[158,196],[108,4052,205],{"className":4053},[204],[108,4055,4057],{"className":4056},[176],[108,4058,4060],{"className":4059,"style":350},[180],[108,4061],{},[108,4063,4065,4068],{"className":4064},[158],[108,4066,373],{"className":4067},[158,162],[108,4069,4071],{"className":4070},[167],[108,4072,4074,4094],{"className":4073},[171,172],[108,4075,4077,4091],{"className":4076},[176],[108,4078,4080],{"className":4079,"style":181},[180],[108,4081,4082,4085],{"style":409},[108,4083],{"className":4084,"style":189},[188],[108,4086,4088],{"className":4087},[193,194,195,196],[108,4089,376],{"className":4090},[158,162,196],[108,4092,205],{"className":4093},[204],[108,4095,4097],{"className":4096},[176],[108,4098,4100],{"className":4099,"style":212},[180],[108,4101],{},[108,4103,4105],{"className":4104},[2267],[108,4106,1454],{"className":4107},[1820,1775],[108,4109],{"className":4110,"style":1645},[690],[108,4112,3763],{"className":4113},[1681],[108,4115],{"className":4116,"style":1645},[690],[108,4118,4120,4123,4180,4183],{"className":4119},[149],[108,4121],{"className":4122,"style":289},[153],[108,4124,4126,4129],{"className":4125},[158],[108,4127,3731],{"className":4128},[158,162],[108,4130,4132],{"className":4131},[167],[108,4133,4135,4172],{"className":4134},[171,172],[108,4136,4138,4169],{"className":4137},[176],[108,4139,4141,4152],{"className":4140,"style":309},[180],[108,4142,4143,4146],{"style":3911},[108,4144],{"className":4145,"style":189},[188],[108,4147,4149],{"className":4148},[193,194,195,196],[108,4150,135],{"className":4151,"style":200},[158,162,196],[108,4153,4154,4157],{"style":324},[108,4155],{"className":4156,"style":189},[188],[108,4158,4160],{"className":4159},[193,194,195,196],[108,4161,4163],{"className":4162},[158,196],[108,4164,4166],{"className":4165},[158,337,196],[108,4167,3772],{"className":4168},[158,196],[108,4170,205],{"className":4171},[204],[108,4173,4175],{"className":4174},[176],[108,4176,4178],{"className":4177,"style":350},[180],[108,4179],{},[108,4181],{"className":4182,"style":691},[690],[108,4184,4186,4189],{"className":4185},[158],[108,4187,132],{"className":4188,"style":163},[158,162],[108,4190,4192],{"className":4191},[167],[108,4193,4195,4215],{"className":4194},[171,172],[108,4196,4198,4212],{"className":4197},[176],[108,4199,4201],{"className":4200,"style":181},[180],[108,4202,4203,4206],{"style":184},[108,4204],{"className":4205,"style":189},[188],[108,4207,4209],{"className":4208},[193,194,195,196],[108,4210,135],{"className":4211,"style":200},[158,162,196],[108,4213,205],{"className":4214},[204],[108,4216,4218],{"className":4217},[176],[108,4219,4221],{"className":4220,"style":212},[180],[108,4222],{},[105,4224,220,4225],{},[108,4226,4228,4246],{"className":4227},[111],[108,4229,4231],{"className":4230},[115],[117,4232,4233],{"xmlns":119},[121,4234,4235,4243],{},[124,4236,4237,4239,4241],{},[130,4238,135],{},[651,4240,1348],{},[130,4242,1367],{"mathvariant":1351},[137,4244,4245],{"encoding":139},"v \\in \\mathcal{V}",[108,4247,4249,4267],{"className":4248,"ariaHidden":145},[144],[108,4250,4252,4255,4258,4261,4264],{"className":4251},[149],[108,4253],{"className":4254,"style":3661},[153],[108,4256,135],{"className":4257,"style":200},[158,162],[108,4259],{"className":4260,"style":1645},[690],[108,4262,1348],{"className":4263},[1681],[108,4265],{"className":4266,"style":1645},[690],[108,4268,4270,4273],{"className":4269},[149],[108,4271],{"className":4272,"style":3680},[153],[108,4274,1367],{"className":4275,"style":1750},[158,1685],[105,4277,4278,4279],{},"demand-satisfaction (covering) row, switched on by ",[108,4280,4282,4299],{"className":4281},[111],[108,4283,4285],{"className":4284},[115],[117,4286,4287],{"xmlns":119},[121,4288,4289,4297],{},[124,4290,4291],{},[127,4292,4293,4295],{},[130,4294,132],{},[130,4296,135],{},[137,4298,140],{"encoding":139},[108,4300,4302],{"className":4301,"ariaHidden":145},[144],[108,4303,4305,4308],{"className":4304},[149],[108,4306],{"className":4307,"style":154},[153],[108,4309,4311,4314],{"className":4310},[158],[108,4312,132],{"className":4313,"style":163},[158,162],[108,4315,4317],{"className":4316},[167],[108,4318,4320,4340],{"className":4319},[171,172],[108,4321,4323,4337],{"className":4322},[176],[108,4324,4326],{"className":4325,"style":181},[180],[108,4327,4328,4331],{"style":184},[108,4329],{"className":4330,"style":189},[188],[108,4332,4334],{"className":4333},[193,194,195,196],[108,4335,135],{"className":4336,"style":200},[158,162,196],[108,4338,205],{"className":4339},[204],[108,4341,4343],{"className":4342},[176],[108,4344,4346],{"className":4345,"style":212},[180],[108,4347],{},[105,4349,4350,4351,4440,4441,4530,4531,4645,4646,4757,4758,4920,4921,4988],{},"The chosen variant must be covered. Each offer yields ",[108,4352,4354,4374],{"className":4353},[111],[108,4355,4357],{"className":4356},[115],[117,4358,4359],{"xmlns":119},[121,4360,4361,4371],{},[124,4362,4363],{},[266,4364,4365,4367,4369],{},[130,4366,3731],{},[130,4368,376],{},[274,4370,767],{},[137,4372,4373],{"encoding":139},"Q^{\\text{pack}}_o",[108,4375,4377],{"className":4376,"ariaHidden":145},[144],[108,4378,4380,4383],{"className":4379},[149],[108,4381],{"className":4382,"style":289},[153],[108,4384,4386,4389],{"className":4385},[158],[108,4387,3731],{"className":4388},[158,162],[108,4390,4392],{"className":4391},[167],[108,4393,4395,4432],{"className":4394},[171,172],[108,4396,4398,4429],{"className":4397},[176],[108,4399,4401,4412],{"className":4400,"style":309},[180],[108,4402,4403,4406],{"style":3911},[108,4404],{"className":4405,"style":189},[188],[108,4407,4409],{"className":4408},[193,194,195,196],[108,4410,376],{"className":4411},[158,162,196],[108,4413,4414,4417],{"style":324},[108,4415],{"className":4416,"style":189},[188],[108,4418,4420],{"className":4419},[193,194,195,196],[108,4421,4423],{"className":4422},[158,196],[108,4424,4426],{"className":4425},[158,337,196],[108,4427,767],{"className":4428},[158,196],[108,4430,205],{"className":4431},[204],[108,4433,4435],{"className":4434},[176],[108,4436,4438],{"className":4437,"style":350},[180],[108,4439],{}," units and loses ",[108,4442,4444,4464],{"className":4443},[111],[108,4445,4447],{"className":4446},[115],[117,4448,4449],{"xmlns":119},[121,4450,4451,4461],{},[124,4452,4453],{},[266,4454,4455,4457,4459],{},[130,4456,3731],{},[130,4458,376],{},[274,4460,3752],{},[137,4462,4463],{"encoding":139},"Q^{\\text{lost}}_o",[108,4465,4467],{"className":4466,"ariaHidden":145},[144],[108,4468,4470,4473],{"className":4469},[149],[108,4471],{"className":4472,"style":289},[153],[108,4474,4476,4479],{"className":4475},[158],[108,4477,3731],{"className":4478},[158,162],[108,4480,4482],{"className":4481},[167],[108,4483,4485,4522],{"className":4484},[171,172],[108,4486,4488,4519],{"className":4487},[176],[108,4489,4491,4502],{"className":4490,"style":309},[180],[108,4492,4493,4496],{"style":3911},[108,4494],{"className":4495,"style":189},[188],[108,4497,4499],{"className":4498},[193,194,195,196],[108,4500,376],{"className":4501},[158,162,196],[108,4503,4504,4507],{"style":324},[108,4505],{"className":4506,"style":189},[188],[108,4508,4510],{"className":4509},[193,194,195,196],[108,4511,4513],{"className":4512},[158,196],[108,4514,4516],{"className":4515},[158,337,196],[108,4517,3752],{"className":4518},[158,196],[108,4520,205],{"className":4521},[204],[108,4523,4525],{"className":4524},[176],[108,4526,4528],{"className":4527,"style":350},[180],[108,4529],{},". For example, if ",[108,4532,4534,4560],{"className":4533},[111],[108,4535,4537],{"className":4536},[115],[117,4538,4539],{"xmlns":119},[121,4540,4541,4557],{},[124,4542,4543,4551,4554],{},[266,4544,4545,4547,4549],{},[130,4546,3731],{},[130,4548,135],{},[274,4550,3772],{},[651,4552,4553],{},"=",[647,4555,4556],{},"4",[137,4558,4559],{"encoding":139},"Q^{\\text{need}}_v = 4",[108,4561,4563,4635],{"className":4562,"ariaHidden":145},[144],[108,4564,4566,4569,4626,4629,4632],{"className":4565},[149],[108,4567],{"className":4568,"style":289},[153],[108,4570,4572,4575],{"className":4571},[158],[108,4573,3731],{"className":4574},[158,162],[108,4576,4578],{"className":4577},[167],[108,4579,4581,4618],{"className":4580},[171,172],[108,4582,4584,4615],{"className":4583},[176],[108,4585,4587,4598],{"className":4586,"style":309},[180],[108,4588,4589,4592],{"style":3911},[108,4590],{"className":4591,"style":189},[188],[108,4593,4595],{"className":4594},[193,194,195,196],[108,4596,135],{"className":4597,"style":200},[158,162,196],[108,4599,4600,4603],{"style":324},[108,4601],{"className":4602,"style":189},[188],[108,4604,4606],{"className":4605},[193,194,195,196],[108,4607,4609],{"className":4608},[158,196],[108,4610,4612],{"className":4611},[158,337,196],[108,4613,3772],{"className":4614},[158,196],[108,4616,205],{"className":4617},[204],[108,4619,4621],{"className":4620},[176],[108,4622,4624],{"className":4623,"style":350},[180],[108,4625],{},[108,4627],{"className":4628,"style":1645},[690],[108,4630,4553],{"className":4631},[1681],[108,4633],{"className":4634,"style":1645},[690],[108,4636,4638,4642],{"className":4637},[149],[108,4639],{"className":4640,"style":4641},[153],"height:0.6444em;",[108,4643,4556],{"className":4644},[158],"  and  ",[108,4647,4649,4673],{"className":4648},[111],[108,4650,4652],{"className":4651},[115],[117,4653,4654],{"xmlns":119},[121,4655,4656,4670],{},[124,4657,4658,4666,4668],{},[266,4659,4660,4662,4664],{},[130,4661,3731],{},[130,4663,376],{},[274,4665,3752],{},[651,4667,4553],{},[647,4669,661],{},[137,4671,4672],{"encoding":139},"Q^{\\text{lost}}_o = 2",[108,4674,4676,4748],{"className":4675,"ariaHidden":145},[144],[108,4677,4679,4682,4739,4742,4745],{"className":4678},[149],[108,4680],{"className":4681,"style":289},[153],[108,4683,4685,4688],{"className":4684},[158],[108,4686,3731],{"className":4687},[158,162],[108,4689,4691],{"className":4690},[167],[108,4692,4694,4731],{"className":4693},[171,172],[108,4695,4697,4728],{"className":4696},[176],[108,4698,4700,4711],{"className":4699,"style":309},[180],[108,4701,4702,4705],{"style":3911},[108,4703],{"className":4704,"style":189},[188],[108,4706,4708],{"className":4707},[193,194,195,196],[108,4709,376],{"className":4710},[158,162,196],[108,4712,4713,4716],{"style":324},[108,4714],{"className":4715,"style":189},[188],[108,4717,4719],{"className":4718},[193,194,195,196],[108,4720,4722],{"className":4721},[158,196],[108,4723,4725],{"className":4724},[158,337,196],[108,4726,3752],{"className":4727},[158,196],[108,4729,205],{"className":4730},[204],[108,4732,4734],{"className":4733},[176],[108,4735,4737],{"className":4736,"style":350},[180],[108,4738],{},[108,4740],{"className":4741,"style":1645},[690],[108,4743,4553],{"className":4744},[1681],[108,4746],{"className":4747,"style":1645},[690],[108,4749,4751,4754],{"className":4750},[149],[108,4752],{"className":4753,"style":4641},[153],[108,4755,661],{"className":4756},[158],", the row reads ",[108,4759,4761,4793],{"className":4760},[111],[108,4762,4764],{"className":4763},[115],[117,4765,4766],{"xmlns":119},[121,4767,4768,4790],{},[124,4769,4770,4776,4778,4780,4786,4788],{},[127,4771,4772,4774],{},[130,4773,577],{},[130,4775,376],{},[651,4777,1173],{},[647,4779,661],{},[127,4781,4782,4784],{},[130,4783,373],{},[130,4785,376],{},[651,4787,3763],{},[647,4789,4556],{},[137,4791,4792],{"encoding":139},"n_o - 2x_o \\ge 4",[108,4794,4796,4852,4911],{"className":4795,"ariaHidden":145},[144],[108,4797,4799,4803,4843,4846,4849],{"className":4798},[149],[108,4800],{"className":4801,"style":4802},[153],"height:0.7333em;vertical-align:-0.15em;",[108,4804,4806,4809],{"className":4805},[158],[108,4807,577],{"className":4808},[158,162],[108,4810,4812],{"className":4811},[167],[108,4813,4815,4835],{"className":4814},[171,172],[108,4816,4818,4832],{"className":4817},[176],[108,4819,4821],{"className":4820,"style":181},[180],[108,4822,4823,4826],{"style":409},[108,4824],{"className":4825,"style":189},[188],[108,4827,4829],{"className":4828},[193,194,195,196],[108,4830,376],{"className":4831},[158,162,196],[108,4833,205],{"className":4834},[204],[108,4836,4838],{"className":4837},[176],[108,4839,4841],{"className":4840,"style":212},[180],[108,4842],{},[108,4844],{"className":4845,"style":1930},[690],[108,4847,1173],{"className":4848},[1934],[108,4850],{"className":4851,"style":1930},[690],[108,4853,4855,4859,4862,4902,4905,4908],{"className":4854},[149],[108,4856],{"className":4857,"style":4858},[153],"height:0.7944em;vertical-align:-0.15em;",[108,4860,661],{"className":4861},[158],[108,4863,4865,4868],{"className":4864},[158],[108,4866,373],{"className":4867},[158,162],[108,4869,4871],{"className":4870},[167],[108,4872,4874,4894],{"className":4873},[171,172],[108,4875,4877,4891],{"className":4876},[176],[108,4878,4880],{"className":4879,"style":181},[180],[108,4881,4882,4885],{"style":409},[108,4883],{"className":4884,"style":189},[188],[108,4886,4888],{"className":4887},[193,194,195,196],[108,4889,376],{"className":4890},[158,162,196],[108,4892,205],{"className":4893},[204],[108,4895,4897],{"className":4896},[176],[108,4898,4900],{"className":4899,"style":212},[180],[108,4901],{},[108,4903],{"className":4904,"style":1645},[690],[108,4906,3763],{"className":4907},[1681],[108,4909],{"className":4910,"style":1645},[690],[108,4912,4914,4917],{"className":4913},[149],[108,4915],{"className":4916,"style":4641},[153],[108,4918,4556],{"className":4919},[158],", so 6 packs are needed. A second offer used would lose its ",[108,4922,4924,4943],{"className":4923},[111],[108,4925,4927],{"className":4926},[115],[117,4928,4929],{"xmlns":119},[121,4930,4931,4940],{},[124,4932,4933],{},[4934,4935,4936,4938],"msup",{},[130,4937,3731],{},[274,4939,3752],{},[137,4941,4942],{"encoding":139},"Q^{\\text{lost}}",[108,4944,4946],{"className":4945,"ariaHidden":145},[144],[108,4947,4949,4953],{"className":4948},[149],[108,4950],{"className":4951,"style":4952},[153],"height:1.0435em;vertical-align:-0.1944em;",[108,4954,4956,4959],{"className":4955},[158],[108,4957,3731],{"className":4958},[158,162],[108,4960,4962],{"className":4961},[167],[108,4963,4965],{"className":4964},[171],[108,4966,4968],{"className":4967},[176],[108,4969,4971],{"className":4970,"style":309},[180],[108,4972,4973,4976],{"style":324},[108,4974],{"className":4975,"style":189},[188],[108,4977,4979],{"className":4978},[193,194,195,196],[108,4980,4982],{"className":4981},[158,196],[108,4983,4985],{"className":4984},[158,337,196],[108,4986,3752],{"className":4987},[158,196]," as well. For a variant not chosen, the right-hand side is 0, so buying nothing is allowed.",[84,4990,4991,4994,5194,5249,5252],{},[105,4992,4993],{},"(3)",[105,4995,4996],{},[108,4997,4999,5037],{"className":4998},[111],[108,5000,5002],{"className":5001},[115],[117,5003,5004],{"xmlns":119},[121,5005,5006,5034],{},[124,5007,5008,5024,5030,5032],{},[127,5009,5010,5012],{},[651,5011,1340],{},[124,5013,5014,5016,5018],{},[130,5015,135],{},[651,5017,1348],{},[127,5019,5020,5022],{},[130,5021,1367],{"mathvariant":1351},[130,5023,1345],{},[127,5025,5026,5028],{},[130,5027,132],{},[130,5029,135],{},[651,5031,4553],{},[647,5033,656],{},[137,5035,5036],{"encoding":139},"\\sum_{v \\in \\mathcal{V}_i} z_v = 1",[108,5038,5040,5185],{"className":5039,"ariaHidden":145},[144],[108,5041,5043,5047,5133,5136,5176,5179,5182],{"className":5042},[149],[108,5044],{"className":5045,"style":5046},[153],"height:1.1498em;vertical-align:-0.3998em;",[108,5048,5050,5053],{"className":5049},[1534],[108,5051,1340],{"className":5052,"style":3801},[1534,1698,3800],[108,5054,5056],{"className":5055},[167],[108,5057,5059,5125],{"className":5058},[171,172],[108,5060,5062,5122],{"className":5061},[176],[108,5063,5065],{"className":5064,"style":3814},[180],[108,5066,5067,5070],{"style":3817},[108,5068],{"className":5069,"style":189},[188],[108,5071,5073],{"className":5072},[193,194,195,196],[108,5074,5076,5079,5082],{"className":5075},[158,196],[108,5077,135],{"className":5078,"style":200},[158,162,196],[108,5080,1348],{"className":5081},[1681,196],[108,5083,5085,5088],{"className":5084},[158,196],[108,5086,1367],{"className":5087,"style":1750},[158,1685,196],[108,5089,5091],{"className":5090},[167],[108,5092,5094,5114],{"className":5093},[171,172],[108,5095,5097,5111],{"className":5096},[176],[108,5098,5100],{"className":5099,"style":1763},[180],[108,5101,5102,5105],{"style":1766},[108,5103],{"className":5104,"style":1770},[188],[108,5106,5108],{"className":5107},[193,1774,1775,196],[108,5109,1345],{"className":5110},[158,162,196],[108,5112,205],{"className":5113},[204],[108,5115,5117],{"className":5116},[176],[108,5118,5120],{"className":5119,"style":1788},[180],[108,5121],{},[108,5123,205],{"className":5124},[204],[108,5126,5128],{"className":5127},[176],[108,5129,5131],{"className":5130,"style":3882},[180],[108,5132],{},[108,5134],{"className":5135,"style":691},[690],[108,5137,5139,5142],{"className":5138},[158],[108,5140,132],{"className":5141,"style":163},[158,162],[108,5143,5145],{"className":5144},[167],[108,5146,5148,5168],{"className":5147},[171,172],[108,5149,5151,5165],{"className":5150},[176],[108,5152,5154],{"className":5153,"style":181},[180],[108,5155,5156,5159],{"style":184},[108,5157],{"className":5158,"style":189},[188],[108,5160,5162],{"className":5161},[193,194,195,196],[108,5163,135],{"className":5164,"style":200},[158,162,196],[108,5166,205],{"className":5167},[204],[108,5169,5171],{"className":5170},[176],[108,5172,5174],{"className":5173,"style":212},[180],[108,5175],{},[108,5177],{"className":5178,"style":1645},[690],[108,5180,4553],{"className":5181},[1681],[108,5183],{"className":5184,"style":1645},[690],[108,5186,5188,5191],{"className":5187},[149],[108,5189],{"className":5190,"style":4641},[153],[108,5192,656],{"className":5193},[158],[105,5195,5196,5197],{},"item ",[108,5198,5200,5218],{"className":5199},[111],[108,5201,5203],{"className":5202},[115],[117,5204,5205],{"xmlns":119},[121,5206,5207,5215],{},[124,5208,5209,5211,5213],{},[130,5210,1345],{},[651,5212,1348],{},[130,5214,1352],{"mathvariant":1351},[137,5216,5217],{"encoding":139},"i \\in \\mathcal{I}",[108,5219,5221,5240],{"className":5220,"ariaHidden":145},[144],[108,5222,5224,5228,5231,5234,5237],{"className":5223},[149],[108,5225],{"className":5226,"style":5227},[153],"height:0.6986em;vertical-align:-0.0391em;",[108,5229,1345],{"className":5230},[158,162],[108,5232],{"className":5233,"style":1645},[690],[108,5235,1348],{"className":5236},[1681],[108,5238],{"className":5239,"style":1645},[690],[108,5241,5243,5246],{"className":5242},[149],[108,5244],{"className":5245,"style":3680},[153],[108,5247,1352],{"className":5248,"style":1686},[158,1685],[105,5250,5251],{},"exactly-one row (assignment, set partitioning)",[105,5253,5254],{},"Each item has exactly one variant chosen.",[84,5256,5257,5260,5460,5516,5519],{},[105,5258,5259],{},"(4)",[105,5261,5262],{},[108,5263,5265,5304],{"className":5264},[111],[108,5266,5268],{"className":5267},[115],[117,5269,5270],{"xmlns":119},[121,5271,5272,5301],{},[124,5273,5274,5291,5297,5299],{},[127,5275,5276,5278],{},[651,5277,1340],{},[124,5279,5280,5282,5284],{},[130,5281,376],{},[651,5283,1348],{},[127,5285,5286,5288],{},[130,5287,1412],{"mathvariant":1351},[130,5289,5290],{},"e",[127,5292,5293,5295],{},[130,5294,373],{},[130,5296,376],{},[651,5298,3301],{},[647,5300,656],{},[137,5302,5303],{"encoding":139},"\\sum_{o \\in \\mathcal{O}_e} x_o \\le 1",[108,5305,5307,5451],{"className":5306,"ariaHidden":145},[144],[108,5308,5310,5313,5399,5402,5442,5445,5448],{"className":5309},[149],[108,5311],{"className":5312,"style":5046},[153],[108,5314,5316,5319],{"className":5315},[1534],[108,5317,1340],{"className":5318,"style":3801},[1534,1698,3800],[108,5320,5322],{"className":5321},[167],[108,5323,5325,5391],{"className":5324},[171,172],[108,5326,5328,5388],{"className":5327},[176],[108,5329,5331],{"className":5330,"style":3814},[180],[108,5332,5333,5336],{"style":3817},[108,5334],{"className":5335,"style":189},[188],[108,5337,5339],{"className":5338},[193,194,195,196],[108,5340,5342,5345,5348],{"className":5341},[158,196],[108,5343,376],{"className":5344},[158,162,196],[108,5346,1348],{"className":5347},[1681,196],[108,5349,5351,5354],{"className":5350},[158,196],[108,5352,1412],{"className":5353,"style":1983},[158,1685,196],[108,5355,5357],{"className":5356},[167],[108,5358,5360,5380],{"className":5359},[171,172],[108,5361,5363,5377],{"className":5362},[176],[108,5364,5366],{"className":5365,"style":1996},[180],[108,5367,5368,5371],{"style":1999},[108,5369],{"className":5370,"style":1770},[188],[108,5372,5374],{"className":5373},[193,1774,1775,196],[108,5375,5290],{"className":5376},[158,162,196],[108,5378,205],{"className":5379},[204],[108,5381,5383],{"className":5382},[176],[108,5384,5386],{"className":5385,"style":1788},[180],[108,5387],{},[108,5389,205],{"className":5390},[204],[108,5392,5394],{"className":5393},[176],[108,5395,5397],{"className":5396,"style":3882},[180],[108,5398],{},[108,5400],{"className":5401,"style":691},[690],[108,5403,5405,5408],{"className":5404},[158],[108,5406,373],{"className":5407},[158,162],[108,5409,5411],{"className":5410},[167],[108,5412,5414,5434],{"className":5413},[171,172],[108,5415,5417,5431],{"className":5416},[176],[108,5418,5420],{"className":5419,"style":181},[180],[108,5421,5422,5425],{"style":409},[108,5423],{"className":5424,"style":189},[188],[108,5426,5428],{"className":5427},[193,194,195,196],[108,5429,376],{"className":5430},[158,162,196],[108,5432,205],{"className":5433},[204],[108,5435,5437],{"className":5436},[176],[108,5438,5440],{"className":5439,"style":212},[180],[108,5441],{},[108,5443],{"className":5444,"style":1645},[690],[108,5446,3301],{"className":5447},[1681],[108,5449],{"className":5450,"style":1645},[690],[108,5452,5454,5457],{"className":5453},[149],[108,5455],{"className":5456,"style":4641},[153],[108,5458,656],{"className":5459},[158],[105,5461,5462,5463],{},"exclusive set ",[108,5464,5466,5485],{"className":5465},[111],[108,5467,5469],{"className":5468},[115],[117,5470,5471],{"xmlns":119},[121,5472,5473,5482],{},[124,5474,5475,5477,5479],{},[130,5476,5290],{},[651,5478,1348],{},[130,5480,5481],{"mathvariant":1351},"E",[137,5483,5484],{"encoding":139},"e \\in \\mathcal{E}",[108,5486,5488,5506],{"className":5487,"ariaHidden":145},[144],[108,5489,5491,5494,5497,5500,5503],{"className":5490},[149],[108,5492],{"className":5493,"style":3661},[153],[108,5495,5290],{"className":5496},[158,162],[108,5498],{"className":5499,"style":1645},[690],[108,5501,1348],{"className":5502},[1681],[108,5504],{"className":5505,"style":1645},[690],[108,5507,5509,5512],{"className":5508},[149],[108,5510],{"className":5511,"style":3680},[153],[108,5513,5481],{"className":5514,"style":5515},[158,1685],"margin-right:0.0894em;",[105,5517,5518],{},"at-most-one row (set packing)",[105,5520,5521],{},"At most one offer of an exclusive set is used. For example, a product's prices for 1–9 packs and 10–99 packs cannot be mixed.",[84,5523,5524,5527,5859,5914,5917],{},[105,5525,5526],{},"(5)",[105,5528,5529],{},[108,5530,5532,5588],{"className":5531},[111],[108,5533,5535],{"className":5534},[115],[117,5536,5537],{"xmlns":119},[121,5538,5539,5585],{},[124,5540,5541,5558,5566,5568,5574,5576],{},[127,5542,5543,5545],{},[651,5544,1340],{},[124,5546,5547,5549,5551],{},[130,5548,376],{},[651,5550,1348],{},[127,5552,5553,5555],{},[130,5554,1412],{"mathvariant":1351},[130,5556,5557],{},"r",[266,5559,5560,5562,5564],{},[130,5561,3731],{},[130,5563,376],{},[274,5565,767],{},[274,5567,1384],{},[127,5569,5570,5572],{},[130,5571,577],{},[130,5573,376],{},[651,5575,3301],{},[266,5577,5578,5580,5582],{},[130,5579,3731],{},[130,5581,5557],{},[274,5583,5584],{},"stock",[137,5586,5587],{"encoding":139},"\\sum_{o \\in \\mathcal{O}_r} Q^{\\text{pack}}_o\\, n_o \\le Q^{\\text{stock}}_r",[108,5589,5591,5796],{"className":5590,"ariaHidden":145},[144],[108,5592,5594,5598,5684,5687,5744,5747,5787,5790,5793],{"className":5593},[149],[108,5595],{"className":5596,"style":5597},[153],"height:1.2489em;vertical-align:-0.3998em;",[108,5599,5601,5604],{"className":5600},[1534],[108,5602,1340],{"className":5603,"style":3801},[1534,1698,3800],[108,5605,5607],{"className":5606},[167],[108,5608,5610,5676],{"className":5609},[171,172],[108,5611,5613,5673],{"className":5612},[176],[108,5614,5616],{"className":5615,"style":3814},[180],[108,5617,5618,5621],{"style":3817},[108,5619],{"className":5620,"style":189},[188],[108,5622,5624],{"className":5623},[193,194,195,196],[108,5625,5627,5630,5633],{"className":5626},[158,196],[108,5628,376],{"className":5629},[158,162,196],[108,5631,1348],{"className":5632},[1681,196],[108,5634,5636,5639],{"className":5635},[158,196],[108,5637,1412],{"className":5638,"style":1983},[158,1685,196],[108,5640,5642],{"className":5641},[167],[108,5643,5645,5665],{"className":5644},[171,172],[108,5646,5648,5662],{"className":5647},[176],[108,5649,5651],{"className":5650,"style":1996},[180],[108,5652,5653,5656],{"style":1999},[108,5654],{"className":5655,"style":1770},[188],[108,5657,5659],{"className":5658},[193,1774,1775,196],[108,5660,5557],{"className":5661,"style":1983},[158,162,196],[108,5663,205],{"className":5664},[204],[108,5666,5668],{"className":5667},[176],[108,5669,5671],{"className":5670,"style":1788},[180],[108,5672],{},[108,5674,205],{"className":5675},[204],[108,5677,5679],{"className":5678},[176],[108,5680,5682],{"className":5681,"style":3882},[180],[108,5683],{},[108,5685],{"className":5686,"style":691},[690],[108,5688,5690,5693],{"className":5689},[158],[108,5691,3731],{"className":5692},[158,162],[108,5694,5696],{"className":5695},[167],[108,5697,5699,5736],{"className":5698},[171,172],[108,5700,5702,5733],{"className":5701},[176],[108,5703,5705,5716],{"className":5704,"style":309},[180],[108,5706,5707,5710],{"style":3911},[108,5708],{"className":5709,"style":189},[188],[108,5711,5713],{"className":5712},[193,194,195,196],[108,5714,376],{"className":5715},[158,162,196],[108,5717,5718,5721],{"style":324},[108,5719],{"className":5720,"style":189},[188],[108,5722,5724],{"className":5723},[193,194,195,196],[108,5725,5727],{"className":5726},[158,196],[108,5728,5730],{"className":5729},[158,337,196],[108,5731,767],{"className":5732},[158,196],[108,5734,205],{"className":5735},[204],[108,5737,5739],{"className":5738},[176],[108,5740,5742],{"className":5741,"style":350},[180],[108,5743],{},[108,5745],{"className":5746,"style":691},[690],[108,5748,5750,5753],{"className":5749},[158],[108,5751,577],{"className":5752},[158,162],[108,5754,5756],{"className":5755},[167],[108,5757,5759,5779],{"className":5758},[171,172],[108,5760,5762,5776],{"className":5761},[176],[108,5763,5765],{"className":5764,"style":181},[180],[108,5766,5767,5770],{"style":409},[108,5768],{"className":5769,"style":189},[188],[108,5771,5773],{"className":5772},[193,194,195,196],[108,5774,376],{"className":5775},[158,162,196],[108,5777,205],{"className":5778},[204],[108,5780,5782],{"className":5781},[176],[108,5783,5785],{"className":5784,"style":212},[180],[108,5786],{},[108,5788],{"className":5789,"style":1645},[690],[108,5791,3301],{"className":5792},[1681],[108,5794],{"className":5795,"style":1645},[690],[108,5797,5799,5802],{"className":5798},[149],[108,5800],{"className":5801,"style":289},[153],[108,5803,5805,5808],{"className":5804},[158],[108,5806,3731],{"className":5807},[158,162],[108,5809,5811],{"className":5810},[167],[108,5812,5814,5851],{"className":5813},[171,172],[108,5815,5817,5848],{"className":5816},[176],[108,5818,5820,5831],{"className":5819,"style":309},[180],[108,5821,5822,5825],{"style":3911},[108,5823],{"className":5824,"style":189},[188],[108,5826,5828],{"className":5827},[193,194,195,196],[108,5829,5557],{"className":5830,"style":1983},[158,162,196],[108,5832,5833,5836],{"style":324},[108,5834],{"className":5835,"style":189},[188],[108,5837,5839],{"className":5838},[193,194,195,196],[108,5840,5842],{"className":5841},[158,196],[108,5843,5845],{"className":5844},[158,337,196],[108,5846,5584],{"className":5847},[158,196],[108,5849,205],{"className":5850},[204],[108,5852,5854],{"className":5853},[176],[108,5855,5857],{"className":5856,"style":350},[180],[108,5858],{},[105,5860,5861,5862],{},"stock set ",[108,5863,5865,5884],{"className":5864},[111],[108,5866,5868],{"className":5867},[115],[117,5869,5870],{"xmlns":119},[121,5871,5872,5881],{},[124,5873,5874,5876,5878],{},[130,5875,5557],{},[651,5877,1348],{},[130,5879,5880],{"mathvariant":1351},"R",[137,5882,5883],{"encoding":139},"r \\in \\mathcal{R}",[108,5885,5887,5905],{"className":5886,"ariaHidden":145},[144],[108,5888,5890,5893,5896,5899,5902],{"className":5889},[149],[108,5891],{"className":5892,"style":3661},[153],[108,5894,5557],{"className":5895,"style":1983},[158,162],[108,5897],{"className":5898,"style":1645},[690],[108,5900,1348],{"className":5901},[1681],[108,5903],{"className":5904,"style":1645},[690],[108,5906,5908,5911],{"className":5907},[149],[108,5909],{"className":5910,"style":3680},[153],[108,5912,5880],{"className":5913},[158,1685],[105,5915,5916],{},"capacity row (integer knapsack)",[105,5918,5919],{},"Do not order more units than the supplier has in stock.",[10,5921,5922],{},"For the supplier variables, we have two more:",[78,5924,5925,5939],{},[81,5926,5927],{},[84,5928,5929,5931,5933,5935,5937],{},[87,5930,3247],{},[87,5932],{},[87,5934,3252],{},[87,5936,3255],{},[87,5938,3258],{},[100,5940,5941,6789],{},[84,5942,5943,5946,6256,6310,6402],{},[105,5944,5945],{},"(6)",[105,5947,5948],{},[108,5949,5951,6007],{"className":5950},[111],[108,5952,5954],{"className":5953},[115],[117,5955,5956],{"xmlns":119},[121,5957,5958,6004],{},[124,5959,5960,5976,5982,5984,5988,5994,5996,5998],{},[127,5961,5962,5964],{},[651,5963,1340],{},[124,5965,5966,5968,5970],{},[130,5967,376],{},[651,5969,1348],{},[127,5971,5972,5974],{},[130,5973,1412],{"mathvariant":1351},[130,5975,861],{},[127,5977,5978,5980],{},[130,5979,373],{},[130,5981,376],{},[651,5983,3301],{},[651,5985,5987],{"stretchy":5986},"false","∣",[127,5989,5990,5992],{},[130,5991,1412],{"mathvariant":1351},[130,5993,861],{},[651,5995,5987],{"stretchy":5986},[274,5997,1384],{},[127,5999,6000,6002],{},[130,6001,858],{},[130,6003,861],{},[137,6005,6006],{"encoding":139},"\\sum_{o \\in \\mathcal{O}_k} x_o \\le \\lvert \\mathcal{O}_k \\rvert\\, u_k",[108,6008,6010,6159],{"className":6009,"ariaHidden":145},[144],[108,6011,6013,6017,6107,6110,6150,6153,6156],{"className":6012},[149],[108,6014],{"className":6015,"style":6016},[153],"height:1.1556em;vertical-align:-0.4056em;",[108,6018,6020,6023],{"className":6019},[1534],[108,6021,1340],{"className":6022,"style":3801},[1534,1698,3800],[108,6024,6026],{"className":6025},[167],[108,6027,6029,6098],{"className":6028},[171,172],[108,6030,6032,6095],{"className":6031},[176],[108,6033,6035],{"className":6034,"style":3814},[180],[108,6036,6037,6040],{"style":3817},[108,6038],{"className":6039,"style":189},[188],[108,6041,6043],{"className":6042},[193,194,195,196],[108,6044,6046,6049,6052],{"className":6045},[158,196],[108,6047,376],{"className":6048},[158,162,196],[108,6050,1348],{"className":6051},[1681,196],[108,6053,6055,6058],{"className":6054},[158,196],[108,6056,1412],{"className":6057,"style":1983},[158,1685,196],[108,6059,6061],{"className":6060},[167],[108,6062,6064,6086],{"className":6063},[171,172],[108,6065,6067,6083],{"className":6066},[176],[108,6068,6071],{"className":6069,"style":6070},[180],"height:0.3448em;",[108,6072,6074,6077],{"style":6073},"top:-2.3488em;margin-left:-0.0278em;margin-right:0.0714em;",[108,6075],{"className":6076,"style":1770},[188],[108,6078,6080],{"className":6079},[193,1774,1775,196],[108,6081,861],{"className":6082,"style":904},[158,162,196],[108,6084,205],{"className":6085},[204],[108,6087,6089],{"className":6088},[176],[108,6090,6093],{"className":6091,"style":6092},[180],"height:0.1512em;",[108,6094],{},[108,6096,205],{"className":6097},[204],[108,6099,6101],{"className":6100},[176],[108,6102,6105],{"className":6103,"style":6104},[180],"height:0.4056em;",[108,6106],{},[108,6108],{"className":6109,"style":691},[690],[108,6111,6113,6116],{"className":6112},[158],[108,6114,373],{"className":6115},[158,162],[108,6117,6119],{"className":6118},[167],[108,6120,6122,6142],{"className":6121},[171,172],[108,6123,6125,6139],{"className":6124},[176],[108,6126,6128],{"className":6127,"style":181},[180],[108,6129,6130,6133],{"style":409},[108,6131],{"className":6132,"style":189},[188],[108,6134,6136],{"className":6135},[193,194,195,196],[108,6137,376],{"className":6138},[158,162,196],[108,6140,205],{"className":6141},[204],[108,6143,6145],{"className":6144},[176],[108,6146,6148],{"className":6147,"style":212},[180],[108,6149],{},[108,6151],{"className":6152,"style":1645},[690],[108,6154,3301],{"className":6155},[1681],[108,6157],{"className":6158,"style":1645},[690],[108,6160,6162,6166,6169,6210,6213,6216],{"className":6161},[149],[108,6163],{"className":6164,"style":6165},[153],"height:1em;vertical-align:-0.25em;",[108,6167,5987],{"className":6168},[1816],[108,6170,6172,6175],{"className":6171},[158],[108,6173,1412],{"className":6174,"style":1983},[158,1685],[108,6176,6178],{"className":6177},[167],[108,6179,6181,6202],{"className":6180},[171,172],[108,6182,6184,6199],{"className":6183},[176],[108,6185,6187],{"className":6186,"style":892},[180],[108,6188,6190,6193],{"style":6189},"top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;",[108,6191],{"className":6192,"style":189},[188],[108,6194,6196],{"className":6195},[193,194,195,196],[108,6197,861],{"className":6198,"style":904},[158,162,196],[108,6200,205],{"className":6201},[204],[108,6203,6205],{"className":6204},[176],[108,6206,6208],{"className":6207,"style":212},[180],[108,6209],{},[108,6211,5987],{"className":6212},[2267],[108,6214],{"className":6215,"style":691},[690],[108,6217,6219,6222],{"className":6218},[158],[108,6220,858],{"className":6221},[158,162],[108,6223,6225],{"className":6224},[167],[108,6226,6228,6248],{"className":6227},[171,172],[108,6229,6231,6245],{"className":6230},[176],[108,6232,6234],{"className":6233,"style":892},[180],[108,6235,6236,6239],{"style":409},[108,6237],{"className":6238,"style":189},[188],[108,6240,6242],{"className":6241},[193,194,195,196],[108,6243,861],{"className":6244,"style":904},[158,162,196],[108,6246,205],{"className":6247},[204],[108,6249,6251],{"className":6250},[176],[108,6252,6254],{"className":6253,"style":212},[180],[108,6255],{},[105,6257,920,6258],{},[108,6259,6261,6279],{"className":6260},[111],[108,6262,6264],{"className":6263},[115],[117,6265,6266],{"xmlns":119},[121,6267,6268,6276],{},[124,6269,6270,6272,6274],{},[130,6271,861],{},[651,6273,1348],{},[130,6275,1475],{"mathvariant":1351},[137,6277,6278],{"encoding":139},"k \\in \\mathcal{K}",[108,6280,6282,6301],{"className":6281,"ariaHidden":145},[144],[108,6283,6285,6289,6292,6295,6298],{"className":6284},[149],[108,6286],{"className":6287,"style":6288},[153],"height:0.7335em;vertical-align:-0.0391em;",[108,6290,861],{"className":6291,"style":904},[158,162],[108,6293],{"className":6294,"style":1645},[690],[108,6296,1348],{"className":6297},[1681],[108,6299],{"className":6300,"style":1645},[690],[108,6302,6304,6307],{"className":6303},[149],[108,6305],{"className":6306,"style":3680},[153],[108,6308,1475],{"className":6309,"style":2332},[158,1685],[105,6311,6312,6313,6401],{},"linking row for the fixed charge ",[108,6314,6316,6335],{"className":6315},[111],[108,6317,6319],{"className":6318},[115],[117,6320,6321],{"xmlns":119},[121,6322,6323,6333],{},[124,6324,6325],{},[266,6326,6327,6329,6331],{},[130,6328,270],{},[130,6330,861],{},[274,6332,973],{},[137,6334,976],{"encoding":139},[108,6336,6338],{"className":6337,"ariaHidden":145},[144],[108,6339,6341,6344],{"className":6340},[149],[108,6342],{"className":6343,"style":986},[153],[108,6345,6347,6350],{"className":6346},[158],[108,6348,270],{"className":6349,"style":296},[158,162],[108,6351,6353],{"className":6352},[167],[108,6354,6356,6393],{"className":6355},[171,172],[108,6357,6359,6390],{"className":6358},[176],[108,6360,6362,6373],{"className":6361,"style":309},[180],[108,6363,6364,6367],{"style":1007},[108,6365],{"className":6366,"style":189},[188],[108,6368,6370],{"className":6369},[193,194,195,196],[108,6371,861],{"className":6372,"style":904},[158,162,196],[108,6374,6375,6378],{"style":324},[108,6376],{"className":6377,"style":189},[188],[108,6379,6381],{"className":6380},[193,194,195,196],[108,6382,6384],{"className":6383},[158,196],[108,6385,6387],{"className":6386},[158,337,196],[108,6388,973],{"className":6389},[158,196],[108,6391,205],{"className":6392},[204],[108,6394,6396],{"className":6395},[176],[108,6397,6399],{"className":6398,"style":1043},[180],[108,6400],{},", in summed big-M form",[105,6403,6404,6405,6433,6434,6503,6504,6592,6593,6696,6697,1517],{},"If any offer of supplier ",[108,6406,6408,6421],{"className":6407},[111],[108,6409,6411],{"className":6410},[115],[117,6412,6413],{"xmlns":119},[121,6414,6415,6419],{},[124,6416,6417],{},[130,6418,861],{},[137,6420,861],{"encoding":139},[108,6422,6424],{"className":6423,"ariaHidden":145},[144],[108,6425,6427,6430],{"className":6426},[149],[108,6428],{"className":6429,"style":946},[153],[108,6431,861],{"className":6432,"style":904},[158,162]," is used, ",[108,6435,6437,6454],{"className":6436},[111],[108,6438,6440],{"className":6439},[115],[117,6441,6442],{"xmlns":119},[121,6443,6444,6452],{},[124,6445,6446],{},[127,6447,6448,6450],{},[130,6449,858],{},[130,6451,861],{},[137,6453,864],{"encoding":139},[108,6455,6457],{"className":6456,"ariaHidden":145},[144],[108,6458,6460,6463],{"className":6459},[149],[108,6461],{"className":6462,"style":154},[153],[108,6464,6466,6469],{"className":6465},[158],[108,6467,858],{"className":6468},[158,162],[108,6470,6472],{"className":6471},[167],[108,6473,6475,6495],{"className":6474},[171,172],[108,6476,6478,6492],{"className":6477},[176],[108,6479,6481],{"className":6480,"style":892},[180],[108,6482,6483,6486],{"style":409},[108,6484],{"className":6485,"style":189},[188],[108,6487,6489],{"className":6488},[193,194,195,196],[108,6490,861],{"className":6491,"style":904},[158,162,196],[108,6493,205],{"className":6494},[204],[108,6496,6498],{"className":6497},[176],[108,6499,6501],{"className":6500,"style":212},[180],[108,6502],{}," must be 1, and the charge ",[108,6505,6507,6526],{"className":6506},[111],[108,6508,6510],{"className":6509},[115],[117,6511,6512],{"xmlns":119},[121,6513,6514,6524],{},[124,6515,6516],{},[266,6517,6518,6520,6522],{},[130,6519,270],{},[130,6521,861],{},[274,6523,973],{},[137,6525,976],{"encoding":139},[108,6527,6529],{"className":6528,"ariaHidden":145},[144],[108,6530,6532,6535],{"className":6531},[149],[108,6533],{"className":6534,"style":986},[153],[108,6536,6538,6541],{"className":6537},[158],[108,6539,270],{"className":6540,"style":296},[158,162],[108,6542,6544],{"className":6543},[167],[108,6545,6547,6584],{"className":6546},[171,172],[108,6548,6550,6581],{"className":6549},[176],[108,6551,6553,6564],{"className":6552,"style":309},[180],[108,6554,6555,6558],{"style":1007},[108,6556],{"className":6557,"style":189},[188],[108,6559,6561],{"className":6560},[193,194,195,196],[108,6562,861],{"className":6563,"style":904},[158,162,196],[108,6565,6566,6569],{"style":324},[108,6567],{"className":6568,"style":189},[188],[108,6570,6572],{"className":6571},[193,194,195,196],[108,6573,6575],{"className":6574},[158,196],[108,6576,6578],{"className":6577},[158,337,196],[108,6579,973],{"className":6580},[158,196],[108,6582,205],{"className":6583},[204],[108,6585,6587],{"className":6586},[176],[108,6588,6590],{"className":6589,"style":1043},[180],[108,6591],{}," is paid. Here ",[108,6594,6596,6623],{"className":6595},[111],[108,6597,6599],{"className":6598},[115],[117,6600,6601],{"xmlns":119},[121,6602,6603,6620],{},[124,6604,6605,6608,6610,6612,6618],{},[130,6606,6607],{},"M",[651,6609,4553],{},[651,6611,5987],{"stretchy":5986},[127,6613,6614,6616],{},[130,6615,1412],{"mathvariant":1351},[130,6617,861],{},[651,6619,5987],{"stretchy":5986},[137,6621,6622],{"encoding":139},"M = \\lvert \\mathcal{O}_k \\rvert",[108,6624,6626,6644],{"className":6625,"ariaHidden":145},[144],[108,6627,6629,6632,6635,6638,6641],{"className":6628},[149],[108,6630],{"className":6631,"style":3680},[153],[108,6633,6607],{"className":6634,"style":3348},[158,162],[108,6636],{"className":6637,"style":1645},[690],[108,6639,4553],{"className":6640},[1681],[108,6642],{"className":6643,"style":1645},[690],[108,6645,6647,6650,6653,6693],{"className":6646},[149],[108,6648],{"className":6649,"style":6165},[153],[108,6651,5987],{"className":6652},[1816],[108,6654,6656,6659],{"className":6655},[158],[108,6657,1412],{"className":6658,"style":1983},[158,1685],[108,6660,6662],{"className":6661},[167],[108,6663,6665,6685],{"className":6664},[171,172],[108,6666,6668,6682],{"className":6667},[176],[108,6669,6671],{"className":6670,"style":892},[180],[108,6672,6673,6676],{"style":6189},[108,6674],{"className":6675,"style":189},[188],[108,6677,6679],{"className":6678},[193,194,195,196],[108,6680,861],{"className":6681,"style":904},[158,162,196],[108,6683,205],{"className":6684},[204],[108,6686,6688],{"className":6687},[176],[108,6689,6691],{"className":6690,"style":212},[180],[108,6692],{},[108,6694,5987],{"className":6695},[2267],", the number of its offers, the most the sum can be, so the row is harmless when ",[108,6698,6700,6722],{"className":6699},[111],[108,6701,6703],{"className":6702},[115],[117,6704,6705],{"xmlns":119},[121,6706,6707,6719],{},[124,6708,6709,6715,6717],{},[127,6710,6711,6713],{},[130,6712,858],{},[130,6714,861],{},[651,6716,4553],{},[647,6718,656],{},[137,6720,6721],{"encoding":139},"u_k = 1",[108,6723,6725,6780],{"className":6724,"ariaHidden":145},[144],[108,6726,6728,6731,6771,6774,6777],{"className":6727},[149],[108,6729],{"className":6730,"style":154},[153],[108,6732,6734,6737],{"className":6733},[158],[108,6735,858],{"className":6736},[158,162],[108,6738,6740],{"className":6739},[167],[108,6741,6743,6763],{"className":6742},[171,172],[108,6744,6746,6760],{"className":6745},[176],[108,6747,6749],{"className":6748,"style":892},[180],[108,6750,6751,6754],{"style":409},[108,6752],{"className":6753,"style":189},[188],[108,6755,6757],{"className":6756},[193,194,195,196],[108,6758,861],{"className":6759,"style":904},[158,162,196],[108,6761,205],{"className":6762},[204],[108,6764,6766],{"className":6765},[176],[108,6767,6769],{"className":6768,"style":212},[180],[108,6770],{},[108,6772],{"className":6773,"style":1645},[690],[108,6775,4553],{"className":6776},[1681],[108,6778],{"className":6779,"style":1645},[690],[108,6781,6783,6786],{"className":6782},[149],[108,6784],{"className":6785,"style":4641},[153],[108,6787,656],{"className":6788},[158],[84,6790,6791,6794,7316,7368,7554],{},[105,6792,6793],{},"(7)",[105,6795,6796],{},[108,6797,6799,6881],{"className":6798},[111],[108,6800,6802],{"className":6801},[115],[117,6803,6804],{"xmlns":119},[121,6805,6806,6878],{},[124,6807,6808,6824,6826,6835,6841,6843,6851,6857,6859,6861,6870,6872],{},[127,6809,6810,6812],{},[651,6811,1340],{},[124,6813,6814,6816,6818],{},[130,6815,376],{},[651,6817,1348],{},[127,6819,6820,6822],{},[130,6821,1412],{"mathvariant":1351},[130,6823,861],{},[651,6825,1373],{"fence":145,"stretchy":145,"minsize":1417,"maxsize":1417},[266,6827,6828,6831,6833],{},[130,6829,6830],{},"S",[130,6832,376],{},[274,6834,767],{},[127,6836,6837,6839],{},[130,6838,577],{},[130,6840,376],{},[651,6842,1395],{},[266,6844,6845,6847,6849],{},[130,6846,6830],{},[130,6848,376],{},[274,6850,485],{},[127,6852,6853,6855],{},[130,6854,373],{},[130,6856,376],{},[651,6858,1454],{"fence":145,"stretchy":145,"minsize":1417,"maxsize":1417},[651,6860,3763],{},[266,6862,6863,6865,6867],{},[130,6864,6830],{},[130,6866,861],{},[274,6868,6869],{},"free",[274,6871,1384],{},[127,6873,6874,6876],{},[130,6875,1066],{},[130,6877,861],{},[137,6879,6880],{"encoding":139},"\\sum_{o \\in \\mathcal{O}_k} \\bigl(S^{\\text{pack}}_o n_o + S^{\\text{use}}_o x_o\\bigr) \\ge S^{\\text{free}}_k\\, f_k",[108,6882,6884,7091,7209],{"className":6883,"ariaHidden":145},[144],[108,6885,6887,6891,6977,6983,7042,7082,7085,7088],{"className":6886},[149],[108,6888],{"className":6889,"style":6890},[153],"height:1.2556em;vertical-align:-0.4056em;",[108,6892,6894,6897],{"className":6893},[1534],[108,6895,1340],{"className":6896,"style":3801},[1534,1698,3800],[108,6898,6900],{"className":6899},[167],[108,6901,6903,6969],{"className":6902},[171,172],[108,6904,6906,6966],{"className":6905},[176],[108,6907,6909],{"className":6908,"style":3814},[180],[108,6910,6911,6914],{"style":3817},[108,6912],{"className":6913,"style":189},[188],[108,6915,6917],{"className":6916},[193,194,195,196],[108,6918,6920,6923,6926],{"className":6919},[158,196],[108,6921,376],{"className":6922},[158,162,196],[108,6924,1348],{"className":6925},[1681,196],[108,6927,6929,6932],{"className":6928},[158,196],[108,6930,1412],{"className":6931,"style":1983},[158,1685,196],[108,6933,6935],{"className":6934},[167],[108,6936,6938,6958],{"className":6937},[171,172],[108,6939,6941,6955],{"className":6940},[176],[108,6942,6944],{"className":6943,"style":6070},[180],[108,6945,6946,6949],{"style":6073},[108,6947],{"className":6948,"style":1770},[188],[108,6950,6952],{"className":6951},[193,1774,1775,196],[108,6953,861],{"className":6954,"style":904},[158,162,196],[108,6956,205],{"className":6957},[204],[108,6959,6961],{"className":6960},[176],[108,6962,6964],{"className":6963,"style":6092},[180],[108,6965],{},[108,6967,205],{"className":6968},[204],[108,6970,6972],{"className":6971},[176],[108,6973,6975],{"className":6974,"style":6104},[180],[108,6976],{},[108,6978,6980],{"className":6979},[1816],[108,6981,1373],{"className":6982},[1820,1775],[108,6984,6986,6990],{"className":6985},[158],[108,6987,6830],{"className":6988,"style":6989},[158,162],"margin-right:0.0576em;",[108,6991,6993],{"className":6992},[167],[108,6994,6996,7034],{"className":6995},[171,172],[108,6997,6999,7031],{"className":6998},[176],[108,7000,7002,7014],{"className":7001,"style":309},[180],[108,7003,7005,7008],{"style":7004},"top:-2.453em;margin-left:-0.0576em;margin-right:0.05em;",[108,7006],{"className":7007,"style":189},[188],[108,7009,7011],{"className":7010},[193,194,195,196],[108,7012,376],{"className":7013},[158,162,196],[108,7015,7016,7019],{"style":324},[108,7017],{"className":7018,"style":189},[188],[108,7020,7022],{"className":7021},[193,194,195,196],[108,7023,7025],{"className":7024},[158,196],[108,7026,7028],{"className":7027},[158,337,196],[108,7029,767],{"className":7030},[158,196],[108,7032,205],{"className":7033},[204],[108,7035,7037],{"className":7036},[176],[108,7038,7040],{"className":7039,"style":350},[180],[108,7041],{},[108,7043,7045,7048],{"className":7044},[158],[108,7046,577],{"className":7047},[158,162],[108,7049,7051],{"className":7050},[167],[108,7052,7054,7074],{"className":7053},[171,172],[108,7055,7057,7071],{"className":7056},[176],[108,7058,7060],{"className":7059,"style":181},[180],[108,7061,7062,7065],{"style":409},[108,7063],{"className":7064,"style":189},[188],[108,7066,7068],{"className":7067},[193,194,195,196],[108,7069,376],{"className":7070},[158,162,196],[108,7072,205],{"className":7073},[204],[108,7075,7077],{"className":7076},[176],[108,7078,7080],{"className":7079,"style":212},[180],[108,7081],{},[108,7083],{"className":7084,"style":1930},[690],[108,7086,1395],{"className":7087},[1934],[108,7089],{"className":7090,"style":1930},[690],[108,7092,7094,7097,7154,7194,7200,7203,7206],{"className":7093},[149],[108,7095],{"className":7096,"style":4004},[153],[108,7098,7100,7103],{"className":7099},[158],[108,7101,6830],{"className":7102,"style":6989},[158,162],[108,7104,7106],{"className":7105},[167],[108,7107,7109,7146],{"className":7108},[171,172],[108,7110,7112,7143],{"className":7111},[176],[108,7113,7115,7126],{"className":7114,"style":517},[180],[108,7116,7117,7120],{"style":7004},[108,7118],{"className":7119,"style":189},[188],[108,7121,7123],{"className":7122},[193,194,195,196],[108,7124,376],{"className":7125},[158,162,196],[108,7127,7128,7131],{"style":324},[108,7129],{"className":7130,"style":189},[188],[108,7132,7134],{"className":7133},[193,194,195,196],[108,7135,7137],{"className":7136},[158,196],[108,7138,7140],{"className":7139},[158,337,196],[108,7141,485],{"className":7142},[158,196],[108,7144,205],{"className":7145},[204],[108,7147,7149],{"className":7148},[176],[108,7150,7152],{"className":7151,"style":350},[180],[108,7153],{},[108,7155,7157,7160],{"className":7156},[158],[108,7158,373],{"className":7159},[158,162],[108,7161,7163],{"className":7162},[167],[108,7164,7166,7186],{"className":7165},[171,172],[108,7167,7169,7183],{"className":7168},[176],[108,7170,7172],{"className":7171,"style":181},[180],[108,7173,7174,7177],{"style":409},[108,7175],{"className":7176,"style":189},[188],[108,7178,7180],{"className":7179},[193,194,195,196],[108,7181,376],{"className":7182},[158,162,196],[108,7184,205],{"className":7185},[204],[108,7187,7189],{"className":7188},[176],[108,7190,7192],{"className":7191,"style":212},[180],[108,7193],{},[108,7195,7197],{"className":7196},[2267],[108,7198,1454],{"className":7199},[1820,1775],[108,7201],{"className":7202,"style":1645},[690],[108,7204,3763],{"className":7205},[1681],[108,7207],{"className":7208,"style":1645},[690],[108,7210,7212,7215,7273,7276],{"className":7211},[149],[108,7213],{"className":7214,"style":986},[153],[108,7216,7218,7221],{"className":7217},[158],[108,7219,6830],{"className":7220,"style":6989},[158,162],[108,7222,7224],{"className":7223},[167],[108,7225,7227,7265],{"className":7226},[171,172],[108,7228,7230,7262],{"className":7229},[176],[108,7231,7233,7245],{"className":7232,"style":309},[180],[108,7234,7236,7239],{"style":7235},"top:-2.4169em;margin-left:-0.0576em;margin-right:0.05em;",[108,7237],{"className":7238,"style":189},[188],[108,7240,7242],{"className":7241},[193,194,195,196],[108,7243,861],{"className":7244,"style":904},[158,162,196],[108,7246,7247,7250],{"style":324},[108,7248],{"className":7249,"style":189},[188],[108,7251,7253],{"className":7252},[193,194,195,196],[108,7254,7256],{"className":7255},[158,196],[108,7257,7259],{"className":7258},[158,337,196],[108,7260,6869],{"className":7261},[158,196],[108,7263,205],{"className":7264},[204],[108,7266,7268],{"className":7267},[176],[108,7269,7271],{"className":7270,"style":1043},[180],[108,7272],{},[108,7274],{"className":7275,"style":691},[690],[108,7277,7279,7282],{"className":7278},[158],[108,7280,1066],{"className":7281,"style":1088},[158,162],[108,7283,7285],{"className":7284},[167],[108,7286,7288,7308],{"className":7287},[171,172],[108,7289,7291,7305],{"className":7290},[176],[108,7292,7294],{"className":7293,"style":892},[180],[108,7295,7296,7299],{"style":1103},[108,7297],{"className":7298,"style":189},[188],[108,7300,7302],{"className":7301},[193,194,195,196],[108,7303,861],{"className":7304,"style":904},[158,162,196],[108,7306,205],{"className":7307},[204],[108,7309,7311],{"className":7310},[176],[108,7312,7314],{"className":7313,"style":212},[180],[108,7315],{},[105,7317,920,7318],{},[108,7319,7321,7338],{"className":7320},[111],[108,7322,7324],{"className":7323},[115],[117,7325,7326],{"xmlns":119},[121,7327,7328,7336],{},[124,7329,7330,7332,7334],{},[130,7331,861],{},[651,7333,1348],{},[130,7335,1475],{"mathvariant":1351},[137,7337,6278],{"encoding":139},[108,7339,7341,7359],{"className":7340,"ariaHidden":145},[144],[108,7342,7344,7347,7350,7353,7356],{"className":7343},[149],[108,7345],{"className":7346,"style":6288},[153],[108,7348,861],{"className":7349,"style":904},[158,162],[108,7351],{"className":7352,"style":1645},[690],[108,7354,1348],{"className":7355},[1681],[108,7357],{"className":7358,"style":1645},[690],[108,7360,7362,7365],{"className":7361},[149],[108,7363],{"className":7364,"style":3680},[153],[108,7366,1475],{"className":7367,"style":2332},[158,1685],[105,7369,7370,7371,7463,7464,7553],{},"threshold row, the big-M form of \"if ",[108,7372,7374,7396],{"className":7373},[111],[108,7375,7377],{"className":7376},[115],[117,7378,7379],{"xmlns":119},[121,7380,7381,7393],{},[124,7382,7383,7389,7391],{},[127,7384,7385,7387],{},[130,7386,1066],{},[130,7388,861],{},[651,7390,4553],{},[647,7392,656],{},[137,7394,7395],{"encoding":139},"f_k = 1",[108,7397,7399,7454],{"className":7398,"ariaHidden":145},[144],[108,7400,7402,7405,7445,7448,7451],{"className":7401},[149],[108,7403],{"className":7404,"style":1081},[153],[108,7406,7408,7411],{"className":7407},[158],[108,7409,1066],{"className":7410,"style":1088},[158,162],[108,7412,7414],{"className":7413},[167],[108,7415,7417,7437],{"className":7416},[171,172],[108,7418,7420,7434],{"className":7419},[176],[108,7421,7423],{"className":7422,"style":892},[180],[108,7424,7425,7428],{"style":1103},[108,7426],{"className":7427,"style":189},[188],[108,7429,7431],{"className":7430},[193,194,195,196],[108,7432,861],{"className":7433,"style":904},[158,162,196],[108,7435,205],{"className":7436},[204],[108,7438,7440],{"className":7439},[176],[108,7441,7443],{"className":7442,"style":212},[180],[108,7444],{},[108,7446],{"className":7447,"style":1645},[690],[108,7449,4553],{"className":7450},[1681],[108,7452],{"className":7453,"style":1645},[690],[108,7455,7457,7460],{"className":7456},[149],[108,7458],{"className":7459,"style":4641},[153],[108,7461,656],{"className":7462},[158],", the spend is at least ",[108,7465,7467,7487],{"className":7466},[111],[108,7468,7470],{"className":7469},[115],[117,7471,7472],{"xmlns":119},[121,7473,7474,7484],{},[124,7475,7476],{},[266,7477,7478,7480,7482],{},[130,7479,6830],{},[130,7481,861],{},[274,7483,6869],{},[137,7485,7486],{"encoding":139},"S^{\\text{free}}_k",[108,7488,7490],{"className":7489,"ariaHidden":145},[144],[108,7491,7493,7496],{"className":7492},[149],[108,7494],{"className":7495,"style":986},[153],[108,7497,7499,7502],{"className":7498},[158],[108,7500,6830],{"className":7501,"style":6989},[158,162],[108,7503,7505],{"className":7504},[167],[108,7506,7508,7545],{"className":7507},[171,172],[108,7509,7511,7542],{"className":7510},[176],[108,7512,7514,7525],{"className":7513,"style":309},[180],[108,7515,7516,7519],{"style":7235},[108,7517],{"className":7518,"style":189},[188],[108,7520,7522],{"className":7521},[193,194,195,196],[108,7523,861],{"className":7524,"style":904},[158,162,196],[108,7526,7527,7530],{"style":324},[108,7528],{"className":7529,"style":189},[188],[108,7531,7533],{"className":7532},[193,194,195,196],[108,7534,7536],{"className":7535},[158,196],[108,7537,7539],{"className":7538},[158,337,196],[108,7540,6869],{"className":7541},[158,196],[108,7543,205],{"className":7544},[204],[108,7546,7548],{"className":7547},[176],[108,7549,7551],{"className":7550,"style":1043},[180],[108,7552],{},"\"",[105,7555,7556,7557,7648,7649,7677,7678,7766,7767,7859],{},"Shipping can be free, ",[108,7558,7560,7581],{"className":7559},[111],[108,7561,7563],{"className":7562},[115],[117,7564,7565],{"xmlns":119},[121,7566,7567,7579],{},[124,7568,7569,7575,7577],{},[127,7570,7571,7573],{},[130,7572,1066],{},[130,7574,861],{},[651,7576,4553],{},[647,7578,656],{},[137,7580,7395],{"encoding":139},[108,7582,7584,7639],{"className":7583,"ariaHidden":145},[144],[108,7585,7587,7590,7630,7633,7636],{"className":7586},[149],[108,7588],{"className":7589,"style":1081},[153],[108,7591,7593,7596],{"className":7592},[158],[108,7594,1066],{"className":7595,"style":1088},[158,162],[108,7597,7599],{"className":7598},[167],[108,7600,7602,7622],{"className":7601},[171,172],[108,7603,7605,7619],{"className":7604},[176],[108,7606,7608],{"className":7607,"style":892},[180],[108,7609,7610,7613],{"style":1103},[108,7611],{"className":7612,"style":189},[188],[108,7614,7616],{"className":7615},[193,194,195,196],[108,7617,861],{"className":7618,"style":904},[158,162,196],[108,7620,205],{"className":7621},[204],[108,7623,7625],{"className":7624},[176],[108,7626,7628],{"className":7627,"style":212},[180],[108,7629],{},[108,7631],{"className":7632,"style":1645},[690],[108,7634,4553],{"className":7635},[1681],[108,7637],{"className":7638,"style":1645},[690],[108,7640,7642,7645],{"className":7641},[149],[108,7643],{"className":7644,"style":4641},[153],[108,7646,656],{"className":7647},[158],", only if the spend with supplier ",[108,7650,7652,7665],{"className":7651},[111],[108,7653,7655],{"className":7654},[115],[117,7656,7657],{"xmlns":119},[121,7658,7659,7663],{},[124,7660,7661],{},[130,7662,861],{},[137,7664,861],{"encoding":139},[108,7666,7668],{"className":7667,"ariaHidden":145},[144],[108,7669,7671,7674],{"className":7670},[149],[108,7672],{"className":7673,"style":946},[153],[108,7675,861],{"className":7676,"style":904},[158,162]," reaches ",[108,7679,7681,7700],{"className":7680},[111],[108,7682,7684],{"className":7683},[115],[117,7685,7686],{"xmlns":119},[121,7687,7688,7698],{},[124,7689,7690],{},[266,7691,7692,7694,7696],{},[130,7693,6830],{},[130,7695,861],{},[274,7697,6869],{},[137,7699,7486],{"encoding":139},[108,7701,7703],{"className":7702,"ariaHidden":145},[144],[108,7704,7706,7709],{"className":7705},[149],[108,7707],{"className":7708,"style":986},[153],[108,7710,7712,7715],{"className":7711},[158],[108,7713,6830],{"className":7714,"style":6989},[158,162],[108,7716,7718],{"className":7717},[167],[108,7719,7721,7758],{"className":7720},[171,172],[108,7722,7724,7755],{"className":7723},[176],[108,7725,7727,7738],{"className":7726,"style":309},[180],[108,7728,7729,7732],{"style":7235},[108,7730],{"className":7731,"style":189},[188],[108,7733,7735],{"className":7734},[193,194,195,196],[108,7736,861],{"className":7737,"style":904},[158,162,196],[108,7739,7740,7743],{"style":324},[108,7741],{"className":7742,"style":189},[188],[108,7744,7746],{"className":7745},[193,194,195,196],[108,7747,7749],{"className":7748},[158,196],[108,7750,7752],{"className":7751},[158,337,196],[108,7753,6869],{"className":7754},[158,196],[108,7756,205],{"className":7757},[204],[108,7759,7761],{"className":7760},[176],[108,7762,7764],{"className":7763,"style":1043},[180],[108,7765],{},". With ",[108,7768,7770,7792],{"className":7769},[111],[108,7771,7773],{"className":7772},[115],[117,7774,7775],{"xmlns":119},[121,7776,7777,7789],{},[124,7778,7779,7785,7787],{},[127,7780,7781,7783],{},[130,7782,1066],{},[130,7784,861],{},[651,7786,4553],{},[647,7788,649],{},[137,7790,7791],{"encoding":139},"f_k = 0",[108,7793,7795,7850],{"className":7794,"ariaHidden":145},[144],[108,7796,7798,7801,7841,7844,7847],{"className":7797},[149],[108,7799],{"className":7800,"style":1081},[153],[108,7802,7804,7807],{"className":7803},[158],[108,7805,1066],{"className":7806,"style":1088},[158,162],[108,7808,7810],{"className":7809},[167],[108,7811,7813,7833],{"className":7812},[171,172],[108,7814,7816,7830],{"className":7815},[176],[108,7817,7819],{"className":7818,"style":892},[180],[108,7820,7821,7824],{"style":1103},[108,7822],{"className":7823,"style":189},[188],[108,7825,7827],{"className":7826},[193,194,195,196],[108,7828,861],{"className":7829,"style":904},[158,162,196],[108,7831,205],{"className":7832},[204],[108,7834,7836],{"className":7835},[176],[108,7837,7839],{"className":7838,"style":212},[180],[108,7840],{},[108,7842],{"className":7843,"style":1645},[690],[108,7845,4553],{"className":7846},[1681],[108,7848],{"className":7849,"style":1645},[690],[108,7851,7853,7856],{"className":7852},[149],[108,7854],{"className":7855,"style":4641},[153],[108,7857,649],{"className":7858},[158]," the row holds trivially.",[65,7861,7863],{"id":7862},"cp-sat","CP-SAT",[10,7865,7866,7867,7870,7871,7873],{},"Here you can load the MILP from its zipped ",[60,7868,7869],{},".mps"," file and solve it with CP-SAT. Note that CP-SAT's performance can be quite sensitive to the number of ",[60,7872,62],{}," as well as the time limit.",[7875,7876,7881],"pre",{"className":7877,"code":7878,"language":7879,"meta":7880,"style":7880},"language-python shiki shiki-themes github-dark","from ortools.linear_solver.python import model_builder as mb\nimport gzip\n\n# define the model and load the instance data (21538 variables, 35578 constraint rows)\nmodel = mb.Model()\nmodel.import_from_mps_string(gzip.open(f\"{DATA}\u002F{INSTANCE}.mps.gz\", \"rt\").read())\n\nsolver = mb.Solver(\"CP-SAT\")\nsolver.set_time_limit_in_seconds(60)\nWORKERS = 8 # number of CP-SAT \"workers\" (roughly equal to number of CPUs)\nsolver.set_solver_specific_parameters(f\"num_workers:{WORKERS}\")\nstatus = solver.solve(model)\n\nprint(f\"status    {status.name}\")\nprint(f\"cost      {solver.objective_value:,.0f}\")\nprint(f\"time      {solver.wall_time:.1f} s on {WORKERS} workers\")\n","python","",[60,7882,7883,7907,7915,7922,7929,7940,7972,7977,7994,8005,8019,8037,8048,8053,8079,8105],{"__ignoreMap":7880},[108,7884,7887,7891,7895,7898,7901,7904],{"class":7885,"line":7886},"line",1,[108,7888,7890],{"class":7889},"snl16","from",[108,7892,7894],{"class":7893},"s95oV"," ortools.linear_solver.python ",[108,7896,7897],{"class":7889},"import",[108,7899,7900],{"class":7893}," model_builder ",[108,7902,7903],{"class":7889},"as",[108,7905,7906],{"class":7893}," mb\n",[108,7908,7910,7912],{"class":7885,"line":7909},2,[108,7911,7897],{"class":7889},[108,7913,7914],{"class":7893}," gzip\n",[108,7916,7918],{"class":7885,"line":7917},3,[108,7919,7921],{"emptyLinePlaceholder":7920},true,"\n",[108,7923,7925],{"class":7885,"line":7924},4,[108,7926,7928],{"class":7927},"sAwPA","# define the model and load the instance data (21538 variables, 35578 constraint rows)\n",[108,7930,7932,7935,7937],{"class":7885,"line":7931},5,[108,7933,7934],{"class":7893},"model ",[108,7936,4553],{"class":7889},[108,7938,7939],{"class":7893}," mb.Model()\n",[108,7941,7943,7946,7948,7951,7955,7958,7961,7964,7966,7969],{"class":7885,"line":7942},6,[108,7944,7945],{"class":7893},"model.import_from_mps_string(gzip.open(",[108,7947,1066],{"class":7889},[108,7949,7553],{"class":7950},"sU2Wk",[108,7952,7954],{"class":7953},"sDLfK","{DATA}",[108,7956,7957],{"class":7950},"\u002F",[108,7959,7960],{"class":7953},"{INSTANCE}",[108,7962,7963],{"class":7950},".mps.gz\"",[108,7965,3166],{"class":7893},[108,7967,7968],{"class":7950},"\"rt\"",[108,7970,7971],{"class":7893},").read())\n",[108,7973,7975],{"class":7885,"line":7974},7,[108,7976,7921],{"emptyLinePlaceholder":7920},[108,7978,7980,7983,7985,7988,7991],{"class":7885,"line":7979},8,[108,7981,7982],{"class":7893},"solver ",[108,7984,4553],{"class":7889},[108,7986,7987],{"class":7893}," mb.Solver(",[108,7989,7990],{"class":7950},"\"CP-SAT\"",[108,7992,7993],{"class":7893},")\n",[108,7995,7997,8000,8003],{"class":7885,"line":7996},9,[108,7998,7999],{"class":7893},"solver.set_time_limit_in_seconds(",[108,8001,8002],{"class":7953},"60",[108,8004,7993],{"class":7893},[108,8006,8008,8010,8013,8016],{"class":7885,"line":8007},10,[108,8009,62],{"class":7953},[108,8011,8012],{"class":7889}," =",[108,8014,8015],{"class":7953}," 8",[108,8017,8018],{"class":7927}," # number of CP-SAT \"workers\" (roughly equal to number of CPUs)\n",[108,8020,8022,8025,8027,8030,8033,8035],{"class":7885,"line":8021},11,[108,8023,8024],{"class":7893},"solver.set_solver_specific_parameters(",[108,8026,1066],{"class":7889},[108,8028,8029],{"class":7950},"\"num_workers:",[108,8031,8032],{"class":7953},"{WORKERS}",[108,8034,7553],{"class":7950},[108,8036,7993],{"class":7893},[108,8038,8040,8043,8045],{"class":7885,"line":8039},12,[108,8041,8042],{"class":7893},"status ",[108,8044,4553],{"class":7889},[108,8046,8047],{"class":7893}," solver.solve(model)\n",[108,8049,8051],{"class":7885,"line":8050},13,[108,8052,7921],{"emptyLinePlaceholder":7920},[108,8054,8056,8059,8061,8063,8066,8069,8072,8075,8077],{"class":7885,"line":8055},14,[108,8057,8058],{"class":7953},"print",[108,8060,1373],{"class":7893},[108,8062,1066],{"class":7889},[108,8064,8065],{"class":7950},"\"status    ",[108,8067,8068],{"class":7953},"{",[108,8070,8071],{"class":7893},"status.name",[108,8073,8074],{"class":7953},"}",[108,8076,7553],{"class":7950},[108,8078,7993],{"class":7893},[108,8080,8082,8084,8086,8088,8091,8093,8096,8099,8101,8103],{"class":7885,"line":8081},15,[108,8083,8058],{"class":7953},[108,8085,1373],{"class":7893},[108,8087,1066],{"class":7889},[108,8089,8090],{"class":7950},"\"cost      ",[108,8092,8068],{"class":7953},[108,8094,8095],{"class":7893},"solver.objective_value",[108,8097,8098],{"class":7889},":,.0f",[108,8100,8074],{"class":7953},[108,8102,7553],{"class":7950},[108,8104,7993],{"class":7893},[108,8106,8108,8110,8112,8114,8117,8119,8122,8125,8127,8130,8132,8135],{"class":7885,"line":8107},16,[108,8109,8058],{"class":7953},[108,8111,1373],{"class":7893},[108,8113,1066],{"class":7889},[108,8115,8116],{"class":7950},"\"time      ",[108,8118,8068],{"class":7953},[108,8120,8121],{"class":7893},"solver.wall_time",[108,8123,8124],{"class":7889},":.1f",[108,8126,8074],{"class":7953},[108,8128,8129],{"class":7950}," s on ",[108,8131,8032],{"class":7953},[108,8133,8134],{"class":7950}," workers\"",[108,8136,7993],{"class":7893},[8138,8139],"cell-output",{":lines":8140,"label":8141},"[\"status    FEASIBLE\",\"cost      162,129,469,300\",\"time      60.1 s on 8 workers\"]","Output",[65,8143,8145],{"id":8144},"quicopt","Quicopt",[10,8147,8148],{},"Below we rebuild the model with Pyomo (to illustrate how it's done), and then send it to Quicopt's API service for solving.",[7875,8150,8152],{"className":7877,"code":8151,"language":7879,"meta":7880,"style":7880},"import pyomo.environ as pyo\nfrom quicopt import Client\nfrom quicopt.structured import active, block, semiinteger\n\n# define a Pyomo model\nmodel = pyo.ConcreteModel()\n",[60,8153,8154,8166,8178,8190,8194,8199],{"__ignoreMap":7880},[108,8155,8156,8158,8161,8163],{"class":7885,"line":7886},[108,8157,7897],{"class":7889},[108,8159,8160],{"class":7893}," pyomo.environ ",[108,8162,7903],{"class":7889},[108,8164,8165],{"class":7893}," pyo\n",[108,8167,8168,8170,8173,8175],{"class":7885,"line":7909},[108,8169,7890],{"class":7889},[108,8171,8172],{"class":7893}," quicopt ",[108,8174,7897],{"class":7889},[108,8176,8177],{"class":7893}," Client\n",[108,8179,8180,8182,8185,8187],{"class":7885,"line":7917},[108,8181,7890],{"class":7889},[108,8183,8184],{"class":7893}," quicopt.structured ",[108,8186,7897],{"class":7889},[108,8188,8189],{"class":7893}," active, block, semiinteger\n",[108,8191,8192],{"class":7885,"line":7924},[108,8193,7921],{"emptyLinePlaceholder":7920},[108,8195,8196],{"class":7885,"line":7931},[108,8197,8198],{"class":7927},"# define a Pyomo model\n",[108,8200,8201,8203,8205],{"class":7885,"line":7942},[108,8202,7934],{"class":7893},[108,8204,4553],{"class":7889},[108,8206,8207],{"class":7893}," pyo.ConcreteModel()\n",[10,8209,8210,8211,3202,8266,8300,8301,8304,8305,8339],{},"Next we introduce the decision variables ",[108,8212,8214,8232],{"className":8213},[111],[108,8215,8217],{"className":8216},[115],[117,8218,8219],{"xmlns":119},[121,8220,8221,8229],{},[124,8222,8223,8225,8227],{},[130,8224,132],{"mathvariant":1316},[651,8226,653],{"separator":145},[130,8228,577],{"mathvariant":1316},[137,8230,8231],{"encoding":139},"\\boldsymbol{z}, \\boldsymbol{n}",[108,8233,8235],{"className":8234,"ariaHidden":145},[144],[108,8236,8238,8242,8251,8254,8257],{"className":8237},[149],[108,8239],{"className":8240,"style":8241},[153],"height:0.6389em;vertical-align:-0.1944em;",[108,8243,8245],{"className":8244},[158],[108,8246,8248],{"className":8247},[158],[108,8249,132],{"className":8250,"style":1569},[158,1568],[108,8252,653],{"className":8253},[686],[108,8255],{"className":8256,"style":691},[690],[108,8258,8260],{"className":8259},[158],[108,8261,8263],{"className":8262},[158],[108,8264,577],{"className":8265},[158,1568],[108,8267,8269,8282],{"className":8268},[111],[108,8270,8272],{"className":8271},[115],[117,8273,8274],{"xmlns":119},[121,8275,8276,8280],{},[124,8277,8278],{},[130,8279,373],{"mathvariant":1316},[137,8281,3183],{"encoding":139},[108,8283,8285],{"className":8284,"ariaHidden":145},[144],[108,8286,8288,8291],{"className":8287},[149],[108,8289],{"className":8290,"style":3156},[153],[108,8292,8294],{"className":8293},[158],[108,8295,8297],{"className":8296},[158],[108,8298,373],{"className":8299},[158,1568]," that we already encountered above. Note that ",[55,8302,8303],{},"constraint type (1)"," is already covered in the Pyomo declaration of ",[108,8306,8308,8321],{"className":8307},[111],[108,8309,8311],{"className":8310},[115],[117,8312,8313],{"xmlns":119},[121,8314,8315,8319],{},[124,8316,8317],{},[130,8318,577],{"mathvariant":1316},[137,8320,3219],{"encoding":139},[108,8322,8324],{"className":8323,"ariaHidden":145},[144],[108,8325,8327,8330],{"className":8326},[149],[108,8328],{"className":8329,"style":3156},[153],[108,8331,8333],{"className":8332},[158],[108,8334,8336],{"className":8335},[158],[108,8337,577],{"className":8338},[158,1568],":",[7875,8341,8343],{"className":7877,"code":8342,"language":7879,"meta":7880,"style":7880},"# introduce the binary variables z\nmodel.z = pyo.Var(V, within=pyo.Binary)\n\n# integer numbers of packs ordered, constraint type (1) via bounds and semiinteger\nmodel.n = pyo.Var(O, within=pyo.NonNegativeIntegers, bounds=lambda model, o: (N_min[o], N_max[o]))\nsemiinteger(model.n)\n\n# shortcut aliases for n and z\nz, n = model.z, model.n\n\n# the binary variables x become indicators of the pack counts n\nx = {o: active(n[o]) for o in O}\n\n# tell the solver how the variables are related\nfor i in I:\n  block(model, f\"item_{i}\", [n[o] for v in V_i[i] for o in O_v[v]] + [z[v] for v in V_i[i]])\n",[60,8344,8345,8350,8369,8373,8378,8404,8409,8413,8418,8428,8432,8437,8459,8463,8468,8480],{"__ignoreMap":7880},[108,8346,8347],{"class":7885,"line":7886},[108,8348,8349],{"class":7927},"# introduce the binary variables z\n",[108,8351,8352,8355,8357,8360,8364,8366],{"class":7885,"line":7909},[108,8353,8354],{"class":7893},"model.z ",[108,8356,4553],{"class":7889},[108,8358,8359],{"class":7893}," pyo.Var(V, ",[108,8361,8363],{"class":8362},"s9osk","within",[108,8365,4553],{"class":7889},[108,8367,8368],{"class":7893},"pyo.Binary)\n",[108,8370,8371],{"class":7885,"line":7917},[108,8372,7921],{"emptyLinePlaceholder":7920},[108,8374,8375],{"class":7885,"line":7924},[108,8376,8377],{"class":7927},"# integer numbers of packs ordered, constraint type (1) via bounds and semiinteger\n",[108,8379,8380,8383,8385,8388,8390,8392,8395,8398,8401],{"class":7885,"line":7931},[108,8381,8382],{"class":7893},"model.n ",[108,8384,4553],{"class":7889},[108,8386,8387],{"class":7893}," pyo.Var(O, ",[108,8389,8363],{"class":8362},[108,8391,4553],{"class":7889},[108,8393,8394],{"class":7893},"pyo.NonNegativeIntegers, ",[108,8396,8397],{"class":8362},"bounds",[108,8399,8400],{"class":7889},"=lambda",[108,8402,8403],{"class":7893}," model, o: (N_min[o], N_max[o]))\n",[108,8405,8406],{"class":7885,"line":7942},[108,8407,8408],{"class":7893},"semiinteger(model.n)\n",[108,8410,8411],{"class":7885,"line":7974},[108,8412,7921],{"emptyLinePlaceholder":7920},[108,8414,8415],{"class":7885,"line":7979},[108,8416,8417],{"class":7927},"# shortcut aliases for n and z\n",[108,8419,8420,8423,8425],{"class":7885,"line":7996},[108,8421,8422],{"class":7893},"z, n ",[108,8424,4553],{"class":7889},[108,8426,8427],{"class":7893}," model.z, model.n\n",[108,8429,8430],{"class":7885,"line":8007},[108,8431,7921],{"emptyLinePlaceholder":7920},[108,8433,8434],{"class":7885,"line":8021},[108,8435,8436],{"class":7927},"# the binary variables x become indicators of the pack counts n\n",[108,8438,8439,8442,8444,8447,8450,8453,8456],{"class":7885,"line":8039},[108,8440,8441],{"class":7893},"x ",[108,8443,4553],{"class":7889},[108,8445,8446],{"class":7893}," {o: active(n[o]) ",[108,8448,8449],{"class":7889},"for",[108,8451,8452],{"class":7893}," o ",[108,8454,8455],{"class":7889},"in",[108,8457,8458],{"class":7893}," O}\n",[108,8460,8461],{"class":7885,"line":8050},[108,8462,7921],{"emptyLinePlaceholder":7920},[108,8464,8465],{"class":7885,"line":8055},[108,8466,8467],{"class":7927},"# tell the solver how the variables are related\n",[108,8469,8470,8472,8475,8477],{"class":7885,"line":8081},[108,8471,8449],{"class":7889},[108,8473,8474],{"class":7893}," i ",[108,8476,8455],{"class":7889},[108,8478,8479],{"class":7893}," I:\n",[108,8481,8482,8485,8487,8490,8492,8494,8496,8498,8501,8503,8506,8508,8511,8513,8515,8517,8520,8522,8525,8527,8529,8531],{"class":7885,"line":8107},[108,8483,8484],{"class":7893},"  block(model, ",[108,8486,1066],{"class":7889},[108,8488,8489],{"class":7950},"\"item_",[108,8491,8068],{"class":7953},[108,8493,1345],{"class":7893},[108,8495,8074],{"class":7953},[108,8497,7553],{"class":7950},[108,8499,8500],{"class":7893},", [n[o] ",[108,8502,8449],{"class":7889},[108,8504,8505],{"class":7893}," v ",[108,8507,8455],{"class":7889},[108,8509,8510],{"class":7893}," V_i[i] ",[108,8512,8449],{"class":7889},[108,8514,8452],{"class":7893},[108,8516,8455],{"class":7889},[108,8518,8519],{"class":7893}," O_v[v]] ",[108,8521,1395],{"class":7889},[108,8523,8524],{"class":7893}," [z[v] ",[108,8526,8449],{"class":7889},[108,8528,8505],{"class":7893},[108,8530,8455],{"class":7889},[108,8532,8533],{"class":7893}," V_i[i]])\n",[10,8535,8536],{},"Next, we define the remaining constraints, followed by the objective function:",[7875,8538,8540],{"className":7877,"code":8539,"language":7879,"meta":7880,"style":7880},"# constraint type (2)\nmodel.covered = pyo.Constraint(V, rule=lambda model, v: sum(Q_pack[o] * n[o] - Q_lost[o] * x[o] for o in O_v[v]) >= Q_need[v] * z[v])\n\n# constraint type (3)\nmodel.one_variant = pyo.Constraint(I, rule=lambda model, i: sum(z[v] for v in V_i[i]) == 1)\n\n# constraint type (4)\nmodel.exclusive = pyo.Constraint(E, rule=lambda model, e: sum(x[o] for o in O_e[e]) \u003C= 1)\n\n# constraint type (5)\nmodel.stock = pyo.Constraint(R, rule=lambda model, r: sum(Q_pack[o] * n[o] for o in O_r[r]) \u003C= Q_stock[r])\n\n# the objective function, including the final two constraint types\npyo_obj_expr = (sum(C_choice[v] * z[v] for v in V)\n              + sum(C_pack[o] * n[o] + C_use[o] * x[o] for o in O)\n              + sum(pyo.Expr_if(IF=sum(x[o] for o in O_k[k]) >= 1,\n                                THEN=C_fee[k],\n                                ELSE=0) for k in K)  # constraint (6)\n              + sum(pyo.Expr_if(IF=sum(S_pack[o] * n[o] + S_use[o] * x[o] for o in O_k[k]) >= S_free[k],\n                                THEN=-C_ship[k],\n                                ELSE=0) for k in K)) # constraint (7)\n\n# give the objective to Pyomo\nmodel.cost = pyo.Objective(sense=pyo.minimize, expr=pyo_obj_expr)\n",[60,8541,8542,8547,8608,8612,8617,8656,8660,8665,8703,8707,8712,8751,8755,8760,8789,8822,8856,8867,8893,8937,8948,8971,8976,8982],{"__ignoreMap":7880},[108,8543,8544],{"class":7885,"line":7886},[108,8545,8546],{"class":7927},"# constraint type (2)\n",[108,8548,8549,8552,8554,8557,8560,8562,8565,8568,8571,8574,8577,8580,8583,8585,8588,8590,8592,8594,8597,8600,8603,8605],{"class":7885,"line":7909},[108,8550,8551],{"class":7893},"model.covered ",[108,8553,4553],{"class":7889},[108,8555,8556],{"class":7893}," pyo.Constraint(V, ",[108,8558,8559],{"class":8362},"rule",[108,8561,8400],{"class":7889},[108,8563,8564],{"class":7893}," model, v: ",[108,8566,8567],{"class":7953},"sum",[108,8569,8570],{"class":7893},"(Q_pack[o] ",[108,8572,8573],{"class":7889},"*",[108,8575,8576],{"class":7893}," n[o] ",[108,8578,8579],{"class":7889},"-",[108,8581,8582],{"class":7893}," Q_lost[o] ",[108,8584,8573],{"class":7889},[108,8586,8587],{"class":7893}," x[o] ",[108,8589,8449],{"class":7889},[108,8591,8452],{"class":7893},[108,8593,8455],{"class":7889},[108,8595,8596],{"class":7893}," O_v[v]) ",[108,8598,8599],{"class":7889},">=",[108,8601,8602],{"class":7893}," Q_need[v] ",[108,8604,8573],{"class":7889},[108,8606,8607],{"class":7893}," z[v])\n",[108,8609,8610],{"class":7885,"line":7917},[108,8611,7921],{"emptyLinePlaceholder":7920},[108,8613,8614],{"class":7885,"line":7924},[108,8615,8616],{"class":7927},"# constraint type (3)\n",[108,8618,8619,8622,8624,8627,8629,8631,8634,8636,8639,8641,8643,8645,8648,8651,8654],{"class":7885,"line":7931},[108,8620,8621],{"class":7893},"model.one_variant ",[108,8623,4553],{"class":7889},[108,8625,8626],{"class":7893}," pyo.Constraint(I, ",[108,8628,8559],{"class":8362},[108,8630,8400],{"class":7889},[108,8632,8633],{"class":7893}," model, i: ",[108,8635,8567],{"class":7953},[108,8637,8638],{"class":7893},"(z[v] ",[108,8640,8449],{"class":7889},[108,8642,8505],{"class":7893},[108,8644,8455],{"class":7889},[108,8646,8647],{"class":7893}," V_i[i]) ",[108,8649,8650],{"class":7889},"==",[108,8652,8653],{"class":7953}," 1",[108,8655,7993],{"class":7893},[108,8657,8658],{"class":7885,"line":7942},[108,8659,7921],{"emptyLinePlaceholder":7920},[108,8661,8662],{"class":7885,"line":7974},[108,8663,8664],{"class":7927},"# constraint type (4)\n",[108,8666,8667,8670,8672,8675,8677,8679,8682,8684,8687,8689,8691,8693,8696,8699,8701],{"class":7885,"line":7979},[108,8668,8669],{"class":7893},"model.exclusive ",[108,8671,4553],{"class":7889},[108,8673,8674],{"class":7893}," pyo.Constraint(E, ",[108,8676,8559],{"class":8362},[108,8678,8400],{"class":7889},[108,8680,8681],{"class":7893}," model, e: ",[108,8683,8567],{"class":7953},[108,8685,8686],{"class":7893},"(x[o] ",[108,8688,8449],{"class":7889},[108,8690,8452],{"class":7893},[108,8692,8455],{"class":7889},[108,8694,8695],{"class":7893}," O_e[e]) ",[108,8697,8698],{"class":7889},"\u003C=",[108,8700,8653],{"class":7953},[108,8702,7993],{"class":7893},[108,8704,8705],{"class":7885,"line":7996},[108,8706,7921],{"emptyLinePlaceholder":7920},[108,8708,8709],{"class":7885,"line":8007},[108,8710,8711],{"class":7927},"# constraint type (5)\n",[108,8713,8714,8717,8719,8722,8724,8726,8729,8731,8733,8735,8737,8739,8741,8743,8746,8748],{"class":7885,"line":8021},[108,8715,8716],{"class":7893},"model.stock ",[108,8718,4553],{"class":7889},[108,8720,8721],{"class":7893}," pyo.Constraint(R, ",[108,8723,8559],{"class":8362},[108,8725,8400],{"class":7889},[108,8727,8728],{"class":7893}," model, r: ",[108,8730,8567],{"class":7953},[108,8732,8570],{"class":7893},[108,8734,8573],{"class":7889},[108,8736,8576],{"class":7893},[108,8738,8449],{"class":7889},[108,8740,8452],{"class":7893},[108,8742,8455],{"class":7889},[108,8744,8745],{"class":7893}," O_r[r]) ",[108,8747,8698],{"class":7889},[108,8749,8750],{"class":7893}," Q_stock[r])\n",[108,8752,8753],{"class":7885,"line":8039},[108,8754,7921],{"emptyLinePlaceholder":7920},[108,8756,8757],{"class":7885,"line":8050},[108,8758,8759],{"class":7927},"# the objective function, including the final two constraint types\n",[108,8761,8762,8765,8767,8770,8772,8775,8777,8780,8782,8784,8786],{"class":7885,"line":8055},[108,8763,8764],{"class":7893},"pyo_obj_expr ",[108,8766,4553],{"class":7889},[108,8768,8769],{"class":7893}," (",[108,8771,8567],{"class":7953},[108,8773,8774],{"class":7893},"(C_choice[v] ",[108,8776,8573],{"class":7889},[108,8778,8779],{"class":7893}," z[v] ",[108,8781,8449],{"class":7889},[108,8783,8505],{"class":7893},[108,8785,8455],{"class":7889},[108,8787,8788],{"class":7893}," V)\n",[108,8790,8791,8794,8797,8800,8802,8804,8806,8809,8811,8813,8815,8817,8819],{"class":7885,"line":8081},[108,8792,8793],{"class":7889},"              +",[108,8795,8796],{"class":7953}," sum",[108,8798,8799],{"class":7893},"(C_pack[o] ",[108,8801,8573],{"class":7889},[108,8803,8576],{"class":7893},[108,8805,1395],{"class":7889},[108,8807,8808],{"class":7893}," C_use[o] ",[108,8810,8573],{"class":7889},[108,8812,8587],{"class":7893},[108,8814,8449],{"class":7889},[108,8816,8452],{"class":7893},[108,8818,8455],{"class":7889},[108,8820,8821],{"class":7893}," O)\n",[108,8823,8824,8826,8828,8831,8834,8836,8838,8840,8842,8844,8846,8849,8851,8853],{"class":7885,"line":8107},[108,8825,8793],{"class":7889},[108,8827,8796],{"class":7953},[108,8829,8830],{"class":7893},"(pyo.Expr_if(",[108,8832,8833],{"class":8362},"IF",[108,8835,4553],{"class":7889},[108,8837,8567],{"class":7953},[108,8839,8686],{"class":7893},[108,8841,8449],{"class":7889},[108,8843,8452],{"class":7893},[108,8845,8455],{"class":7889},[108,8847,8848],{"class":7893}," O_k[k]) ",[108,8850,8599],{"class":7889},[108,8852,8653],{"class":7953},[108,8854,8855],{"class":7893},",\n",[108,8857,8859,8862,8864],{"class":7885,"line":8858},17,[108,8860,8861],{"class":8362},"                                THEN",[108,8863,4553],{"class":7889},[108,8865,8866],{"class":7893},"C_fee[k],\n",[108,8868,8870,8873,8875,8877,8880,8882,8885,8887,8890],{"class":7885,"line":8869},18,[108,8871,8872],{"class":8362},"                                ELSE",[108,8874,4553],{"class":7889},[108,8876,649],{"class":7953},[108,8878,8879],{"class":7893},") ",[108,8881,8449],{"class":7889},[108,8883,8884],{"class":7893}," k ",[108,8886,8455],{"class":7889},[108,8888,8889],{"class":7893}," K)  ",[108,8891,8892],{"class":7927},"# constraint (6)\n",[108,8894,8896,8898,8900,8902,8904,8906,8908,8911,8913,8915,8917,8920,8922,8924,8926,8928,8930,8932,8934],{"class":7885,"line":8895},19,[108,8897,8793],{"class":7889},[108,8899,8796],{"class":7953},[108,8901,8830],{"class":7893},[108,8903,8833],{"class":8362},[108,8905,4553],{"class":7889},[108,8907,8567],{"class":7953},[108,8909,8910],{"class":7893},"(S_pack[o] ",[108,8912,8573],{"class":7889},[108,8914,8576],{"class":7893},[108,8916,1395],{"class":7889},[108,8918,8919],{"class":7893}," S_use[o] ",[108,8921,8573],{"class":7889},[108,8923,8587],{"class":7893},[108,8925,8449],{"class":7889},[108,8927,8452],{"class":7893},[108,8929,8455],{"class":7889},[108,8931,8848],{"class":7893},[108,8933,8599],{"class":7889},[108,8935,8936],{"class":7893}," S_free[k],\n",[108,8938,8940,8942,8945],{"class":7885,"line":8939},20,[108,8941,8861],{"class":8362},[108,8943,8944],{"class":7889},"=-",[108,8946,8947],{"class":7893},"C_ship[k],\n",[108,8949,8951,8953,8955,8957,8959,8961,8963,8965,8968],{"class":7885,"line":8950},21,[108,8952,8872],{"class":8362},[108,8954,4553],{"class":7889},[108,8956,649],{"class":7953},[108,8958,8879],{"class":7893},[108,8960,8449],{"class":7889},[108,8962,8884],{"class":7893},[108,8964,8455],{"class":7889},[108,8966,8967],{"class":7893}," K)) ",[108,8969,8970],{"class":7927},"# constraint (7)\n",[108,8972,8974],{"class":7885,"line":8973},22,[108,8975,7921],{"emptyLinePlaceholder":7920},[108,8977,8979],{"class":7885,"line":8978},23,[108,8980,8981],{"class":7927},"# give the objective to Pyomo\n",[108,8983,8985,8988,8990,8993,8996,8998,9001,9004,9006],{"class":7885,"line":8984},24,[108,8986,8987],{"class":7893},"model.cost ",[108,8989,4553],{"class":7889},[108,8991,8992],{"class":7893}," pyo.Objective(",[108,8994,8995],{"class":8362},"sense",[108,8997,4553],{"class":7889},[108,8999,9000],{"class":7893},"pyo.minimize, ",[108,9002,9003],{"class":8362},"expr",[108,9005,4553],{"class":7889},[108,9007,9008],{"class":7893},"pyo_obj_expr)\n",[10,9010,9011],{},"And then we send it off:",[7875,9013,9015],{"className":7877,"code":9014,"language":7879,"meta":7880,"style":7880},"# solve with our API service\nresult = Client().solve(model, time_limit=2.0, gzip=True)\nprint(result.display)\n",[60,9016,9017,9022,9052],{"__ignoreMap":7880},[108,9018,9019],{"class":7885,"line":7886},[108,9020,9021],{"class":7927},"# solve with our API service\n",[108,9023,9024,9027,9029,9032,9035,9037,9040,9042,9045,9047,9050],{"class":7885,"line":7909},[108,9025,9026],{"class":7893},"result ",[108,9028,4553],{"class":7889},[108,9030,9031],{"class":7893}," Client().solve(model, ",[108,9033,9034],{"class":8362},"time_limit",[108,9036,4553],{"class":7889},[108,9038,9039],{"class":7953},"2.0",[108,9041,3166],{"class":7893},[108,9043,9044],{"class":8362},"gzip",[108,9046,4553],{"class":7889},[108,9048,9049],{"class":7953},"True",[108,9051,7993],{"class":7893},[108,9053,9054,9056],{"class":7885,"line":7917},[108,9055,8058],{"class":7953},[108,9057,9058],{"class":7893},"(result.display)\n",[8138,9060],{":lines":9061,"label":8141},"[\"▄▀▀▀▄        ▄                     █\",\"█   █ █   █ ▄▄  ▄▀▀▀▄ ▄▀▀▀▄ █▀▀▀▄ ▀█▀▀\",\"█ ▀▄▀ █   █  █  █   ▄ █   █ █▄▄▄▀  █  ▄\",\" ▀▀ ▀  ▀▀▀▀ ▀▀▀  ▀▀▀   ▀▀▀  █       ▀▀\",\"\",\"├── shots\",\"│   └── 1 · primal   162044219300   1.98s  ◀ best\",\"├── status:     heuristic\",\"├── feasible:   true\",\"├── objective:  1.620442193e11\",\"├── x:          x1=1, x10=0, x100=0, x1000=0, x10000=0, x10001=0, …  (10933 variables)\",\"├── time_limit: 2 s\",\"└── solve_time: 1.9852 s\",\"\",\"    Intel Xeon Gold 6338N @ 2.20GHz · 16 cores, 1 core per shot\"]",[10,9063,9064],{},"Let's inspect the solution quality:",[7875,9066,9068],{"className":7877,"code":9067,"language":7879,"meta":7880,"style":7880},"print(f\"CP-SAT's total cost                              {solver.objective_value:,.0f}\")\nprint(f\"Total cost from Quicopt's API service            {result.objective:,.0f}\")\n",[60,9069,9070,9093],{"__ignoreMap":7880},[108,9071,9072,9074,9076,9078,9081,9083,9085,9087,9089,9091],{"class":7885,"line":7886},[108,9073,8058],{"class":7953},[108,9075,1373],{"class":7893},[108,9077,1066],{"class":7889},[108,9079,9080],{"class":7950},"\"CP-SAT's total cost                              ",[108,9082,8068],{"class":7953},[108,9084,8095],{"class":7893},[108,9086,8098],{"class":7889},[108,9088,8074],{"class":7953},[108,9090,7553],{"class":7950},[108,9092,7993],{"class":7893},[108,9094,9095,9097,9099,9101,9104,9106,9109,9111,9113,9115],{"class":7885,"line":7909},[108,9096,8058],{"class":7953},[108,9098,1373],{"class":7893},[108,9100,1066],{"class":7889},[108,9102,9103],{"class":7950},"\"Total cost from Quicopt's API service            ",[108,9105,8068],{"class":7953},[108,9107,9108],{"class":7893},"result.objective",[108,9110,8098],{"class":7889},[108,9112,8074],{"class":7953},[108,9114,7553],{"class":7950},[108,9116,7993],{"class":7893},[8138,9118],{":lines":9119,"label":8141},"[\"CP-SAT's total cost                              162,129,469,300\",\"Total cost from Quicopt's API service            162,044,219,300\"]",[10,9121,9122,9123,9126,9127,9130,9131,9135],{},"Quicopt found a ",[55,9124,9125],{},"better solution"," in less than ",[55,9128,9129],{},"two seconds!"," CP-SAT invested 60s on eight CPUs (which actually sometimes suffices to find the same solution as Quicopt). The ",[23,9132,9134],{"href":39,"rel":9133},[27],"notebook"," on our GitHub has additional proofs that the solution of Quicopt's solver is correct in the original MILP formulation.",[9137,9138,9139],"style",{},"html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .s9osk, html code.shiki .s9osk{--shiki-default:#FFAB70}",{"title":7880,"searchDepth":7909,"depth":7909,"links":9141},[9142,9147,9148],{"id":67,"depth":7909,"text":68,"children":9143},[9144,9145,9146],{"id":72,"depth":7917,"text":73},{"id":1263,"depth":7917,"text":1264},{"id":3125,"depth":7917,"text":3126},{"id":7862,"depth":7909,"text":7863},{"id":8144,"depth":7909,"text":8145},"Let us take a deep dive into the so-called \"internet-shopping optimization problem\", also known as \"supplier selection and order allocation\". This is a very common problem that occurs basically whenever a large number of items needs to be ordered from a large number of suppliers. As it involves integer quantities, it is usually formulated as a mixed-integer linear problem (MILP). Unfortunately, MILPs are known to be NP-hard - which more or less says that they can be very hard to solve.","md",null,{},false,"\u002Fuse-cases\u002Finternet-shopping",{"title":5,"description":9149},"use-cases\u002Finternet-shopping","pxlEQH91AlkYS9N6bryjhfDpHrX6mY8eiGSltGSn_N4",1794337678966]