Overconstrained Planning
当可行解不存在时,我们期望找到一个尽可能少地破坏约束的解
默认情况下,OptaPlanner给每个Planning Entity赋值,负载Planning Value,因此打破了硬约束,有两种方法避免这种情况
- 使用Nullable Planning Variable,以便某些Planning Entity可以不被赋值
- 添加一个虚拟的Planning Value,来捕获所有未被赋值的Planning Entity
Nullable Variable
如果使用Nullable Planning Variable来处理Overconstrained Planning,多余的Planning Entity将会不被赋值

Virtual Value
在一个Overconstrained Planning中,我们可能可以知道哪些资源是缺少的
- 添加一个额外的Score Level,比如在Hard和Soft之间添加一个Medium层
- 添加一些Virtual Value,一般来说没有公式指导应该添加多少个Virtual
Value
- 不要添加过多,否则会使求解器效率降低
- 不要添加过少,否则找不到合法解
- 在这个新的Score Level中添加约束,惩罚对Virtual Value的使用