lingo中 size for sum函式的使用

2021-09-13 14:40:55 字數 1834 閱讀 2340

@size:

lingo中的@size()函式用於確定集合中元素的個數。比如你的集合是

注意:在使用size的時候直接在@size()括號裡寫上集合名就行,不需要寫@size(s1(i))中的(i)

s1/a b c d f g /

:x;

當呼叫m=@size(s1)時,它返回的乙個數值6,因為s裡面有6個元素。

@for:

該函式用來表示線性規劃中的約束條件

sets:r/1

..8/:d;c/1

..8/:

; !就算沒有集合屬性也要寫":"

;link(r,c)

:x,y; !派生集合;

endsets

@for

(r(i)

:@for

(c(j)

:x(i,j)

<=y(i,j)))

; !可用@for

(link:x<=y)代替;

@for

(r(i)

|i#ge#2:d(i)>=3) !":"前說的是對哪個集合進行約束,":"後面說的事具體是什麼樣的約束;

!"|"表示過濾,即篩選r(i)下標集中i>=

2的下標,即/2,

3..8/

@sum

該函式用來求和,格式:@sum(setname(i):x(i))

總的例子:

model:

title cutting-stock problem; !給模型起個名字;

sets:

needs/1.

.4/:length,num;

cuts/1.

.3/:x;patterns(needs,cuts)

:r;endsets

data:

length =45

68;num =

5010

2015

;capacity =

19; !後面用的比較多的常數;

enddata

min= @sum

(cuts(i)

:x(i));

@for

(cuts(j)

:@sum

(needs(i)

:length(i)

*r(i,j)

);@for

(cuts(j)

:@sum

(needs(i)

:length(i)

*r(i,j)

)>capacity-@min

(needs:length));

@for

(needs(i)

:@sum

(cuts(j)

:x(j)

*r(i,j)

)>num(i));

@sum

(cuts(i)

:x(i)

)>26;

@sum

(cuts(i)

:x(i)

)<

31;

@for

(cuts(i)

|i#lt#@size(cuts):x(i)>x(i+1)); !x1>=x2>=x3;

@for

(cuts:@gin(x)

); !每乙個x都要是整數;

@for

(patterns:@gin(r)

); !每乙個r都要是整數;

end

如果不足歡迎指正

Lingo 集合小結

現在,我們歸納一下基本集合和派生集合的定義語法。基本集合的定義格式為 以下語 法中凡是在方括號 中的內容,表示是可選的項,即該項可以有也可以沒有 setname member list attribute list 其中 setname 為定義的集合名,member list 為元素列表,attri...

Lingo基本操作

二 函式 三 待更新 lingo是一門主要求解非線性規劃數學模型的程式設計軟體,記得最初接觸lingo是在閱讀 數學建模教程 一書,該書在第五章主要講解使用lingo來解決優化問題,也是在那個時候認識到了lingo的強大之處。lingo的使用就好比解決一道簡單的數學問題,而你只需要使用lingo支援...

Lingo入門基礎

lingo linear interactive and general optimizer 可以求解非線性規劃,也可以用於線性和非線性方程組的求解,是求解優化模型的最佳選擇。確保模型是正確的 清楚每個式子的意思,變數 下標均嚴格區分,確定模型型別 確定指標集,定義集合 確定變數 已知資料的量 決策...