lingo1
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LINGO模型 — 例1:选址问
某公司有6题个建筑工地,位置坐标为(ai, bi) (单位:公里),
水泥日用量di (单位:吨)
i 1 2 3 45 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
d3
5
4
7
6 11
假设:料场 和工地之间 有直线道路
j 1 i1
2
s.t.
cij di , i 1,..., 6
j 1
线性规划模型
6
cij e j , j 1,2
用例中数 据计算, 最优解为
i 1
i
123456
c i1
(料场
A)
3
5
0
7
0
1
c i2
(料场
B)
0
0
4
0
6
10
总吨公里数为136.2
location1
选址问题:NLP
LINGO软件
温罗生
CUMCM历年赛题的简析
• 数学建模竞赛的规模越来越大,水平越来越高; • 竞赛的水平主要体现在赛题水平; • 赛题的水平主要体现: •(1)综合性、实用性、创新性、即时性等; •(2)多种解题方法的创造性、灵活性、开放性等; •(3)海量数据的复杂性、数学模型的多样性、求解 结果的不唯一性等。 • 纵览18年的本科组36个题目(专科组17个),从问 题的实际意义、解决问题的方法和题型三个方面作一些 简单的分析。
am1x1+am2x2+…+amnxn<b
end
m
右边是程序语言的一个比喻写法,为实现
循环结构,Lingo中引入了几个循环语句:
@for(),@sum(),@min(),@max.
为此,需要定义一个数组(向量)的结构,在Lingo中称 之为集合。表征数组的维数的量在循环中有非常重要的作 用。在Lingo中如下定义数组。
可以看到,当m的值比较大时,书写还是 感到麻烦,所以,可以考虑在利用循环实现。
要实现二重循环,并且其中可以将系数作 出一个矩阵(二维数组),所以定义
a11 L
A
L
L
am1 L
a1n
L
amn
这时矩阵A的行列数是m和n,可以看 成由向量x和b派生。
于是为得到约束条件,可以如下的定义集合段 和约束部分。
j 1
非线性规划模型
6
cij e j , j 1,2
i 1
location2
LINGO模型的构成:4个段
集合段(SETS ENDSETS)
数据段(DATA ENDDATA)
LP:移到数据段
初始段(INIT ENDINIT) 目标与 约束段
局部最优:82.2661(吨公里 )
边界
例2:最短路问题
对于约束,可以类似的处理如下:
集合部分:
sets:
cargo/1..n/:c,x,a1,a2,…,am;
rhs/1..m/:b;
endsets 程序部分:
@sum(cargo(i):a1(i)*x(i))<b(1);
@sum(cargo(i):a2(i)*x(i))<b(2);
…
…
@sum(cargo(i):am(i)*x(i))<b(m);
当问题的规模很大时,直接输入的方法 表达最优化问题显得非常不方便甚至是致 命的。主要的原因是所含的变量和约束个 数太多。另一方面,规划问题本身很有规 律,所以我们希望使用循环来实现。引入 如下的两个数组(或者向量),
c=(c1,c2,…,cn),
x=(x1,x2,…,xn), b=(b1,b2,…,bm),
match( j, k) {0,1}
• @ABS( X)
• This returns the absolute value of X.
• @COS( X)
• This returns the cosine of X, where X is an angle in radians.
• @EXP( X)
2,Lingo程序的结构和语法
一个规划问题,包括下面的一些内容:变量、常量、目标、约束。 还是以前面的例子,说明最基本的程序构成。 model: sets:
cargo/1..n/:c,x; rhs/1..m/:b; mat(rhs,cargo):a; endsets data: c=2,3; b=2,0.5; A=1,1,1,-2; enddata max=@sum(cargo(i):c(i)*x(i)); @for(rhs(j):@sum(cargo(i):a(j,i)*x(i))<b(j)); end
• This returns e (2.718281...) raised to the power X.
• @FLOOR( X)
• This returns the integer part of X. To be specific, if X >0, @FLOOR returns the largest integer, I, such that I <X. If X is negative, @FLOOR returns the most negative integer, I, such that I >X.
CUMCM历年赛题的简析
CUMCM 的历年和优化相关的赛题浏览:
•1994年:(A)山区修建公路的设计造价问题(西电大:何大可) • (B)锁具的制造、销售和装箱问题(复旦:谭永基等) •1995年:(A)飞机的安全飞行管理调度问题(复旦:谭永基等) • (B)天车与冶炼炉的作业调度问题(浙大:刘祥官等)
sets: setname/下标起数..下标止数/:数组名; endsets 比如,要实现前面例子的目标函数部分,只要写如下 的代码: 集合段部分:
sets: cargo/1..2/:c,x; endsets 目标函数段:
max=@sum(cargo(i):c(i)*x(i)); 其中i为循环变量,cargo指出循环变量变化的范围。
目标函数为:benefit(si,sj)*match(si,sj)对i,j求 和;约束条件为每个同学只能在某一组。得到规 划问题:
min
s.t.
benefit(i, j) * match(i, j)
i j
match( j, k) 1,i 1, 2,3, 4
ji或k i
从这个例子得到的知识有:顶点的编号;
产生边集(稀疏图);动态规划的思想; 循环语句的使用。
程序中出现了“i #GT# 1:”在循环语句 中,这实际上是常见的,也就是我们希望 对满足条件的执行循环,否则不执行,称 之为逻辑语句。
运算符的优先级
三类运算符:
算术运算符
逻辑运算符 关系运算符
优先级 运算符
CUMCM历年赛题的简析
CUMCM的历年和优化相关的赛题浏览:
•1996年:(A)最优捕鱼策略问题(北师大:刘来福) • (B)节水洗衣机的程序设计问题(重大:付鹂) •1997年:(A)零件参数优化设计问题(清华:姜启源) • (B)金刚石截断切割问题(复旦:谭永基等) •1998年:(A)投资的收益和风险问题(浙大:陈淑平) • (B)灾情的巡视路线问题(上海海运学院:丁颂康) •1999年:(A)自动化机床控制管理问题(北大:孙山泽) • (B)地质堪探钻井布局问题(郑州大学:林诒勋)
最高 #NOT# —(负号)
^
*/
+ —(减法)
#EQ# #NE# #GT# #GE# #LT# #LE#
最低
#AND# #OR# <(=) = >(=)
例3:匹配问题(说明逻辑运算符)
某班8名同学准备分成4个调查队(每队两人) 前往四个地区进行社会调查,假设这8位同学 两两之间组队的效率如表所示(由于对称性, 只列出严格上三角部分),问如何组队可以使 总效率最高?
前面是两个循环语句的用法,函数以 “@”开头,里面是循环变量以及界定循环 变量的变化范围,后面是循环体。还有另 外的两个循环函数:@min和@max,其用 法相类似。
从一维数组派生二维数组在数学上是常 用的,比如运输问题,由顶点集可以派生 边,大家可以使用本方法产生标准的运输 问题的Lingo程序。可以参考例子。
1,Lingo怎样表示优化问题
线性规划是优化方法中最基本,也是最重要
的,最根本的原因是模型的规范性以及求解的高 效率。其最基本的形式如下:
min
s.t.
c1x1 c2 x2 L cn xn a11x1 a12 x2 L a1n xn b1
M
am1x1 am2 x2 L amn xn bm x1, x2 ,L , xn 0
•2006年:(A)出版社的资源管理问题(北工大:孟大志)
•2007年:(B)“乘公交,看奥运”问题(吉大:方沛辰,
•
国防科大:吴孟达)
•2009年:(B)眼科病床的合理安排问题(国防科大:吴孟达)
•2011年:(B)交巡警服务平台的设置与调度
CUMCM历年赛题的简析
• 最多的是优化方法和概率统计的方法. • 优化方法共25个题,占总数的66.7%,其中整 数规划4个,线性规划6个,非线性规划15个,多目 标规划7个。 • 概率统计方法18个题,占50%,平均每年至少 有一个题目用到概率统计的方法。 • 插值与拟合方法有7个; • 图论与网络优化方法有7个; • 综合评价方法至少有6个;
CUMCM历年赛题的简析
CUMCM的历年和优化相关的赛题浏览:
•2000年: (B)钢管的订购和运输问题(武大:费甫生) •2001年: (B)公交车的优化调度问题(清华:谭泽光) •2002年: (A)汽车车灯的优化设计问题(复旦:谭永基等) •2003年:(B)露天矿生产的车辆安排问题(吉林大:方沛辰) •2004年:(A)奥运会临时超市网点设计问题(北工大:孟大志) • (B)电力市场的输电阻塞管理问题(浙大:刘康生) •2005年:(B)DVD在线租赁问题(清华大学:谢金星等)
集合部分: sets: cargo/1..n/:c,x; rhs/1..m/:b; mat(rhs,cargo):a; endsets
程序部分: @for(rhs(j):@sum(cargo(i):a(j,i)*x(i))<b(j));
j为循环变量,rhs指出需要循环的次数。
从上面的例子大家看出引入集合的作用 以及基本的用法,下面的部分给出Lingo的 整体结构和更复杂的例子。
s1
s2
s3
s4
s5
s6
s7
s8
s1
9
3
4
2
1
5
6
s2
1
7
3
5
2
1
s3
4
4
2
9
2
s4
1
5
5
2
s5
8
7
6
s6
2
3
s7
4
match
将效率矩阵记为benefit,用match(si,sj)=1表示同学 si和同学sj组成一个队,而match(si,sj)=0表示不 组队,由对称性,只考虑i<j共28个0-1变量。
上面讲到图的问题,但是实际中的图往
往是稀疏图,这样的问题尽管可以用前面
的方法处理,但是计算量往往非常的大,
是不实际的。下面讲由顶点集派生边集的
例子。
6
S 3 3
A1
6
5
8
A2
6
7
A3
4
6 B1
7
8
B2
9
C1
5
T
6 C2
shortestpath
前图是有九个顶点组成的图,连线代表
顶点之间的边,其上的数字代表边的长度。 要求得到所有顶点到顶点T的最短距离。分 析Lingo程序。
2)改建两个新料场,需要确定新料场位置(xj,yj)和 运量cij ,在其它条件不变下使总吨公里数最小。
26
mi n
cij [(x j ai )2 ( y j bi )2 ]1/ 2 决策变量:
j 1 i1
ci j,(xj,yj)~16维
2
s.t.
cij di , i 1,..., 6
CUMCM历年赛题的简析
CUMCM的历年和优化相关的赛题浏览:
•2003年:(B)露天矿生产的车辆安排问题(吉林大:方沛辰)
•2004年:(A)奥运会临时超市网点设计问题(北工大:孟大志)
• (B)电力市场的输电阻塞管理问题(浙大:刘康生)
•2005年:(B)DVD在线租赁问题(清华大学:谢金星等)
1)现有 2 料场,位于 A (5, 1), B (2, 7), 记(xj,yj),j=1,2, 日储量 ej 各有 20 吨。
目标:制定每天的供应计划,即从 A, B 两料场分别向
各工地运送多少吨水泥,使总的吨公里数最小。
决策变量:ci j (料场j到工地i的
运量)~12维
26
mi n
cij [(x j ai )2 ( y j bi )2 ]1/ 2
我们可以得到下面的对应关系
c1x2+c2x2+…+cnxn
s=0 for i=1:n
s=s+c(i)*x(i) end
a11x1+a12x2+…+a1nxn<b1
for i=1:m for j=1:n
ቤተ መጻሕፍቲ ባይዱ
a21x1+a22x2+…+a2nxn<b2
。。。
。。。
s(i)=s(i)+a(i,j)*x(j) end s(i)<b(i)