Как преобразовать оператор if в линейное уравнение?

#gams-math #linear-equation

Вопрос:

Я хочу преобразовать это утверждение if в линейное уравнение.

 for i,j -> 1 to n 
if D[i]>D[j] and f[i] > s[j] then w[i] =c[j]
 

Строка ниже-это то, что пришло мне на ум до сих пор, но я не знаю, как написать остальное. C(j) должно быть умножено на фразу (эта фраза является условием кода).
Если результат этой фразы (в скобках ниже) равен 1, добавьте C(j) к w(j), а если он равен 0, не добавляйте его к w(j).
Можете ли вы сказать мне, как записать это условие таким образом, чтобы, если условие истинно, оно становилось 1, а если условие ложно, оно становилось 0?

 sum( j, c[j]*(?) )
 

Ответ №1:

Что вы подразумеваете под «умножением на фразу»? Фраза является параметром или переменной в модели? C(j) — это данные или переменная? В зависимости от вашего ответа вы должны добавить двоичные переменные в свою модель, чтобы зарегистрировать результат этой фразы, а затем вы должны сформулировать условную сумму c(j) и w(j) в зависимости от этой двоичной переменной.