诊断和处理不可能实行

例子:lp, feasopt multiscenario,灵敏度、workforce1 workforce2 workforce3

求解优化模型时,有一些情况不能满足指定的约束。,当这一切发生的时候,你通常需要识别和修复的根源不可行性,或者找到一组约束放松为了获得一个可行的模式。的workforce1,workforce2,workforce3说明这些不同的策略。

从最简单的三个例子,workforce1制定一个简单的劳动力调度模型并解决它。如果模型是不可行,计算一个不可约子系统(IIS)不一致。然后用户可以检查这些信息来理解和希望解决模型中的不可行性的来源。

例子workforce2是相似的,除了,如果模式是不可行的,这个例子反复确定了IIS和从模型中删除相关的约束条件之一,直到模型变得可行。注意,这足以消除约束一个IIS地址源的不可行性,但这一个IIS可能不能捕获所有来源的不可行性。因此有必要重复这个过程,直到模型是可行的。

例子workforce3采用不同的方法解决不可行性。而不是识别和移除IIS成员,它允许模型的约束放松。就像feasopt例子,一个人工变量添加到每个约束。示例设置目标原始变量为零,然后解决一个最小化的总大小的模型约束松弛。

feasopt示例演示了另一个方法来放松不可行模式。它计算可行性放松不可行的模式。可行性放松是一个模型,当解决,最大限度地减少量的解决方案的范围和线性约束违反原来的模型。调用该方法如下:

在C:

错误= GRBfeasrelax (feasmodel GRB_FEASRELAX_LINEAR 1,空,空,rhspen, &feasobj);
在c++中:
feasmodel1。feasRelax (GRB_FEASRELAX_LINEAR,真的,假的,真正的);
在c#中:
feasmodel1.FeasRelax(伽马线暴。FEASRELAX_LINEAR,真的,假的,真正的);
在Java中:
feasmodel1.feasRelax(伽马线暴。FEASRELAX_LINEAR,真的,假的,真正的);
在Python中:
feasmodel1。feasRelaxS(0,真的,假的,真的)

这个方法的参数选择放松模型的目标函数,具体设置允许的范围和约束放松,放松的特定范围的惩罚和约束。