如何在 DocPlex 中实现 "Continuous with Minimum or Nothing" 个变量?

How do I Implement "Continuous with Minimum or Nothing" Variables in DocPlex?

我的问题中有 5-20 个变量,通常对于 3-6 个变量,允许的解决方案 space 要么连续下降到最小值,要么正好为零。例如,在一个问题中,第一个变量 (x0) 可以介于 250-1000 之间,也可以为 0。

最小化是在复数 piecewise-linear/non-linear 函数 f(x0,...,xn) 上进行的。

这可以在单个 Docplex model/minimize 调用中完成吗?如果是这样,Docplex 是否能很好地应对解决方案中的这些漏洞 space?

这个概念称为"semi-continuous" 或"semi-integer" 变量。查看文档,您会在 Model class 中找到函数 semicontinuous_varsemicontinuous_var_dict、...。这些函数将创建具有您要求的属性的变量:

x0 = model.semicontinuous_var(250, 1000, "x0")

请注意,使用半连续变量会隐式地将您的模型转换为 MIP。