Algorithm 如何在AMPL或set(如变量参数的条件)中写入“不等于”?

Algorithm 如何在AMPL或set(如变量参数的条件)中写入“不等于”?,algorithm,optimization,ampl,Algorithm,Optimization,Ampl,我试图设置一个变量W{m in m,n in n},其中m和n是同一组值。M和N表示一个位置。变量W表示m和n之间的转换。因此,在变量W中,m不能等于n。例如,当m=1时,n只能等于2,而3 m=n=c1,2,3 这是一个成本最小化的两阶段随机模型。我尝试将mn写入求和条件,以及将mn写入约束。所有返回的语法错误 我试图将条件添加到目标函数中: 和{m in m,n in n|m n}W[m,n] 和{m in m,n in n,mn}W[m,n] 和{m in m,n in n,m!=n}W[

我试图设置一个变量W{m in m,n in n},其中m和n是同一组值。M和N表示一个位置。变量W表示m和n之间的转换。因此,在变量W中,m不能等于n。例如,当m=1时,n只能等于2,而3 m=n=c1,2,3

这是一个成本最小化的两阶段随机模型。我尝试将mn写入求和条件,以及将mn写入约束。所有返回的语法错误

我试图将条件添加到目标函数中:

和{m in m,n in n|m n}W[m,n]

和{m in m,n in n,mn}W[m,n]

和{m in m,n in n,m!=n}W[m,n]

和{m in m,n in n|m!=n}W[m,n]

我还尝试将其添加到变量定义中:

var W{m in m,n in n,mn}

等等


我尝试了很多方法,但都不管用。如果我添加了mn或m,AMPL返回语法错误=n进入模型。在我删除m之后=n条件下,模型工作,但返回错误的号码

sum{m in m,n in n:mn}W[m,n]

在AMPL中,您可以使用:在sum或forall方法中生成条件。例如:

sum{m in M, n in N : m <> n}W[m,n];

sum{m in M, n in N : m!=n}W[m,n];

sum{m in M, n in N : m != n}W[m,n];
我希望这有助于: