X二进制变量,W是dvar float。如果Wi> 0则Xi = 1,我想得到这个结果

时间:2019-02-14 22:02:52

标签: cplex portfolio opl

使用X是二进制变量的向量,而W是float变量的向量, 我想写一个约束,使得如果W[i] > 0,那么我应该有X[i] = 1

dvar boolean X[I]; // we choosed stocks i or not
dvar float W[I];    // weight of stocks i in portfolio

如何声明此约束?

1 个答案:

答案 0 :(得分:0)

您可以使用逻辑约束。 让我在OPL CPLEX示例中的投资组合示例中为您提供一个小示例。

您可以阅读

dvar float  Allocation[Investments] in FloatRange;  // Investment Level

然后您可以添加

dvar boolean X[Investments];

然后在要阻止的主题中添加

forall(i in Investments) X[i]==(Allocation[i]>=0.001);

致谢