數學模型演算法實現之Lingo求解一

2021-09-27 02:27:36 字數 1434 閱讀 7948

lingo基本用法說明:

模型以model開始,end結束

集合相當於下標,quarters=

lingo中模型優化由四部分組成:

1.集合段(定義集合變數及元素和屬性)sets:------->endsets

2.目標與約束段(目標函式、約束條件 )需要用到lingo內部函式如@sum和@for

3.資料段(對集合屬性輸入必要資料,格式:attribute(屬性) = value_list(常數列表);)data------->enddata

4.初始段(對集合屬性定義初值,也就是設定乙個最初解,可以通過其他演算法獲得乙個好的迭代初值,有利於提高演算法計算結果初值定義格式:attribute(屬性) = value_list(常數列表);)init------->endinit

基本集合與派生集合:(例子:ai\bj兩集合變數,cij為派生)

基本集合:直接把元素列舉出來的集合

派生集合:基於其他集合派生出來的多維集合

例:

model:

title location problem;

sets:

demand/1..6/:a,b,d;

supply/1..2/:x,y,e;

link(demand,supply):c;

endsets

data:

a=1.25,8.75,0.5,5.75,3,7.25;

b=1.25,0.75,4.75,5,6.5,7.75;

d=3,5,6,7,6,11;

e=20,20;

enddata

init:

x,y=5,1,2,7;

endinit

[obj]min=@sum(link(i,j):c(i,j)* ( (x(j)-a(i))^2 + (y(j)-b(i))^2 )^(1/2) );

@for(demand(i):[demand_con] @sum(supply(j):c(i,j))=d(i););

@for(supply(i):[supply_con] @sum(demand(j):c(j,i))<=e(i););

@for(supply:@free(x);@free(y););

end

數學模型演算法實現之Lingo求解二

這種最短路徑問題也可以用圖論 model sets cities s,a1,a2,a3,b1,b2,c1,c2,t l 定義城市集合,l i 為對應的屬性 s到城市i最短路徑 roads cities,cities a1,b1 a1,b2 a2,b1 a2,b2 a3,b1 a3,b2 b1,c1 ...

數學模型演算法實現之Dijkstra演算法

dijkstra演算法能求乙個頂點到另一頂點最短路徑。它是由dijkstra於1959年提出的。實際它能求出初始點到其它所有頂點的最短路徑。dijkstra演算法是一種標號法 給賦權圖的每乙個頂點記乙個數,稱為頂點的標號 臨時標號,稱t標 號,或者固定標號,稱為p標號 t標號表示從始頂點到該標點的最...

數學模型演算法實現之種群競爭模型

fun.m function dx fun t,x,r1,r2,n1,n2,s1,s2 r1 1 r2 1 n1 100 n2 100 s1 0.5 s2 2 dx r1 x 1 1 x 1 n1 s1 x 2 n2 r2 x 2 1 s2 x 1 n1 x 2 n2 p3.m h 0.1 所取時間...