1
我正在學習AMPL,以便稍後在我的程序中使用它。儘管我還沒有找到答案,但我還是有一個小問題。AMPL可變大小集迭代
假設我有一個設置,這設置將包含一些子集,這些子集可以在它們的尺寸不同。例如:
set x:= (a,b,c) (a,c) (d,t,r,e,s);
等..
現在我想寫一個約束,將不得不面對每個子集中的所有元素(類似於一個循環,將一個之間循環, b和c在第一個子集中,a和c在第二個等中)。問題是,我們不知道每個的大小,所以我們不能使用以下內容:
set x dimen 3;
subject to constraint {(i,j,k) in x}: "some constraint";
data;
set x:= (a,b,c) (a,c) (d,t,r,e,s);
有沒有辦法做到這一點?如果是,請給我提供一些示例代碼或鏈接以供學習? 在此先感謝。您的幫助表示讚賞:d
感謝,但對我來說,將一星號工作?我的意思是,如果我已經知道最長的子集將具有維5,我可以使用(a,b,c,*,*)而不是(a,b,c)嗎?它會有相同的含義嗎?如果否,是否有任何方法來填補子集成爲維5? – user3787524
Asterisk用於不同的目的 - 作爲一個佔位符來指定數據中下一項的位置,但可以指定其他值,如0表示「無數據」,並將所有子集填充到5。 。 – vitaut
謝謝,它完美的工作:D – user3787524