the following scenario has been discussed with a customer and might be interesting for others as well.
Usecase scenario:
- single vehicle
- set of orders, maybe too many for the vehicle (due to time constraints and maximum tour length)
- some orders are more important than others (less important ones can be shifted to next day)
- sometimes precombined sequence of the orders
Approach #1 (my favourite)
Empty input plan. This means the server can plan from scratch and if there are too many orders some of them
will remain unscheduled (low prios). VIOLATIONS wil not occur. It is possible to check in a second transaction why these orders are unscheduled (see UnscheduledOrderAnalyses). And if possible these orders can be postponed to next day.
Output scenarios:
- 1a- proper plan with no unscheduled orders
- 1b- proper plan with at least one unscheduled order (postpone this order or change input conditions)
Given input plan with all the given orders. The server tries to rearrange the orders. But: If the given input sequence is invalid due to at least one violation (sequence causes overload, delayed arrival at customer...) the server will not change anything in the sequence but return the computed plan incl. VIOLATIONS. You may check whether there are VIOLATIONS in the response and tell this to the user who is then responsible for the reaction to start another call (e.g. remove some orders,) or try Approach #1.
Output scenarios
- 2a- proper plan with no unscheduled orders and no violations
- 2b- violated plan with no unscheduled orders but violations (detach orders from the vehicle and rerun)
Best regards Bernd