如何在 AMPL 中写 "not equal to" 或设置变量参数的条件?

How to write "not equal to" in AMPL or set such as a condition for a variable's parameter?

我正在尝试设置一个变量 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))。

这是一个成本最小化的 2 阶段随机模型。我试图将 m <> n 写入求和条件以及在约束条件中写入 m <> n 。全部返回语法错误。

我尝试将条件添加到 objective 函数中:

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

求和{M中的m,N中的n,m <> n}W[m,n];

求和{M中的m,N中的n,m!=n}W[m,n];

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

我也试过把它加入到变量定义中:

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

等..

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

求和{M中的m,N中的n:m <> n} 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];

希望对您有所帮助:)