Lingo編程基礎

一.基本語法規則(參考博文:https://blog.csdn.net/qq_37158933/article/details/83002940)

1.語句必須以分號;結束,每行可以有多個語句,語句可以跨行。

2.!開頭爲註釋,註釋也需要;結尾。

3.若對變量取值範圍沒有特殊說明,則默認所有決策變量都是負。

4.Lingo模型以語句“model:”開頭,以“end"結尾。對於簡單模型,可以省略。

5.Lingo沒有單獨”<"或”>"關係,若出現”<"等價於"<="。如果需要嚴格要求大/小關係。可以寫成:A+α<=B,α是一個小的正數,它的值依賴於模型小於B多少纔算不等。

 

二.集合(參考博文:https://blog.csdn.net/breeze_blows/article/details/75332726)

直接貼代碼(註釋很詳細)

!模型的開始;
model:
	!集合定義的開始;
	sets:
		quarters/1,2,3,4/:dem, rp, op, inv;
		!集合quarters類似於數組,dem等表示該集合包含的元素,這裏一共有四個元素。
		/1,2,3,4/表示該集合的大小,對應着實際問題的每一個季度,/1,2,3,4/等價於
		/1..4/,當集合大小比較大時,建議寫後者;
	endsets	!集合定義的結束;

	min = @sum(quarters:400*rp+450*op+20*inv);
	!@sum(),求和函數表示對該集合所有依次進行求和,由於這是是對所有,所以省去了循環變量,這裏等價於
	@sum(quarters(i):400*rp(i)+450*op(i)+20*inv(i));

	@for(quarters(i):rp(i)<40);
	!@for類似於c/c++中的for循環,對其中操作循環進行;

	@for(quarters(i)|I#GT#1	!|表示對於循環的限制,#GT#表示大於;
		inv(i) = inv(i-1)+rp(i)+op(i)-dem(i););
	:inv(1) = 10+rp(1)+op(1)-dem(1);

	data:	!初始數據段開始;
		dem = 40, 60, 75, 25;
	enddata
end

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章