數學建模(Lingo)(非線性整數規划)


原非線性規划式子:

 

 代碼展示如下:

model:!編程開始;
title:life;!標題;

sets:!集合段;
row/1..4/:b;
col/1..5/:c1,c2,x;
link(row,col):a;
endsets

data:!數據段;
c1=1,1,3,4,2;!對應目標函數中的x的平方;
c2=-8,-2,-3,-1,-2;!對應目標函數中的x的一次方;

!約束條件系數;
a=1 1 1 1 1
1 2 2 1 6
2 1 6 0 0
0 0 1 1 5;
b=400,800,200,200;
enddata

max = @sum(col:(c1*x^2+c2*x));!計算段;
@for(row(i):@sum(col(j):a(i,j)* x(j))<=b(i));
@for(col:@gin(x));
@for(col:@bnd(0,x,99));
end

 

提醒一下上面有幾個小函數,

首先是Lingo中所有函數都要加上@

然后@for是循環,@sum是求和,@gin是限制整數;@bnd是限制變量x在[0,99]中

其實還有挺多函數的,如果有興趣知道詳情的話可以去百度,我個人看的是這個網頁

[整理版]lingo中的函數 - 豆丁網 (docin.com)

 

然后還有個小問題就是我的Lingo代碼里加了中文注釋,我個人是不推薦在自己使用Lingo的時候加上中文的,

因為部分版本的Lingo中加中文會導致關鍵字顯示不正確,比如這樣(sets和col變成綠色的了,雖然好像不影響使用,但我個人總感覺不太舒服)

 

 然后我最后再附上沒有中文的Lingo代碼,以及運行結果

 

代碼:

model:
title:life;

sets:
row/1..4/:b;
col/1..5/:c1,c2,x;
link(row,col):a;
endsets

data:
c1=1,1,3,4,2;
c2=-8,-2,-3,-1,-2;
a=1 1 1 1 1
1 2 2 1 6
2 1 6 0 0
0 0 1 1 5;
b=400,800,200,200;
enddata

max = @sum(col:(c1*x^2+c2*x));
@for(row(i):@sum(col(j):a(i,j)* x(j))<=b(i));
@for(col:@gin(x));
@for(col:@bnd(0,x,99));
end

然后這是結果:

最優解:

各變量值:

 

老規矩,做一名深情的單身程序員

(PS:我不主動找你, 不是因為你不重要了, 而是我知道我不重要了 。)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM