

Capaciteit is getypeerd, en de types bepaal je zelf: zitplaatsen en rolstoelplaatsen voor patiëntenvervoer, paletten, kratten of koudeketen voor vracht. Elke dimensie heeft een eigen limiet per voertuig, en de lopende lading wordt op elk traject gecontroleerd, niet alleen bij vertrek.
Beide stops van een rit zitten op hetzelfde voertuig, en de ophaling komt in de route altijd vóór de levering. Allebei harde regels.
De tijd in het voertuig is per rit begrensd: standaard 45 minuten, of een strakkere limiet per rit. Een omweg die een passagier of lading langer aan boord houdt, is niet toegelaten.
Een rit kan pooling uitsluiten. Tussen de ophaling en de levering wordt geen enkele andere stop bediend.
Laaddimensies stel je per operatie in: zitplaatsen, rolstoelplaatsen, pakketten, paletten, wat het voertuig ook vervoert. Een voertuig zonder capaciteit in een dimensie krijgt die rit nooit.
Bij elke stop wordt de lopende lading bijgewerkt: ophalingen tellen erbij, leveringen eraf. De limiet geldt op elk traject tussen stops.
Elke stop heeft een eigen venster. Te vroeg aankomen betekent wachten; de service starten nadat het venster sluit, kan niet.
Een bestelwagen vertrekt bij shiftstart vanaf zijn basis en moet zijn laatste stop vóór het einde van de shift afronden.
Stops die al bediend zijn, liggen vast en hun ritten blijven op hun voertuig. Een panne, een dringende rit of een melding van een chauffeur zet een nieuwe solve in gang voor wat nog openstaat.
Bediende stops staan vast en hun ritten blijven aan hun voertuig gekoppeld. Een nieuwe solve wijzigt alleen wat nog openstaat.
Meld een bestelwagen defect en zijn resterende ritten komen opnieuw open en landen bij de volgende solve op de andere wagens.
Een nieuwe ophaling en levering kan tijdens de dag worden toegevoegd en wordt bij de volgende solve ingepland.
Sleep een rit naar een specifieke wagen en hij blijft daar staan. De rest van het plan optimaliseert zich eromheen.
Sleep een rit op een wagen en hij wordt aan dat voertuig vastgepind. De solver blijft de volgorde en de timing kiezen; het voertuig is de beslissing van de dispatcher. Terugslepen maakt de pin weer los.
Een rit die je naar een andere wagen sleept, verhuist met zijn beide stops en wordt daar vastgepind. De volgende solve plant hem op dat voertuig, op de beste positie die de regels toelaten.
Een vastgepinde rit verhuist nooit naar een ander voertuig, wat de gewichten ook zeggen. Hem terug op zijn eigen rij droppen maakt de pin los.
Een pin legt het voertuig vast, niet de klok. Volgorde en tijden binnen die route blijven geoptimaliseerd tegenover elke andere regel.
Een voertuig kan uit een solve worden gehaald, als what-if. Zijn ritten komen opnieuw open en de overige wagens nemen op wat past.
Rijtijd, SLA-vertraging, geschrapte optionele ritten en eerlijkheid over de wagens heen dragen elk een apart gewicht. Dezelfde ritten opnieuw gesolved onder andere gewichten geven een ander plan; de cijfers tonen de afweging.
Reistijd, SLA-vertraging, niet-toegewezen optionele ritten en een eerlijke verdeling per wagen dragen elk een gewicht, ingesteld per solve. Nul schakelt er een uit.
Een niet-toegewezen rit kost zijn prioriteitsgewicht, dus werk met hoge prioriteit wordt eerst beschermd wanneer de capaciteit krap wordt.
Een stop met een SLA krijgt een boete per minuut dat hij na de deadline aankomt, en dat weegt zwaarder dan pure rijtijdwinst.
Een optionele balansdoelstelling spreidt de rijtijd over de vloot. Standaard uit, aan wanneer gelijke dagen zwaarder wegen dan totale minuten.
De constraints hierboven zijn de standaardset. Regels die eigen zijn aan je operatie worden als harde of zachte constraints met een eigen gewicht aan het model toegevoegd. De solver behandelt ze zoals de ingebouwde: harde regels worden nooit gebroken, zachte regels worden afgewogen tegen de rest.
Een eigen regel is ofwel absoluut ofwel een gewogen voorkeur. Absolute regels worden nooit gebroken; voorkeuren dragen een gewicht dat je per solve instelt.
Eigen regels worden tijdens het zoeken op elk kandidaat-plan geëvalueerd, niet achteraf gecontroleerd. Een plan dat er een breekt, wordt nooit voorgesteld.
Elke regel rapporteert zijn eigen bijdrage, zodat je ziet wat hij het plan kost, zijn gewicht kan bijstellen of hem kan uitschakelen.
Je beschrijft de regel zoals je dispatchers hem formuleren; hij wordt een benoemde constraint in het model.