lingo自学笔记.docx
- 文档编号:11200025
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:29
- 大小:251.39KB
lingo自学笔记.docx
《lingo自学笔记.docx》由会员分享,可在线阅读,更多相关《lingo自学笔记.docx(29页珍藏版)》请在冰豆网上搜索。
lingo自学笔记
LINGO学习笔记
(注意:
MATLABdijkstra算法在最后一例写出,在真正比赛中不要完整的复制粘贴,否则我会害了你们的!
)
一、逻辑运算符
LINGO中的辑运符有9种,可以分为两类:
(1)#AND#(与),#OR#(或),#NOD#(非),这3个运算是逻辑值之间的运算,也就是它们操作的对象本身必须已经是逻辑值或逻辑表达式.计算结果也是逻辑值;
(2)#EQ#(等于).#NE#(不等于),#GT#(大于),#GE#(大于等于),#LT#(小于).#LE#(小于等于):
这6个操作实际上是"数与数之间"的比较,也就是它们操作的对象本身必须是两个数。
表1-1运算符的优先级
优先级运算符
最高#NOT#-(负号)
^
*/
+-(减法)
#EQ##NE##GT##GE##LT##LE#
#AND##OR#
最低<=>
二、基本的数学函数
在LINGO中建立优化模型时引用大量的内部函数这些函数以"@"负号打头.
LINGO中包括相当丰富的数学函数,这些函数的用法非常简单,我们直接在下一一列出
@ABS(X);绝对值函数,返回X的绝对值
@COS(X);余弦函数,返回X的余弦值(X的单位是弧度)
@EXP(X)指数函数,返回
的值(其中e为自然对数值的底,即2.718281)
@FLOOR(X);取整函数,返回X的整数部分(向最靠近0的方向取整).
@LGM(X):
返回X的伽马(Gamma)函数的自然对数值(当X为整数时LGM(X)=LOG(X-1)!
;当X不为整数时,采用线性插值得到结果)
@LOG(X):
自然对数函数,返回自然对数值
@MOD(X,Y):
模函数,返回X对Y的取模的结果,即X除以Y的余数,这里X余Y应是整数
@POW(X,Y):
指数函数,返回
的值.
@SIGN(X):
符号函数,返回X的符号值(X<0是返回-1,X>=0时返回+1)
@SIN(X):
正弦函数,返回X的正弦值(X的单位是弧度)
@SMAX(list):
:
最大值函数,返回一列数(list)的:
最大值
@SMIN.(list):
:
最小值函数,返回一列数(list)的:
最小值
@SQR(X):
平方函数,返回X的平方即(X*X)的值
@SQRT(X):
平方根函数,返回X的平方根的值
@TAN(X);正切函数,返回X的正切值(X的单位是弧度)。
三、集合循环函数
集合循环函数是指对集合上的元素(下标)进行循环操作的函数,如前我们用过的@FOR和@SUM等,一般用法如下:
@function(setname[(set_index_list)[|condition]]:
expression_list);
其中:
function是集合函数名,是FOR,MAX,PROD,SUM五种之一;
setname是集合名;
set_index_list是集合索引列表(不需使用索引时可以省略);
condition是逻辑表达式描述的过虑条件(通常含有索引,无条件时可省略);
expression_list是一个表达式(对@FOR函数,可以是一组表达式)。
五个集合函数名的含义如下:
@FOR(集合元素循环函数):
对集合setname的每个元素独立地生成表达式,表达式由expression_list描述(通常是优化问题的约束)。
@MAX(集合属性的最大值函数):
返回集合setname上的表达式的最大值。
@MIN(集合属性的最小值函数):
返回集合setname上的表达式的最小值。
@PROD(集合属性的乘积函数):
返回集合setname上的表达式的积。
@SUM(集合属性的求和函数):
返回集合setname上的表达式的和。
四、变量定界函数
变量定界函数对变量的取值范围附加限制,共有以下四种函数:
@BND(L,X,U):
限制L<=X<=U;
@BIN(X):
即限制X为0或1;
@FREE(X):
取消对X的符号限制(即可取负数、0后正数);
@GIN(X):
限制X为整数.
例1.连续函数的最值问题
求下列函数的最大值和最小值
max=(x-x^3+y^3-y^5)*@exp(-(x^2+y^2));
@bnd(-2,x,2);
@bnd(-3,y,3);
Localoptimalsolutionfound.
Objectivevalue:
0.5186037
Infeasibilities:
0.000000
Extendedsolversteps:
5
Totalsolveriterations:
102
ModelClass:
NLP
Totalvariables:
3
Nonlinearvariables:
2
Integervariables:
0
Totalconstraints:
2
Nonlinearconstraints:
1
Totalnonzeros:
3
Nonlinearnonzeros:
2
VariableValueReducedCost
X0.4809119E-010.000000
Y-1.7288290.2356938E-08
RowSlackorSurplusDualPrice
10.51860371.000000
min=(x-x^3+y^3-y^5)*@exp(-(x^2+y^2));
@bnd(-2,x,2);
@bnd(-3,y,3);
Localoptimalsolutionfound.
Objectivevalue:
-0.5186037
Infeasibilities:
0.000000
Extendedsolversteps:
5
Totalsolveriterations:
78
ModelClass:
NLP
Totalvariables:
3
Nonlinearvariables:
2
Integervariables:
0
Totalconstraints:
2
Nonlinearconstraints:
1
Totalnonzeros:
3
Nonlinearnonzeros:
2
VariableValueReducedCost
X-0.4809120E-01-0.1040013E-07
Y1.7288290.5431772E-07
RowSlackorSurplusDualPrice
1-0.5186037-1.000000
例2.纯整数线性规划问题(PILP)
某架货机有三个货舱:
前仓、中仓、后仓。
三个货舱所能装载的货物的最大重量和体积都有限制,如表1-7所示。
为了保持飞机的平衡,三个货舱中实际装载货物的重量必须与其最大容许重量成比例。
现有四类货物供该货机本次飞行装运,其有关信息如表1-8所示,最后一列指装运后所获得的利润。
应如何安排装运,使该获机本次飞行获利最大?
请建立该问题的优化模型。
表2-1三个货舱装载货物的最大容许重量和体积
前仓
中仓
后仓
重量限制/t
10
16
8
体积限制/m³
6800
8700
5300
表2-2四类装运货物的信息
重量/t
空间/(m³/t)
利润/(元/t)
货物1
18
480
3100
货物2
15
650
3800
货物3
23
580
3500
货物4
12
390
2850
设货物i的重量为Mi,空间大小为Vi,利润为Ci,i=1,2,3,4;设前仓,中仓,后仓分别为j仓,其对重量的限制分别为LIMITMj,对体积的限制分别为LIMITVj,将货物i装载在j仓的数量为Xij,j=1,2,3;
则优化模型为:
其lingo程序为:
sets:
A/1..4/:
M,V,C;
B/1..3/:
LIMITM,LIMITV;
LINK(A,B):
X;
ENDSETS
DATA:
LIMITM=10168;
LIMITV=680087005300;
M=18152312;
V=480650580390;
C=3100380035002850;
ENDDATA
MAX=@SUM(A(I):
@SUM(B(J):
C(I)*X(I,J)));
@FOR(B(J):
@SUM(A(I):
M(I)*X(I,J))<=LIMITM(J));
@FOR(B(J):
@SUM(A(I):
V(I)*X(I,J))<=LIMITV(J));
运行结果:
Globaloptimalsolutionfound.
Objectivevalue:
8613.333
Infeasibilities:
0.000000
Totalsolveriterations:
3
ModelClass:
LP
Totalvariables:
12
Nonlinearvariables:
0
Integervariables:
0
Totalconstraints:
7
Nonlinearconstraints:
0
Totalnonzeros:
36
Nonlinearnonzeros:
0
VariableValueReducedCost
M
(1)18.000000.000000
M
(2)15.000000.000000
M(3)23.000000.000000
M(4)12.000000.000000
V
(1)480.00000.000000
V
(2)650.00000.000000
V(3)580.00000.000000
V(4)390.00000.000000
C
(1)3100.0000.000000
C
(2)3800.0000.000000
C(3)3500.0000.000000
C(4)2850.0000.000000
LIMITM
(1)10.000000.000000
LIMITM
(2)16.000000.000000
LIMITM(3)8.0000000.000000
LIMITV
(1)6800.0000.000000
LIMITV
(2)8700.0000.000000
LIMITV(3)5300.0000.000000
X(1,1)0.0000001460.000
X(1,2)0.0000001460.000
X(1,3)0.0000001460.000
X(2,1)0.66666670.000000
X(2,2)1.0666670.000000
X(2,3)0.53333330.000000
X(3,1)0.0000002326.667
X(3,2)0.0000002326.667
X(3,3)0.0000002326.667
X(4,1)0.000000190.0000
X(4,2)0.000000190.0000
X(4,3)0.000000190.0000
RowSlackorSurplusDualPrice
18613.3331.000000
20.000000253.3333
30.000000253.3333
40.000000253.3333
56366.6670.000000
68006.6670.000000
74953.3330.000000
所以最优分配方案是装载0.667吨货物2到前仓,装载1.067吨货物2到中仓,装载0.533吨货物2到后仓,可获得最大利润,最大利润为8613.33元
例3.非线性优化问题(NLP)
建筑工地的位置(用平面坐标a,b表示,距离单位:
km)及水泥日用量d(单位:
t)由表3-1给出。
目前有两个临时料场位于P(5,1),Q(2,7),日储量各有20t。
请回答以下两个问题:
(1)假设从料场到工地之间句均有直线道路相连,试制定每天的供应计划,即从A,
B两料场分别向各工地运送多少吨水泥,使总的吨公里数最小。
(2)为了进一步减少吨公里数,打算舍弃目前的两个料场,改建两个新的料场,日储
量仍各为20t,问应建在何处,与目前相比节省的吨公里数有多大。
表3-1工地的位置(ab)及水泥日用量d
1
2
3
4
5
6
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
4
7
6
11
记工地的位置为(ai,bi),水泥日用量为di,i=1,2,,6;料场位置为(xi,yi),日储量为ej,j=1,2;从料场j向工地i的运送量为.cij
决策变量:
在问题
(1)中,决策变量就是料场j向工地i的运送量cij;在问题
(2)中,决策变量除了料场j向工地i的运送量cij外,新建料场位置(xj,yj)也是决策变量。
目标函数:
这个优化问题的目标函数f是总吨公里数(运量乘以运输距离),所以优化目标可表为
(1)
约束条件:
各工地的日用量必须满足,所以
(2)
各料场的运送量不能超过日用量,所以
(3)
问题归结为在约束条件(3)、
(2)及决策变量cij非负的情况下,使目标
(1)达到最小。
(1)编写lingo程序:
sets:
a/1..6/:
horizontal,vertical,distance;
b/1,2/:
positionx,positiony;
link(a,b):
c;
endsets
data:
horizontal=1.258.750.55.7537.25;
vertical=1.250.754.7556.57.75;
distance=3547611;
positionx=52;!
分别为P,Q的横坐标;
positiony=17;!
分别为P,Q的纵坐标;
enddata
min=@sum(b(j):
@sum(a(i):
c(i,j)*@sqrt((positionx(j)-horizontal(i))^2+(positiony(j)-vertical(i))^2)));
@for(a(i):
@sum(b(j):
c(i,j))=distance(i));
@for(b(j):
@sum(a(i):
c(i,j))<=20);
运行结果:
Globaloptimalsolutionfound.
Objectivevalue:
136.2275
Infeasibilities:
0.000000
Totalsolveriterations:
1
ModelClass:
LP
Totalvariables:
12
Nonlinearvariables:
0
Integervariables:
0
Totalconstraints:
9
Nonlinearconstraints:
0
Totalnonzeros:
36
Nonlinearnonzeros:
0
VariableValueReducedCost
HORIZONTAL
(1)1.2500000.000000
HORIZONTAL
(2)8.7500000.000000
HORIZONTAL(3)0.50000000.000000
HORIZONTAL(4)5.7500000.000000
HORIZONTAL(5)3.0000000.000000
HORIZONTAL(6)7.2500000.000000
VERTICAL
(1)1.2500000.000000
VERTICAL
(2)0.75000000.000000
VERTICAL(3)4.7500000.000000
VERTICAL(4)5.0000000.000000
VERTICAL(5)6.5000000.000000
VERTICAL(6)7.7500000.000000
DISTANCE
(1)3.0000000.000000
DISTANCE
(2)5.0000000.000000
DISTANCE(3)4.0000000.000000
DISTANCE(4)7.0000000.000000
DISTANCE(5)6.0000000.000000
DISTANCE(6)11.000000.000000
POSITIONX
(1)5.0000000.000000
POSITIONX
(2)2.0000000.000000
POSITIONY
(1)1.0000000.000000
POSITIONY
(2)7.0000000.000000
C(1,1)3.0000000.000000
C(1,2)0.0000003.852207
C(2,1)5.0000000.000000
C(2,2)0.0000007.252685
C(3,1)0.0000001.341700
C(3,2)4.0000000.000000
C(4,1)7.0000000.000000
C(4,2)0.0000001.992119
C(5,1)0.0000002.922492
C(5,2)6.0000000.000000
C(6,1)1.0000000.000000
C(6,2)10.000000.000000
RowSlackorSurplusDualPrice
1136.2275-1.000000
20.000000-3.758324
30.000000-3.758324
40.000000-4.515987
50.000000-4.069705
60.000000-2.929858
70.000000-7.115125
84.0000000.000000
90.0000001.811824
最优方案:
(单位:
吨)
1
2
3
4
5
6
运送量
A
3
5
0
7
0
1
16
B
0
0
4
0
6
10
20
需求量
3
5
4
7
6
11
36
最小的总吨公里数为:
136.2275
示意图:
(2)编写lingo程序:
sets:
a/1..6/:
horizontal,vertical,distance;
b/1,2/:
positionx,positiony;
link(a,b):
c;
endsets
data:
horizontal=1.258.750.55.7537.25;
vertical=1.250.754.7556.57.75;
distance=3547611;
enddata
init:
positionx=3.254882,7.250000;
positiony=5.652333,7.750000;
endinit
min=@sum(b(j):
@sum(a(i):
c(i,j)*((positionx(j)-horizontal(i))^2+(positiony(j)-vertical(i))^2)^(1/2)));
@for(a(i):
@sum(b(j):
c(i,j))=distance(i));
@for(b(j):
@sum(a(i):
c(i,j))<=20);
@for(b:
@free(positionx);@free(positiony));
运行结果:
Localoptimalsolutionfound.
Objectivevalue:
85.26604
Infeasibilities:
0.000000
Totalsolveriterations:
124
ModelClass:
NLP
Totalvariables:
16
Nonlinearvariables:
16
Integervariables:
0
Totalconstraints:
9
Nonlinearconstraints:
1
Totalnonzeros:
40
Nonlinearnonzeros:
16
VariableValueReducedCost
HORIZONTAL
(1)1.2500000.000000
HORIZONTAL
(2)8.7500000.000000
HORIZONTAL(3)0.50000000.000000
HORIZONTAL(4)5.7500000.000000
HORIZONTAL(5)3.0000000.000000
HORIZONTAL(6)7.2500000.000000
VERTICAL
(1)1.2500000.000000
VERTICAL
(2)0.75000000.000000
VERTICAL(3)4.7500000.000000
VERTICAL(4)5.0000000.000000
VERTICAL(5)6.5000000.000000
VERTICAL(6)7.7500000.000000
DISTANCE
(1)3.0000000.000000
DISTANCE
(2)5.0000000.000000
DISTANCE(3)4.0000000.000000
DISTANCE(4)7.0000000.000000
DISTANCE(5)6.0000000.000000
DISTANCE(6)11.000000.000000
POSITIONX
(1)3.2548830.000000
POSITIONX
(2)7.250000-0.7481680E-06
POSITIONY
(1)5.6523320.000000
POSITIONY
(2)7.7500000.5438639E-06
C(1,1)3.0000000.000000
C(1,2)0.0000004.0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- lingo 自学 笔记