Constraints
Constraints are the set of rules that are applied to the planning, to ensure that the planning is feasible. Constraints can either be hard or soft, and have an effect on the cost of an assignment. The overall goal of OMD Go is to compute a plan that doesn't violate any hard constraints, and has the lowest overall cost possible. In practice, it may not always be possible to meet these goals, and a tradeoff is necessary.
A hard constraint is a constraint that must be met from OMD Go's perspective, otherwise it is not considered a viable option. Examples of these are: a task that must be performed by a resource with a certain skill; a task that may only be serviced within the opening hours.
A soft constraint is a constraint that involves a penalty (cost) when they are encountered. For OMD Go, soft constraints are taken into account indirectly, when the total cost of an assignment are evaluated. Since OMD Go will always try to minimize the overall cost of the plan, solutions that do not violate hard and soft constraints will be deemed better.
OMD Go will never violate hard constraints when computing the plan. However, a planner may manually override this restriction, and perform an assignment that is deemed invalid. This should be done with care, since the optimization algorithms will often not be able to optimize such routes.