提示和技巧


提示和技巧

通过巧妙地使用多场景界面中提供的特性,它实际上可以做比最初看起来更多的事情。

添加或删除变量或约束

多场景接口不提供在场景中添加或删除变量或约束的方法,但通过更改变量边界和约束右侧值可以达到相同的效果。要在场景中删除一个变量,只需将其下界和上界更改为零。要添加一个变量,请在基本模型中将其边界设置为零,并将其更改为场景中的真实值。要删除小于约束,请将场景中的右值更改为伽马射线爆发。∞.要添加1,将其右侧设置为伽马射线爆发。∞在基本模型中,并将其更改为场景中的真实值。

改变约束的意义也可以使用类似的技巧来完成。例如,您可以通过将等式分割为一对不等式,将基本模型中的等式约束转换为场景中的等式约束。在基模型中,两个不等式右边的值将等于等式中的真值。两个不等式中的一个的右边值可以被松弛为伽马射线爆发。∞在该方案中。

您还可以更改变量的类型。例如,要将基本模型中的整数变量转换为场景中的连续变量,您可以将这两个变量添加到基本模型中,并使用分割相等约束将它们设置为彼此相等。然后可以在场景中放松等式约束(使用刚才描述的技术)。

这并不是一个详尽的列表,列出了您可以使用受支持的多场景特性来实现看似不受支持的结果的所有方法。我们提供的构建块集可以以各种不同的方式组装。

如果多场景模型中的所有场景都不可行,那么您的优化调用将生成不可行(或INF_OR_UNBD)状态码。虽然不能在多场景模型上计算IIS,但可以使用singleScenarioModel方法(见下文),然后分别在每个场景上计算IIS。

求解基本模型

如前所述,一个优化调用多场景模型不能解决基本模型。如果您也想解决该模型,请在您的场景中包含一个空场景。

提取一个场景

如果希望从多场景模型中提取一个场景,可以使用singleScenarioModel方法(在Cc++Javanet,Python).

性能考虑

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