CP-SAT löser de problem där du kan beskriva reglerna men inte lösningen: vem som gör vad, i vilken ordning, med vilka resurser. Du ger den reglerna och ett pris. Den ger dig tillbaka den billigaste plan som inte bryter mot något — och ett bevis på att ingen billigare finns.
Tre tekniker, elva jobb, en arbetsdag på 480 minuter. Kompetenskrav, tidsfönster, restid och arbetstid. Allt under är kört med CP-SAT — välj regler och se vad som händer med planen.
Damproblemet: sätt ut 8 damer på ett bräde så att ingen hotar en annan. Antalet möjliga placeringar är 40 320. Solvern undersöker en bråkdel. Följ den: gula rutor är försök som dömdes ut direkt, grön är en dam som fick stå kvar, den lila kanten är raden solvern arbetar på.
Det här är en pedagogisk miniatyrsolver i webbläsaren (backtracking med forward checking). Riktig CP-SAT gör samma sak, men med noggrannare resonemang per nod, inlärda förbud och hundratals trådar. Därför klarar den miljoner variabler där den här klarar dussintals.
Kryssa det som stämmer in. Verktyget passar när reglerna är många, kombinationerna är astronomiska och svaret ska vara bevisat bra — inte bara bra.
| Schemaläggning | personal, pass, jour, operationssalar |
| Fältservice | tekniker, tidsfönster, restid, SLA |
| Rutt & logistik | fordon, lastbärare, tidluckor |
| Produktion | batchar, ställtid, sekvensberoende |
| Konfiguration | paket av moduler som måste passa ihop |
| Allokering | resurser mot uppgifter, kvoter, rättvisa |
Ren kontinuerlig ekonomi (använd LP). Problemet är odefinierat eller reglerna ändras mitt i (ingen modell hjälper). Optimeringsproblemet är i praktiken ett inlärningsproblem — då är ML rätt verktyg. Och: kan en enkel girig regel lösa det, ska du inte införa en solver.
Full dokumentation: CP-SAT Solver · N-queens · Employee scheduling
| Del | Vad den är |
|---|---|
| Labb 01 | Verkliga CP-SAT-körningar, genererade av gen_data.py med OR-Tools 9.15.6755. Status, målvärde, tid, variabel- och villkorsantal samt schemat är utdata från solvern. Instansen är syntetisk men realistisk. |
| Labb 02 | En miniatyrsolver i JavaScript — backtracking med forward checking. Den är till för att visa mekanismen, inte prestandan. Den bevisar inget om CP-SAT:s hastighet. |
| Labb 03 | En tumregel, inte ett orakel. Poängen är att tvinga fram frågan "vilka regler, vilket pris, vilket bevis". |
Källkod, datagenerering och README: Källkod på GitHub (cp-sat-playground). Sidan är en enda statisk fil utan beroenden — den fungerar offline.