1

我有一套:

设置 t /t1*t6/;

让我们考虑有一个名为 var 的变量。我有一个约束,即 var 的最后一个元素小于 20。

变量 var(t);

方程常数;

常数..

var('t6') < 20;

我想用 card(t) 之类的东西替换最后一行中的 't6',这样如果 t 的大小发生变化,我就不必手动更改它。

4

2 回答 2

2

您可以使用美元条件将等式限制为最后一个时期:

const(t)$(card(t)).. var(t) < 20;

或者您可以为您的结束条件定义一个单例子集,如下所示:

singleton set tEnd(t);
tEnd(t) = yes$(card(t));

const.. var(tEnd) < 20;
于 2017-09-11T07:23:01.440 回答
2

您还可以在集合 t 的“last”属性的帮助下定义一个上限:

Set t /t1*t6/;

Variable var(t);

var.up(t)$(t.last) = 20;

最好的,卢茨

于 2017-09-12T07:02:35.093 回答