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

问题描述 投票:0回答:2

我正在尝试设置变量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 in M,n in 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 in M,n in N | m!= n} W [m,n];

我也试图将其添加到变量定义中:

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

等。

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

algorithm optimization ampl
2个回答
1
投票

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


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

我希望这会有所帮助:)

© www.soinside.com 2019 - 2024. All rights reserved.