【发布时间】:2019-07-09 00:45:07
【问题描述】:
X 是二进制变量的向量,W 是浮点变量的向量,
我想写一个约束,如果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
我该如何陈述这个约束?
【问题讨论】:
X 是二进制变量的向量,W 是浮点变量的向量,
我想写一个约束,如果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
我该如何陈述这个约束?
【问题讨论】:
您可以使用逻辑约束。让我从 OPL CPLEX 示例中的投资组合示例中为您举一个小示例。
您可以阅读:
dvar float Allocation[Investments] in FloatRange; // Investment Level
然后你可以添加:
dvar boolean X[Investments];
然后在要阻止的主题中添加:
forall(i in Investments) X[i]==(Allocation[i]>=0.001);
【讨论】: