Maskininlärning förutsäger. Optimering beslutar. De två blandas ofta ihop, och skillnaden är den viktigaste i hela kedjan.
En prognos säger att efterfrågan sannolikt blir mellan 400 och 700 enheter. Den säger ingenting om hur mycket ni ska beställa, givet att lagerplatsen rymmer 550, att leverantören kräver hela pallar, att kapitalbindningen har ett tak och att en utebliven försäljning kostar tre gånger mer än en osåld enhet.
Det är en optimeringsfråga, och den har ett exakt svar.
Vad en lösare gör som en modell inte gör
Hårda bivillkor. Kapacitet, budget, arbetstidsregler, minsta orderstorlek. En maskininlärningsmodell kan luta åt att respektera dem. En lösare garanterar det.
Heltal och val. Antal pallar, vilka rutter som körs, vilka artiklar som ingår i sortimentet. Diskreta beslut som inte går att gradvis närma sig.
Bevisad optimalitet. Lösaren returnerar både ett bra svar och hur långt från det bästa möjliga det ligger. Det är en garanti man sällan får någon annanstans, och den är värdefull när någon ska försvara beslutet.
Var jag har använt det
I mitt eget bolag, som optimerade Google Ads-annonsering, låg Gurobi i produktionskedjan. Budgetallokering över kampanjer under bivillkor är en optimeringsfråga: modellen skattade förväntat värde per enhet spenderad, och lösaren fördelade en begränsad budget över hundratals kampanjer med tak, golv och beroenden mellan dem.
Att sätta budet var maskininlärning. Att fördela pengarna var optimering.
Gurobi eller öppna alternativ
Gurobi är kommersiellt och licensen kostar. HiGHS och CBC är gratis och räcker långt, och OR-Tools från Google är utmärkt för ruttplanering och schemaläggning.
Skillnaden märks först vid större problem: Gurobi löser i minuter det som tar timmar för en öppen lösare, och ibland är det skillnaden mellan att kunna köra optimeringen varje natt och inte alls.
Rekommendationen i uppdrag är att börja med HiGHS. Blir problemet för stort motiverar det licensen, och då är beslutsunderlaget för att köpa den redan framtaget.