首页 > 解决方案 > 如何将 if 语句转换为线性方程?

问题描述

我想将此 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]*(?) )

标签: gams-mathlinear-equation

解决方案


你说的“被一个短语相乘”是什么意思?短语是模型中的参数还是变量?C(j) 是数据还是变量?根据您的答案,您应该将二进制变量添加到模型中以注册该短语的结果,然后您必须根据该二进制变量制定 c(j) 和 w(j) 的条件和。


推荐阅读