Lingo基本指令


Lingo主要用於求解非線性規划及一些線性和非線性方程組的求解等,功能十分強大,是求解優化模型的最佳選擇

提供有十幾個內部函數,允許決策變量是整數(即整數規划,包括0-1整數規划)

 

邏輯運算符

(通常出現於for、sum、if中)

#not# 否定該操作數的邏輯值

#eq# 若兩個運算數相等

#ne# 若兩個運算符不相等

#gt# 若左邊的運算符嚴格大於右邊的運算符

#ge# 若左邊的運算符大於或等於右邊的運算符

#lt# 若左邊的運算符嚴格小於右邊的運算符

#le# 若左邊的運算符小於或等於右邊的運算符

#and# 僅當兩個參數都為true時,結果為true

#or# 僅當兩個參數都為false時,結果為false

 

常用數學函數

@abs(x)		
@exp(x)
@sin(x)
@log(x)
@cos(x)
@tan(x) @lgm(x) 返回x的gamma函數的自然對數 @sign(x) 如果x<0則返回-1;否則返回1 @smax(x1,x2,….,xn) 返回x1,x2,….,xn中的最大值 @smin(x1,x2,….,xn) 返回x1,x2,….,xn中的最小值 @prod 求積 @floor(x) 返回x的整數部分,當x>=0時,返回不超過x的最大整數,當x<0時,返回不低於x的最大整數

 

用lingo解優化模型時默認所有變量非負

@free(x) 使得x可以取到任意實數
@gin(x) 表示讓x變量取整數
@bin(x) 表示讓x變量取0或1
@bnd(b,n,d) 表示n的取值范圍在b和d之間

 

集合

1 sets:
2 factory /1..6/ :a,b;
3 plant /1..3/ :x,y;
4 endsets

 

 

 

 

data:
a = 1,2,3,4,5,6;
b = 3,4,5,6,7,8;
x = 9,8,7;
enddata

 

 

 

@for(factory(i) : s = a(i)*x(i));

@sum(factory(i) : x(i)) = 5000;

 

 矩陣合並

 

表示C,X為6行8列

 

 1 sets:
 2 factory1 /1..6/ : a;
 3 factory2 /1..8/ : d;
 4 coor(factory1,factory2) : c,x;
 5 endsets
 6 
 7 data:
 8 a = 60,55,51,43,41,52;
 9 d = 35,37,22,32,41,32,43,38;
10 c = 6,2,6,7,4,2,5,8
11     4,9,5,3,8,5,8,2
12     5,2,1,9,7,4,3,3
13     7,6,7,3,9,2,7,1
14     2,3,9,5,7,2,6,5
15     5,5,2,2,8,1,4,3;
16 enddata
17 
18 min = @sum(coor(i,j) : c(i,j)*x(i,j));
19 @for(factory1(i) : @sum(factory2(j) : x(i,j))<=a(i));
20 @for(factory2(j) : @sum(factory1(i) : x(i,j))=d(j));
View Code

 

 

 

分段函數

x = 1500;
y = @if(x#le#500,4*x,@if(x#le#1000,500+3*x,1500+2*x));

  

 


免責聲明!

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



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