Двоичная переменная X и W - это число с плавающей запятой.И я хочу получить этот результат, если Wi> 0, то Xi = 1 - PullRequest
0 голосов
/ 15 февраля 2019

С 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

Как я могу сформулировать это ограничение?

1 Ответ

0 голосов
/ 16 февраля 2019

вы можете использовать логические ограничения.Позвольте мне привести небольшой пример из примера портфолио, который есть в примерах OPL CPLEX.

Вы можете прочитать

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

, а затем добавить

dvar boolean X[Investments];

и затем в теме для блокировки вы можете добавить

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

regards

...