Constraints AMPL约束语法

Constraints AMPL约束语法,constraints,linear-programming,ampl,Constraints,Linear Programming,Ampl,我正在一个计算优化类的项目中工作,在为我的混合整数程序编写特定约束时遇到了一个问题 该项目本质上是一个贷款组合优化问题,我试图最大限度地提高对贫困的影响,同时满足对风险、回报和支付的限制。我几乎所有的限制都按预期的那样发挥作用,但这是最后一个给我带来问题的限制 这是布景 #SETS set REGION; #Set of regions set COUNTRY; #Set

我正在一个计算优化类的项目中工作,在为我的混合整数程序编写特定约束时遇到了一个问题

该项目本质上是一个贷款组合优化问题,我试图最大限度地提高对贫困的影响,同时满足对风险、回报和支付的限制。我几乎所有的限制都按预期的那样发挥作用,但这是最后一个给我带来问题的限制

这是布景

#SETS
set REGION;                                 #Set of regions
set COUNTRY;                                #Set of countries
set LOAN_DURATION;                          #Set of loans
set GROUP within {COUNTRY,REGION};          #Set of countries within regions
决策变量

#VARIABLES

var x{COUNTRY,LOAN_DURATION}>=0;            #Amount of money that can be loaned     #to each country c by loan type l
var y{COUNTRY,LOAN_DURATION} binary;        #decision of whether to use loan type #l for each country c 
这是给我一个问题的约束

subject to WITHIN_REGION{r in REGION, (c,r) in GROUP, l in LOAN_DURATION}:
x[c,l] <= QUOTA[r]*sum{c in COUNTRY, l in LOAN_DURATION} x[c,l];
所以我想知道是否有任何ampl专家可以帮助我实现最后一个约束

谢谢


Josh

问题在于,在两个不同的索引表达式中使用相同的索引
c
名称,范围重叠,
(c,r)在组中
c在国家/地区
。您可以重命名第二个索引以避免错误:

subject to WITHIN_REGION{r in REGION, (c,r) in GROUP, l in LOAN_DURATION}:
x[c,l] <= QUOTA[r]*sum{c2 in COUNTRY, l in LOAN_DURATION} x[c2,l];

谢谢你的帮助。当我把你的建议应用到c和l时,它起到了预期的作用。对,我没有注意到
l
也需要重命名。
subject to WITHIN_REGION{r in REGION, (c,r) in GROUP, l in LOAN_DURATION}:
x[c,l] <= QUOTA[r]*sum{c2 in COUNTRY, l in LOAN_DURATION} x[c2,l];
subject to WITHIN_REGION{r in REGION, (c,r) in GROUP, l in LOAN_DURATION}:
x[c,l] <= QUOTA[r]*sum{(c2,r) in GROUP, l in LOAN_DURATION} x[c2,l];