提示和技巧

通过巧妙的使用multi-scenario接口提供的功能,它实际上是可以做更多比可能首先出现。

添加或删除变量或约束

multi-scenario接口提供了无法添加或删除变量或约束在一个场景中,但同样的效果可以通过改变变量范围和约束右边的值。删除一个变量在一个场景中,只是改变它的上下边界为零。添加一个变量,设置它的边界为零的基本模型和改变他们自己的真实场景中的值。去除小于约束,改变right-hand-value场景GRB.INFINITY。添加一个,设置它的右边GRB.INFINITY在基本模型和场景变化它的真正价值。

改变一个约束的感觉也可以使用类似的技巧。例如,您可以将基本模型的一个等式约束转换为场景中的一个不平等的平等分割到一双不平等。右边的值都不平等的基本模型的真正价值就等于平等。右边的值的两个不等式可以放松GRB.INFINITY在该方案中。

你也可以改变一个变量的类型。例如,将一个整数变量的基本模型为连续变量在一个场景中,您可以添加这两个变量的基本模型,以及一个分裂等式约束将它们相等。等式约束可以放松的场景(使用刚刚描述的技术)。

这不是一个详尽的清单的所有方法,您可以使用支持multi-scenario特性实现看似不受支持的结果。构建块的集合,我们提供了可以在各种不同的方式组装。

如果所有场景multi-scenario模型中是不可行的,你优化调用会产生一个不可行(或INF_OR_UNBD)状态码。虽然你不能计算一个IIS multi-scenario模型,您可以提取个人场景Gurobi模型对象使用singleScenarioModel方法(见下文),然后计算一个IIS在每个单独的场景。

解决基本模型

如前所述,一个优化拜访multi-scenario模型不能解决的基本模型。如果你想解决这个模型,包括一个空的场景中你的场景。

提取一个场景

如果你想从multi-scenario模型提取一个场景,您可以使用singleScenarioModel方法(在C,c++,Java,net,Python)。

性能考虑

虽然似乎是重要的减少场景的数量在你的模型中,注意一些场景是微不足道的解决,因此没有影响整体解决方案成本。最主要的事情要记住的是,如果(1)针对另一个场景一个场景的解决方案是可行的,和(2)范围和右边第一个场景从来都不是严格的值比其他的边界的情况下,那么第一个场景的最优解也是最佳的场景。这意味着一些场景不会显著增加解决方案的成本。