In the research related to vehicle routing, the difference between hard and soft constraints is well defined. Hard constraints (e.g., customers’ time windows, capacity constraints, maximal duration of the working day, etc.) cannot be violated. That is, these constraints may cause the instance of the problem at hand to have no feasible solution. Indeed, violating soft constraints is allowed (that is, some time windows may not be met, a working day may have overtime, etc.) but incurs a penalty. Having said that, I wonder: what do the terms “hard constraints” or “soft constraints” mean in the industry?
All service providers argue (and with good reason) that customers’ time windows must be met. That is, these constraints are hard. So far, so good. But, on the other hand, service providers require the software developers to provide flexible software. One example of such desired flexibility is to allow the manual insertion of customers to the current route in a way that may violate some pre-committed time windows. Well, it looks like flexibility means soft constraints? If not, what does it say? Is there a contradiction here?
When I try to settle this issue in my mind, I often conclude that our business should include elements of mind reading, in addition to software. Yet, although I’m not a mind reader, I have witnessed that service providers prefer to receive a software that enforces (in the maximal possible manner and automatically) the service level at the customers (i.e., zero late arrivals), but at the same time to provide flexibility that allow them to change the automatic solution. Sometimes in a way that hurts service levels.
That is, flexibility (or softness, if you will) should be kept in the service providers’ hands. However, software providers should allow it.