如何在AMPL中写“不等于”或如何设置变量参数的条件?

时间:2019-09-29 04:16:03

标签: 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 = c(1,2,3))。

这是成本最小的两阶段随机模型。我试图将m <> n写入和条件,并在约束中写入m <> n。所有返回的语法错误。

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

sum {M中的m,N中的n | m <> n} W [m,n];

sum {m中的m,n中的n,m <> n} W [m,n];

sum {m中的m,n中的n,m!= n} W [m,n];

sum {M中的m,N中的n | m!= n} W [m,n];

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

var W {M中的m,N中的n,m <> n};

等等。

我尝试了很多方法,但是都没有用。如果我将m<>nm!=n添加到模型中,则AMPL返回语法错误。删除m!=n条件后,该模型可以工作,但返回错误的数字。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

在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];

我希望这会有所帮助:)