2017-09-11 47 views
1

我有一组:访问一个变量的最后一个元素中GAMS

集合T/T1 * T6 /;

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

Variable var(t);

Equation const;

常量..

变种( 'T6')< 20;

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

回答

2

你可以用一元钱条件方程限制到最后期限:

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

或者你可以定义一个单独的子集为您的最终条件,像这样:

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

const.. var(tEnd) < 20; 
1

你也可以利用集合“最后”属性定义上界:

Set t /t1*t6/; 

Variable var(t); 

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

最好的 Lutz