用Lingo求解整数(0-1)规划模型.
0-1规划在各种实际问题中的应用以及lingo求解
61 65 63 62
63 71 67 62
分析
• 以混合泳所用总时间最小为目标,以 每名运动员只游一个项目,每个项目 只能由一名运动员来完成为约束,这 就是标准的分派问题.
• 目标函数: min z
a
i 1 j 1
4
4
ij
xij
4 x ij 1 i 1 4 • 约束条件: s .t . x ij 1 j 1 x 0或1 ij
指标 厂址
投资金额 处理能力 处理能力 (万元) (万t/年) (元/万t)
污水处理指标(t/万t) 污染物Ⅰ 污染物Ⅱ
厂址A 厂址B 厂址C
400 300 250
800 500 400
300 300 400
80 50 40
60 40 50
• 设xi表示i(i=1,2,3)污水厂处理污水的数量(万t),yi (i=1,2,3)表示是否建立i污水厂.
各人完成各项目的时间
项目 人员
A
B
C
D
E
甲 乙 丙 丁
25 39 34 24
29 38 27 42
31 26 28 36
42 20 40 23
37 33 32 45
• 设xij表示第i个人完成第j项任务 • (1)由于任务大于人数,因此增加一个完成人 戊,完成多出的一个任务. • 而实际上,戊所完成的任务并不是正真的任 务,只是为了构造指派问题模型.所以戊完成 各任务的时间就均为0(除了任务E). • 戊不需要完成任务E,x55对应的系数为M(很 大的数,取1000),以保证x55=0 • 各人完成任务所需时间的如下表:
姿势 成绩 队员
自由泳
Lingo的应用实例
Lingo应用——旅游路线最短问题题目:从北京乘飞机到东京、纽约、墨西哥城、伦敦、巴黎五个城市做旅游,每个城市去且仅去一次,再回到东京,问如何安排旅游线路,使总旅程最短。
各城市之间的航线距离如下表:运用lingo软件求解模型建立前问题分析:1.这是一个求路线最短的问题,题目给出了两两城市之间的距离,而在最短路线中,这些城市有的两个城市是直接相连接的(即紧接着先后到达的关系),有些城市之间就可能没有这种关系,所以给出的两两城市距离中有些在最后的最短路线距离计算中使用到了,有些则没有用。
这是一个0-1规划的问题,也是一个线性规划的问题。
2.由于每个城市去且仅去一次,最终肯定是形成一个圈的结构,这就导致了这六个城市其中有的两个城市是直接相连的,另外也有两个城市是不连接的。
这就可以考虑设0-1变量,如果两个城市紧接着去旅游的则为1,否则为0。
就如同下图实线代表两个城市相连为1,虚线代表没有相连为03. 因为每个城市只去一次,所以其中任何一个城市的必有且仅有一条进入路线和一条出去的路线。
求解:为了方便解题,给上面六个城市进行编号,如下表(因为北京是起点, 将其标为1)假设:设变量x ij 。
如果x ij =1,则表示城市i 与城市j 直接相连(即先后紧接到达关系),否则若x ij =0,则表示城市i 与城市j 不相连。
特别说明:x ij 和x ji 是同一变量,都表示表示城市i 与城市j 是否有相连的关系。
这里取其中x ij (I<j)的变量。
模型建立:由于这是一个最短路线的问题,且变量已经设好。
目标函数:min z=51*x12+78*x13+68*x14+51*x15+13*x16+56*x23+35*x24+21*x25+60*x26+21*x34+57*x35+70*x36+36*x45+68*x46+61*x56约束条件:1. 上面目标函数中的变量是表示两个城市是否直接相连接的关系,且最短路线是可以形成圈的,如下图实线代表两个城市相连为1,虚线代表没有相连为0如上图城市a和城市b有直接相连接的关系,所以之间变量为1,而城市a 与城市e则没有直接相连接的关系,之间变量为0。
Lingo求解简单规划模型代码
一、Lingo 能做什么——Lingo 的简单模型1、简单线性规划求解(目标函数)2134maxx x z += s.t.(约束条件)⎪⎪⎩⎪⎪⎨⎧≥≤≤+≤+0,781022122121x x x x x x x(决策变量) x 1,x 2手工计算的方法注:Lingo 中“<”代表“<=”,“>”代表“>=”,Lingo 中默认的变量都是大于等于0的,不用显式给出。
求解结果:z=26,x1=2,x2=62、整数规划求解219040Max x x z += ⎪⎩⎪⎨⎧≥≤+≤+0,702075679212121x x x x x xLingo 程序求解3、0-1规划求解Max 432215.18.04.0x x x x f +++=10106234321≤+++x x x x10,,,4321或=x x x x12344、非线性规划求解||4||3||2||min 4321x x x x z +−−=s.t. ⎪⎪⎩⎪⎪⎨⎧−=+−−=−+−=+−−2132130432143214321x x x x x x x x x x x x12345、背包问题一个旅行者的背包最多只能装 6kg 物品,现有4 件物品的重量和价值分别为 2 kg ,3 kg ,3 kg ,4 kg ;1 元,1.2元,0.9元,1.1元。
问应怎样携带那些物品使得携带物品的价值最大?建模:记j x 为旅行者携带第j 件物品的件数, 取值只能为 0 或 1。
求目标函数43211.19.02.1x x x x f +++=在约束条件643324321≤+++x x x x 下的最大值.用Lingo 软件求解0-1规划计算结果6、指派问题有四个工人,要指派他们分别完成4项工作,每人做各项工作所消耗的时间如下表: 问指派哪个人去完成哪项工作,可使总的消耗时间为最小? 设:第i 个工人做第j 项工作用时ij t ,标志变量ij f 定义如下:变量名 取值⎩⎨⎧=其他件工作个工人去做第指派第01j i f ijmin∑∑==×4141i j ij ijt fs.t. 141=∑=i ijf()4,3,2,1=j 每份工作都有一人做∑==411j ijf()4,3,2,1=i 每人都只做一项工作(1) 集合定义部分(从“SETS :”到“ENDSET ”):定义集合及其属性,语句“work/A,B,C,D/”其结果正是定义了4个集合元素,没有定义变量名。
LINDO软件求线性规划、整数规划和0-1规划
LINDO软件求线性规划、整数规划和0-1规划LINDO软件简介/求解线性规划问题LINDO是⼀种专门⽤于求解数学规划问题的软件包。
由于LINDO执⾏速度很快、易于⽅便输⼊、求解和分析数学规划问题。
因此在数学、科研和⼯业界得到⼴泛应⽤。
LINDO/GO主要⽤于解线性规划、⾮线性规划、⼆次规划和整数规划等问题。
也可以⽤于⼀些⾮线性和线性⽅程组的求解以及代数⽅程求根等。
LINDO/GO中包含了⼀种建模语⾔和许多常⽤的数学函数(包括⼤量概论函数),可供使⽤者建⽴规划问题时调⽤。
⼀般⽤LINDO(Linear Interactive and Discrete Optimizer)解决线性规划(LP—Linear Programming)。
整数规划(IP—Integer Programming)问题。
其中LINDO 6 .1 学⽣版⾄多可求解多达300个变量和150个约束的规划问题。
其正式版(标准版)则可求解的变量和约束在1量级以上。
LINGO则⽤于求解⾮线性规划(NLP—NON—LINEAR PROGRAMMING)和⼆次规则(QP—QUARATIC PROGRAMING)其中LINGO 6.0学⽣版最多可版最多达300个变量和150个约束的规则问题,其标准版的求解能⼒亦在10^4量级以上。
虽然LINDO和LINGO 不能直接求解⽬标规划问题,但⽤序贯式算法可分解成⼀个个LINDO和LINGO能解决的规划问题。
要学好⽤这两个软件最好的办法就是学习他们⾃带的HELP⽂件。
下⾯拟举数例以说明这两个软件的最基本⽤法。
(例⼦均选⾃张莹《运筹学基础》)例1.(选⾃《运筹学基础》P54.汽油混合问题,线性规划问题)⼀种汽油的特性可⽤两个指标描述:其点⽕性⽤“⾟烷数”描述,其挥发性⽤“蒸汽压⼒”描述。
某炼油⼚有四种标准汽油,设其标号分别为1,2,3,4,其特性及库存量列于下表1中,将上述标准汽油适量混合,可得两种飞机汽油,某标号为1,2,这两种飞机汽油的性能指标及产量需求列于表2中。
数学建模精讲_西南交通大学中国大学mooc课后章节答案期末考试题库2023年
数学建模精讲_西南交通大学中国大学mooc课后章节答案期末考试题库2023年1.Lingo软件是常用的优化问题的求解软件。
参考答案:正确2.0-1规划是整数规划。
参考答案:正确3.求解整数规划一定能得到最优解。
参考答案:错误4.整数规划是指规划问题中的全部变量限制为整数。
参考答案:错误5.所有决策变量均要求为整数的整数规划称为纯整数规划。
参考答案:正确6.整数规划与线性规划不同之处在于增加了整数约束。
参考答案:正确7.分枝定界法是整数规划的常见算法。
参考答案:正确8.原线性规划有最优解,当自变量限制为整数后,其整数规划也一定有最优解。
参考答案:错误9.整数规划最优解常可以按照实数最优解简单取整而获得。
参考答案:错误10.与线性规划连续的可行域不同,整数规划的可行域是离散的。
参考答案:正确11.整数规划由于限制变量是整数,增加了求解难度,但整数解是有限个,所以有时候可以采用枚举法。
参考答案:正确12.非线性规划已经有一般的适合所有问题的成熟的解法。
参考答案:错误13.非线性规划的局部最优解和全局最优解等价。
参考答案:错误14.多目标规划的目标函数多于1个。
参考答案:正确15.非线性规划是指规划模型的目标函数或者约束条件中至少有一个为非线性表达式。
参考答案:正确16.多目标规划的解法包括分枝定界法,单纯形法。
参考答案:错误17.根据地球上任意两点的经纬度就可以计算这两点间的距离。
参考答案:正确18.如果可能,把非线性规划转换为线性规划是非常好的一个思路,原因是线性规划有比较成熟的算法。
参考答案:正确19.Lingo软件求解非线性规划的结果都是全部最优解。
参考答案:错误20.求解多目标规划的线性加权和法,在确定权系数之前,一般要对目标函数值做统一量纲处理,其目的是避免出现大数吃小数、权系数失去其作用的问题。
参考答案:正确21.哥尼斯堡七桥问题由欧拉证明了是可以走通的。
参考答案:错误22.“健康中国2030”规划纲要其中一项主要指标是将我国人均预期寿命提升至79岁左右。
用LINGO求解整数规划
用LINGO求解整数规划在LINGO中,输入总是以model:开始,以end结束;中间的语句之间必须以“;”分开;LINGO不区分字母的大小写;目标函数用MAX=…;或MIN=…;给出(注意有等号“=”)。
在LINDO中所有的函数均以“@”符号开始,如约束中@gin(x1)表示x1为整数,用@bin(x1)表示x1为0-1整数。
在现在的LINDO中,默认设置假定所有变量非负。
函数中变量的界定:@GIN(X):限制X为整数@BIN(X):限定变量X为0 或1。
@FREE(X):取消对x的符号限制(即可取任意实数包括负数)@BND(L,X,U):限制L<= X <= ULINGO提供了大量的标准数学函数:@abs(x)???????????? 返回x的绝对值@sin(x)???????????? 返回x的正弦值,x采用弧度制@cos(x)???????????? 返回x的余弦值@tan(x)???????????? 返回x的正切值@exp(x)???????????? 返回常数e的x次方@log(x)???????????? 返回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中的最小值例1:整数规划模型在LINGO中可以如下输入:model:Max=5*x1+8*x2;!*号不能省略x1+x2<=6;!约束条件和目标函数可以写在model:与end之间的任何位置5*x1<=45-9*x2;@gin(x1);@gin(x2); !和LINDO不同,不能写在end之后end运行后同样得到最优解为x1=0,x2=5,最优值为40。
例2:在线性规划中的应用max Z =5X1+3X2+6X3,s.t.X1 +2 X2 + X3 ≤182 X1 + X2 +3 X3 =16X1 + X2 + X3 =10X1 ,X2 ≥0 , X3 为自由变量应用LINGO 来求解该模型,只需要在 lingo窗口中输入以下信息即可:max=5*x1+3*x2+6*x3;x1+2*x2+x3<=18;2*x1+x2+3*x3=16;x1+x2+x3=10;@free(x3);然后按运行按钮,得到模型最优解,具体如下:Objective value: 46.00000Variable Value Reduced Costx1 14.00000 0.000000x2 0.000000 1.000000x3 -4 .000000 0.000000由此可知,当 x1 =14 , x2 =0 , x3 =-4 时,模型得到最优值,且最优值为 46。
基于01规划的数学模型设计
基于01规划的数学模型设计01规划是一种常见的数学规划方法,广泛应用于各种优化问题中。
它是一种整数规划方法,主要解决的是在给定条件下,如何最优地分配资源,或者是最大化或最小化一个目标函数。
本文将介绍基于01规划的数学模型设计。
01规划的数学模型通常可以表示为以下形式:max z = f(x1, x2,..., xn)s.t. ci(x1, x2,..., xn) ≤ 0, i = 1, 2,..., mx1, x2,..., xn ∈ {0,1}其中,z为目标函数,x1, x2,..., xn为决策变量,ci(x1, x2,..., xn)为约束条件,且ci(x1, x2,..., xn) ≤ 0表示该约束条件是一个不等式约束。
x1, x2,..., xn ∈ {0,1}表示决策变量只能是0或1。
求解01规划的方法有很多种,其中比较常用的有:穷举法:对于小规模的问题,可以通过穷举所有可能的解,然后选择最优的解。
分支定界法:对于大规模的问题,可以通过分支定界法来求解。
该方法的基本思想是将问题分解为若干个子问题,然后逐个求解。
在求解的过程中,可以不断剪枝,从而缩小问题的搜索空间。
智能算法:对于一些复杂的问题,可以通过智能算法来求解。
例如遗传算法、蚁群算法等。
这些算法可以模拟生物进化、社会行为等自然现象,从而寻找到最优解。
01规划的应用非常广泛,例如在生产计划、资源分配、物流运输等领域都有广泛的应用。
例如,在生产计划中,可以通过01规划来优化生产线的配置,从而提高生产效率。
在资源分配中,可以通过01规划来优化资源的分配方式,从而提高资源的利用效率。
在物流运输中,可以通过01规划来确定最佳的运输路径和运输方式,从而提高物流效率。
基于01规划的数学模型设计是一种非常有用的数学工具,它可以解决各种优化问题。
在实际应用中,需要根据具体问题来选择合适的求解方法,从而得到最优的解决方案。
随着城市的发展,高层建筑物越来越普遍,而随之而来的是疏散路径的优化问题。
LINGO语言与0-1混合整数规划选址模型的再结合
LINGO语言与0-1混合整数规划选址模型的再结合随着信息技术的不息进步,计算机在解决复杂问题方面的作用越来越重要。
特殊是在生产、物流、规划等领域,计算机的运用已经成为提高效率和优化资源配置的关键。
在这一背景下,LINGO语言和0-1混合整数规划选址模型的结合应运而生,旨在通过LINGO语言的优势和0-1混合整数规划选址模型的精确性,更好地解决选址问题。
LINGO语言是一种基于高层次的数学和逻辑编程语言,它具有强大的求解能力和灵活的编程特性。
LINGO语言可以将复杂的数学模型转化为计算机可以理解和求解的形式,大大简化了数学模型的表达和求解过程。
同时,LINGO语言还提供了丰富的算法库,可以用于求解各种数学模型。
这些特点使得LINGO语言成为了解决复杂问题的抱负工具。
0-1混合整数规划选址模型是一种常用的选址问题求解方法。
选址问题是指在一定的约束条件下,确定一些点或区域中的最佳(或次佳)位置。
该模型涉及在给定的候选位置中选择一些位置以最大化(或最小化)某个目标函数。
而0-1混合整数规划则是在候选位置是否被选择的问题上引入了0-1变量,使得问题更靠近实际状况。
通过将选址问题转化为0-1混合整数规划问题,并利用LINGO语言的求解能力进行求解,能够得到选址问题的最优解。
详尽而言,可分为以下几个步骤。
起首,需要确定选址问题的目标函数和约束条件。
目标函数可以是最大化产出、最小化成本、最小化距离等,而约束条件可以包括资源限制、市场需求等。
然后,将选址问题转化为数学模型并使用LINGO语言进行表达。
LINGO语言的丰富函数库可以用来处理各类约束和目标函数。
接下来,利用LINGO语言提供的求解器对模型进行求解。
LINGO的求解器可以接受多种算法,如整数规划、线性规划等,从而得到选址问题的最优解。
最后,对求解结果进行分析和优化。
若果求解结果符合实际需求,那么可以直接应用于实际问题中;若果不符合实际需求,还可以通过调整模型的参数或目标函数等方式进行优化。
数学建模必备LINGO在多目标规划和最大最小化模型中的应用
数学建模必备LINGO 在多目标规划和最大最小化模型中的应用一、多目标规划的常用解法多目标规划的解法通常是根据问题的实际背景和特征,设法将多目标规划转化为单目标规划,从而获得满意解,常用的解法有:1.主要目标法确定一个主要目标,把次要目标作为约束条件并设定适当的界限值。
2.线性加权求和法对每个目标按其重要程度赋适当权重0≥i ω,且1=∑ii ω,然后把)(x f i ii ∑ω作为新的目标函数(其中p i x f i ,,2,1),( =是原来的p 个目标)。
3.指数加权乘积法设p i x f i ,,2,1),( =是原来的p 个目标,令∏==pi a i ix f Z 1)]([其中i a 为指数权重,把Z 作为新的目标函数。
4.理想点法先分别求出p 个单目标规划的最优解*i f ,令∑-=2*))(()(iifx f x h然后把它作为新的目标函数。
5.分层序列法将所有p 个目标按其重要程度排序,先求出第一个最重要的目标的最优解,然后在保证前一个目标最优解的前提条件下依次求下一个目标的最优解,一直求到最后一个目标为止。
这些方法各有其优点和适用的场合,但并非总是有效,有些方法存在一些不足之处。
例如,线性加权求和法确定权重系数时有一定主观性,权重系数取值不同,结果也就不一样。
线性加权求和法、指数加权乘积法和理想点法通常只能用于两个目标的单位(量纲)相同的情况,如果两个目标是不同的物理量,它们的量纲不相同,数量级相差很大,则将它们相加或比较是不合适的。
二、最大最小化模型在一些实际问题中,决策者所期望的目标是使若干目标函数中最大的一个达到最小(或多个目标函数中最小的一个达到最大)。
例如,城市规划中需确定急救中心的位置,希望该中心到服务区域内所有居民点的距离中的最大值达到最小,称为最大最小化模型,这种确定目标函数的准则称为最大最小化原则,在控制论,逼近论和决策论中也有使用。
最大最小化模型的目标函数可写成)}(,),(),(max{min 21X f X f X f p X或)}(,),(),(min{max 21X f X f X f p X式中T n x x x X ),,,(21 是决策变量。
最短路径问题的0-1规划模型,lingo直接求解
解:对于无向图的最短路问题,可以这样理解,从点到点和点到点的边看成有向弧,其他各条边均看成有不同方向的双弧,因此,可以按照前面介绍有向图的最短路问题来编程序,但按照这种方法编写LINGO程序相当于边(弧)增加了一倍.这里选择邻接矩阵和赋权矩阵的方法编写LINGO程序.MODEL:1] sets:2] cities/1..11/;3] roads(cities, cities): p, w, x;4] endsets5] data:6] p = 0 1 1 1 0 0 0 0 0 0 07] 0 0 1 0 1 0 0 0 0 0 08] 0 1 0 1 1 1 1 0 0 0 09] 0 0 1 0 0 0 1 0 0 0 010] 0 1 1 0 0 1 0 1 1 0 011] 0 0 1 0 1 0 1 0 1 0 012] 0 0 1 1 0 1 0 0 1 1 013] 0 0 0 0 1 0 0 0 1 0 114] 0 0 0 0 1 1 1 1 0 1 115] 0 0 0 0 0 0 1 0 1 0 116] 0 0 0 0 0 0 0 0 0 0 0;17] w = 0 2 8 1 0 0 0 0 0 0 018] 2 0 6 0 1 0 0 0 0 0 019] 8 6 0 7 5 1 2 0 0 0 020] 1 0 7 0 0 0 9 0 0 0 021] 0 1 5 0 0 3 0 2 9 0 022] 0 0 1 0 3 0 4 0 6 0 023] 0 0 2 9 0 4 0 0 3 1 024] 0 0 0 0 2 0 0 0 7 0 925] 0 0 0 0 9 6 3 7 0 1 226] 0 0 0 0 0 0 1 0 1 0 427] 0 0 0 0 0 0 0 9 2 4 0;28] enddata29] n=@size(cities);30] min=@sum(roads:w*x);31] @for(cities(i) | i #ne# 1 #and# i #ne# n:32] @sum(cities(j): p(i,j)*x(i,j))33] =@sum(cities(j): p(j,i)*x(j,i)));34] @sum(cities(j): p(1,j)*x(1,j))=1;END在上述程序中,第6]行到第16]行给出了图的邻接矩阵,到和到的边按单向计算,其余边双向计算.第17]行到第27]行给出了图的赋权矩阵, 注意:由于有了邻接矩阵,两点无道路连接时,权值可以定义为0. 其它的处理方法基本上与有向图相同.用LINGO 软件求解,得到(仅保留非零变量)Global optimal solution found at iteration: 2 0Objective value: 13.00000Variable Value Reduced Cost X( 1, 2) 1.000000 0.000000X( 2, 5) 1.000000 0.000000X( 3, 7) 1.000000 0.000000X( 5, 6) 1.000000 0.000000X( 6, 3) 1.000000 0.000000X( 7, 10) 1.000000 0.000000X( 9, 11) 1.000000 0.000000X( 10, 9) 1.000000 0.000000即最短路径为最短路长度为13.1 2 5 6 3 7 10 11。
用Lingo软件编程求解规划问题解决方案
Lingo软件具有直观易用的界面,提供丰富的函数库和求解算法, 能够高效地求解大规模复杂规划问题。
Lingo软件应用
Lingo软件被广泛应用于各个领域的规划问题求解,如金融、物流、 制造等。
解决方案目标与意义
解决方案目标
通过Lingo软件编程求解规划问题, 旨在获得满足约束条件的最优解,使 得目标函数达到最优。
要点三
推动软件升级和普及
Lingo软件作为一款优秀的数学规划 求解工具,未来可以进一步推动其升 级和普及工作。例如,可以增加更多 实用的功能、提高软件的易用性和稳 定性等,以吸引更多的用户使用该软 件解决规划问题。
THANKS
感谢观看
Lingo编程环境介绍
Lingo是一款专门用于求解线性、非线性和整数规划问题的软件,它提供了一个直观易用的编程环境。
Lingo支持多种类型的数学模型,如线性规划、目标规划、整数规划等,并内置了大量的函数和算法, 方便用户快速构建和求解模型。
Lingo还提供了丰富的数据输入/输出功能,支持Excel、数据库等多种数据格式,方便用户进行数据处理 和分析。
结果分析
根据求解结果,分析每种产品的生产量是否符合预期,并评估总成本是否达到最小化。 同时,可以对不同方案进行比较,选择最优方案。
敏感性分析
通过改变某些参数或约束条件,观察求解结果的变化,以评估方案的稳定性和可行性。
06
总结与展望
研究成果总结
成功构建了规划问题的数学模型
通过深入研究规划问题的本质,我们成功构建了能够准确 描述问题的数学模型,为后续的求解工作奠定了坚实的基 础。
学习和使用。
02
Lingo语言基本语法
学习Lingo语言的基本语法和规则,如变量定义、函数定义、约束条件
Lingo软件在求解数学优化问题的使用技巧
3*x3+2*y3+z3<=375;
END
得到的解如下:
X1=200,Y1=0,Z1=0;
X2=58.33333, Y2=312.5,Z2=0;
X3=0,Y3=187.5,Z3=0;
最大总净收益为253333.3元。
3.公司在各地有4项业务,选定了4位业务员去处理。由于业务能力、经验和其它情况不同,4业务员去处理4项业务的费用(单位:元)各不相同,见下表:
常见的集合函数如下:
@FOR(set_name:constraint_expressions)对集合(set_name)的每个元素独立地生成约束,约束由约束表达式(constraint_expressions)描述。
@MAX(set_name:expression)返回集合上的表达式(expression)的最大值。
=
返回如下情形下的净现值:单位时段利率为 ,第 个时段支付单位费用,即:
=
(5)概率函数
@PSN(X)标准正态分布的分布函数。
@PSL(X)单位正态线性损失函数(即返回 的期望值,其中Z为标准正态随机变量)
@PPS(A,X)均值为A的Possion分布的分布函数(当X不是整数时,采用线性插值进行计算)。
(4)初始化部分(INIT):这部分以“INIT:”开始,以“END INIT”结束。作用在于对集合的属性(数组)定义初值。格式为:attribute=value_list。由于非线性规划求解时,通常得到的是局部最优解,而局部最优解受输入的初值影响。通常可改变初值来得到不同的解,从而发现更好的解。
编写LINGO程序要注意的几点:
@PPL(X)Possion分布的线性损失函数(即返回 的期望值,其中Z为Possion分布随机变量)
典型的整数线性规划问题一、背包问题有一徒步旅行者要带一背包,设
方法3: 化为非线性规划 x1=0 或 ≥80 x2=0 或 ≥80 x3=0 或 ≥80
温州大学城市学院
x1( x1 − 80) ≥ 0 x2( x2 − 80) ≥ 0
x3(x3 − 80) ≥ 0
求解结果为:
Local optimal solution found. Objective value: Extended solver steps: Total solver iterations:
610.0000 4
366
Variable X1 X2 X3
Value 80.00000 150.0000 0.000000
例 2 混合泳接力队的选拔
温州大学城市学院
5名候选人的百米成绩
蝶泳 仰泳 蛙泳 自由泳
甲 1’06”8 1’15”6 1’27” 58”6
乙 57”2 1’06” 1’06”4 53”
1.5
x1
+
3 x2
+
5 x3
≤
600
280
x1
x1, x2 ,
+ 250x2 + 400x3 x3 为非负整数≤Fra bibliotek60000
IP 结果输出
Global optimal solution found. Objective value: Extended solver steps: Total solver iterations:
x1=80, x2= 150, x3=0, 最优值 z=610
温州大学城市学院 • 若生产某类汽车, 则至少生产80辆, 求生产计划.
方法2: 引入0-1变量, 化为整数规划
x1=0 或 ≥80
lingo简介
• 线性规划(LP) 目标和约束均为线性函数 • 非线性规划(NLP) 目标或约束中存在非线性函数 二次规划(QP) 目标为二次函数、约束为线性 • 整数规划(IP) 决策变量(全部或部分)为整数 整数线性规划(ILP),整数非线性规划(INLP) 纯整数规划(PIP), 混合整数规划(MIP) 一般整数规划,0-1(整数)规划
查看结论
验证二
min 2 x1 3 x2 x1 x2 350 x 100 1 2 x1 x2 601 x1 , x2 0
查看结论
Lingo-1.2
s .t .
验证三
Lingo-1.3
min
2 x1 3 x2 x1 x2 350 x 101 1 2 x1 x2 600 x1 , x2 0
使用LINGO编程注意事项
7、行中注有“!‖符号的后面部分为注释。如: ! It’s Comment. 8.在模型的任何地方都可以用“TITLE‖ 对模型 命名(最多72个字符),如: TITLE This Model is only an Example
9.表达式应化简,如2*X1+3*X2- 4*X1应写成 – 2*X1+3*X2 10. 缺省假定所有变量非负;
无 约 束 优 化 线 性 规 划
非 线 性 规 划
整 数 规 划
组 合 优 化
不 确 定 规 划
多 目 标 规 划
目 标 规 划
网 络 优 化
动 态 规 划
优化问题的一般形式
优化问题三要素:决策变量;目标函数;约束条件
min s.t.
决策变量
f ( x) hi ( x) 0, i 1,...,m g j ( x ) 0, j 1,...,l xD
运筹学实验报告四整数规划
2018-2019学年第一学期《运筹学》实验报告(四)班级:交通运输171学号: 1000000000姓名: *****日期: 2018.11.22实验一:用Lingo 软件求解下列整数规划问题(要求附程序和结果)12121212max 25062210,1,2i z x x x x x x x x x i =++≤⎧⎪-+≤⎪⎨+≤⎪⎪≥=⎩且取整数12312323123123123max 232452244,,01z x x x x x x x x x x x x x x x x x =+-++≤⎧⎪+≤⎪⎪+-≤⎨⎪+-≤⎪=⎪⎩或解:例题(左)解题程序及运行结果如下:sets :bliang/1,2/:x,a; yshu/1,2,3/:b;xshu(yshu,bliang):c; endsets data : a=2,1; b=5,0,21; c=1,1 -1,1 6,2; enddatamax =@sum (bliang(i):a(i)*x(i));@for (yshu(j):@sum (bliang(i):x(i)*c(j,i))<=b(j)); @for(bliang(i):@gin(x(i)));Global optimal solution found.Objective value: 7.000000 Objective bound: 7.000000 Infeasibilities: 0.000000 Extended solver steps: 0 Total solver iterations: 0Variable Value Reduced CostX( 1) 3.000000 -2.000000X( 2) 1.000000 -1.000000A( 1) 2.000000 0.000000A( 2) 1.000000 0.000000B( 1) 5.000000 0.000000B( 2) 0.000000 0.000000B( 3) 21.00000 0.000000C( 1, 1) 1.000000 0.000000C( 1, 2) 1.000000 0.000000C( 2, 1) -1.000000 0.000000C( 2, 2) 1.000000 0.000000C( 3, 1) 6.000000 0.000000C( 3, 2) 2.000000 0.000000Row Slack or Surplus Dual Price1 7.0000001.0000002 1.000000 0.0000003 2.000000 0.0000004 1.000000 0.000000例题(右)解题程序及运行结果如下:sets:bliang/1,2,3/:x,a;yshu/1,2,3,4/:b;xshu(yshu,bliang):c;endsetsdata:a=2,1,-1;b=2,5,2,4;c=1,3,10,4,11,2,-11,4,-1;enddatamax=@sum(bliang(i):a(i)*x(i));@for(yshu(j):@sum(bliang(i):x(i)*c(j,i))<=b(j));@for(bliang(i):@bin(x(i)));Global optimal solution found.Objective value: 2.000000Objective bound: 2.000000Infeasibilities: 0.000000Extended solver steps: 0Total solver iterations: 0Variable Value ReducedCostX( 1) 1.000000 -2.000000X( 2) 0.000000 -1.000000X( 3) 0.000000 1.000000A( 1) 2.000000 0.000000A( 2) 1.000000 0.000000A( 3) -1.000000 0.000000B( 1) 2.000000 0.000000B( 2) 5.000000 0.000000B( 3) 2.0000000.000000B( 4) 4.000000 0.000000C( 1, 1) 1.000000 0.000000C( 1, 2) 3.000000 0.000000C( 1, 3) 1.000000 0.000000C( 2, 1) 0.000000 0.000000C( 2, 2) 4.000000 0.000000C( 2, 3) 1.000000 0.000000C( 3, 1) 1.000000 0.000000C( 3, 2) 2.000000 0.000000C( 3, 3) -1.000000 0.000000C( 4, 1) 1.000000 0.000000C( 4, 2) 4.000000 0.000000C( 4, 3) -1.000000 0.000000Row Slack or Surplus Dual Price1 2.0000001.0000002 1.000000 0.0000003 5.000000 0.0000004 1.000000 0.0000005 3.000000 0.000000实验二:一、问题重述某学校规定,运筹学专业的学生毕业时必须至少学习过两门数学课、三门运筹学课和两门计算机课。
数学建模lingo作业-习题讲解
基础题:1.目标规划问题最近,某节能灯具厂接到了订购16000套A 型和B 型节能灯具的订货合同,合同中没有对这两种灯具的各自数量做要求,但合同要求工厂在一周内完成生产任务并交货。
根据该厂的生产能力,一周内可以利用的生产时间为20000min ,可利用的包装时间为36000min 。
生产完成和包装一套A 型节能灯具各需要2min ;生产完成和包装完成一套B 型节能灯具各需要1min 和3min 。
每套A 型节能灯成本为7元,销售价为15元,即利润为8元;每套B 型节能灯成本为14元,销售价为20元,即利润为6元。
厂长首先要求必须按合同完成订货任务,并且即不要有足量,也不要有超量。
其次要求满意销售额达到或者尽量接近275000元。
最后要求在生产总时间和包装总时间上可以有所增加,但过量尽量地小。
同时注意到增加生产时间要比包装时间困难得多。
试为该节能灯具厂制定生产计划。
解:将题中数据列表如下:根据问题的实际情况,首先分析确定问题的目标级优先级。
第一优先级目标:恰好完成生产和包装完成节能灯具16000套,赋予优先因子p1;第二优先级目标:完成或者尽量接近销售额为275000元,赋予优先因子p2; 第三优先级目标:生产和包装时间的增加量尽量地小,赋予优先因子p3; 然后建立相应的目标约束。
在此,假设决策变量12,x x 分别表示A 型,B 型节能灯具的数量。
(1) 关于生产数量的目标约束。
用1d -和1d +分别表示未达到和超额完成订货指标16000套的偏差量,因此目标约束为1111211min ,..16000z d d s t x x d d -+-+=+++-=要求恰好达到目标值,即正、负偏差变量都要尽可能地小(2) 关于销售额的目标约束。
用2d -和2d +分别表示未达到和超额完成满意销售指标275000元的偏差值。
因此目标约束为221222min ,..1520-275000.z d s t x x d d --+=++=要求超过目标值,即超过量不限,但必须是负偏差变量要尽可能地小,(另外:d +要求不超过目标值,即允许达不到目标值,就是正偏差变量要尽可能地小) (3) 关于生产和包装时间的目标约束。
第一次作业
第三个会员获得的第32,50,80
第四个会员获得的第7,18,41
第五个会员获得的第11,66,68
第六个会员获得的第19,53,66
第七个会员获得的第26,66,81
第九个会员获得的第53,78,100
第十个会员获得的第41,55,85
第十一个会员获得的第59,63,66
解:
Lingo求解为:当a=0.95时DVD最小购买量min z=1781.25
Lingo程序为:
model:
sets:
si/1..1000/:z;
sj/1..100/:y;
lij(si,sj):c,x;
endsets
data:
c=@file('E:\a2.txt');
a=0.95;
enddata
min=@sum(sj(j):y(j));
第二十九个会员获得的第26,30,55
第三十个会员获得的第37,62,98
Lingo程序如下:
model:
sets:
si/1..1000/:z;
sj/1..100/:n;
lij(si,sj):c,x;
endsets
data:
n=@file('E:\a1.txt');
c=@file('E:\a2.txt');
a<=1/27000*@sum(lij(i,j):c(i,j)*x(i,j));
@for(si(i):@sum(sj(j):x(i,j))-3*z(i)=0);
@for(sj(j):@sum(si(i):x(i,j))<1.6*y(j));
@for(lij(i,j):x(i,j)<c(i,j));
Lingo软件的介绍
最优解不变时目标函 数系数允许变化范围
(约束条件不变) x1系数范围(64,=72 增加为303=90, 在允许范围内
• A1获利增加到 30元/kg,应否改变生产计划?
不变!
影子价格有意义(不变)时约束右端的允许 变化范围 结果解释
Ranges in which the basis is unchanged: Objective Coefficient Ranges Current Allowable Allowable Variable Coefficient Increase Decrease X1 72.00000 24.00000 8.000000 X2 64.00000 8.000000 16.00000 Righthand Side Ranges Row Current Allowable Allowable RHS Increase Decrease 原料最多增加10 MILK 50.00000 10.00000 6.666667 时间最多增加53 TIME 480.0000 53.33333 80.00000 CPCT 100.0000 INFINITY 40.00000 充分条件 !
LINDO API: LINDO Application Programming Interface (V2.0)
演示(试用)版、学生版、高级版、超级版、工业版、 扩展版… (求解问题规模和选件不同)
回顾-优化模型
实际问题中 Min(或Max) z f ( x ), x ( x1 , x n )T 的优化模型 s.t. g i ( x) 0, i 1,2, m x~决策变量 数学规划 线性规划(LP) 0-1整数规划 二次规划(QP) 一般整数规划 非线性规划(NLP) f(x)~目标函数 gi(x)0~约束条件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Lingo 程序: max=2*x1+5*x2+3*x3+4*x4;
-4*x1+x2+x3+x4>=0; -2*x1+4*x2+2*x3+4*x4>=1; x1+x2-x3+x4>=1; @bin(x1);@bin(x2);@bin(x3);@bin(x4);
温州大学城市学院
例 2 用Lingo软件求解整数规划问题 min z 2 x1 5 x2 3 x3
温州大学城市学院
注意:
Lingo 默认变量的取值从0到正无穷大,
变量定界函数可以改变默认状态.
@free(x): 取消对变量x的限制(即x可取任意实数值)
例 4 求函数 z x 2 y 2 的最小值.
2 2
温州大学城市学院 例 4 求函数 z x 2 y 2 的最小值.
,8
温州大学城市学院
温州大学城市学院
上机作业题
要求:
1、建立数学模型,
2、用lingo循环语句编写程序.
温州大学城市学院
上机作业题
人员安排问题
某城市的巡逻大队要求每天的各个时间段都有一 定数量的警员值班, 以便随时处理突发事件, 每人连续 工作6h, 中间不休息. 如表所示是一天8个班次所需值 班警员的人数情况统计:
成绩 甲 乙 丙 丁 自由泳 / s 56 63 57 55 蛙泳 / s 74 69 77 76 蝶泳 / s 61 65 63 62 仰泳 / s 63 71 67 62
甲, 乙, 丙, 丁 四名队员各自游什么姿势 , 才最有可能取得好成绩?
温州大学城市学院
min f 56 x11 74 x12 61 x13 63 x14 63 x21 69 x22 65 x23 71x24 57 x31 77 x32 63 x33 67 x34 55 x41 76 x42 62 x43 62 x44
温州大学城市学院 三、Lingo 循环编程举例 例5 现有五名工人甲, 乙, 丙, 丁, 戊, 完成五项 工作A, B, C, D, E, 所需时间列表如下
工作 时间(小时) 工人 甲 乙 丙 丁 戊
A
1 2 1.75 2.5 1
B
0.5 1 1.5 2 1.5
C
2 3 2.5 1.5 2
D
1.75 1.5 1 0.5 2
班次 时间段 人数 班次 时间段 人数
1
2 3 4
6:00~9:00
9:00~12:00 12:00~15:00 15:00~18:00
70
80 65 90
5
6 7 8
18:00~21:00
21:00~24:00 24:00~3:00 3:00~6:00
80
100 120 90
现在在不考虑时间段中警员上班和下班的情况下, 巡逻大队至少需要多少警员才能满足值班需要? 设第 i 个班次开始上班的警员数为 xi .
E
4 3.5 3 4 3
问题: (1) 求每个人的最短工作时间; (2) 求每份工作最短的用时.
温州大学城市学院 三、Lingo 循环编程举例
例5
sets: ren/A,B,C,D,E/:rent; job/1..5/:jobt; link(ren,job):time; endsets data: time=1,0.5,2,1.75,4 2,1,3,1.5,3.5 1.75,1.5,2.5,1,3 2.5,2,1.5,0.5,4 1,1.5,2,2,3; enddata S=@sum(link(i,j):time(i,j));
2 2
解: 编写Lingo 程序如下: min=(x+2)^2+(y-2)^2;
@free(x);
求得结果: x=-2, y=2
温州大学城市学院 二、Lingo 循环编程语句
(1) 集合的定义
包括如下参数: 1) 集合的名称.
sets: endsets students
命名规则: 以字母开头, 后面是字母或下划线.
max z 72 x1 64 x2
x1 x2 50, 12 x1 8 x2 480, 3 x1 100, x 0, x 0. 1 2
!数据赋值;
max=@sum(bliang(i):a(i)*x(i)); !目标函数; @for(yshu(j):@sum(bliang(i):x(i)*c(j,i))<=b(j));
maxE=@max(students(i):English); !英语的最高分; averageM=@sum(students(i):Math)/4; !数学的平均分; @for(students(i):total(i)=Math(i)+English(i)); !每个学生数学与英语分数之和.
温州大学城市学院 (4) 衍生集合的定义. 包括如下参数: 1) 衍生集合的名称. link 2) 衍生集合的父集合名称.
ren job
3) 衍生集合包含的元素(可选).
注: 若没有指明元素列 表, LINGO将用父集合 元素的所有组合作为衍 生集合的元素.
(A,1), (A,2),(A,3),(A,4)(A,5) (B,1), (B,2),(B,3),(B,4)(B,5) (C,1), (C,2),(C,3),(C,4)(C,5) (D,1), (D,2),(D,3),(D,4)(D,5)
time
4) 集合中元素的所有属性(可选).
例5 sets:
ren/A,B,C,D/: rent; job/1..5/: jobt; link(ren,job): time; endsets
温州大学城市学院 (5) Lingo 内部的数学函数及其返回值 @abs(x): 返回x的绝对值 @sin(x): 返回x的正弦值 @cos(x): 返回x的余弦值 @tan(x): 返回x的正切值 @log(x): 返回x的自然对数值 @exp(x): 返回ex的值 @sqr(x): 返回x的平方值. 该函数可以用表达式x^2代替 @sqrt(x): 返回x的正的平方根. 可以用表达式x^(1/2)代替
字母不区分大小写. 2) 集合包含的元素(可选). John, Jill, Rose, Mike
3) 集合中元素的所有属性(可选). Math,English,total 例4
sets: students/John, Jill, Rose, Mike/:Math,English,total; endsets
温州大学城市学院 实验二 用Lingo求解规划模型
变量定界函数: @bin(x): 限制 x 为 0 或 1. @gin(x): 限制 x 为整数.
温州大学城市学院 一、用Lingo 求解规划问题
例 1 用Lingo软件求解0-1规划问题
max z 2 x1 5 x2 3 x3 4 x4 4 x1 x2 x3 x4 0 2 x1 4 x2 2 x3 4 x4 1 x1 x2 x3 x4 1 x , x , x , x 0或1 1 2 3 4
!定义集合;
!数据赋值;
!所有工作时间求和;
@for(ren(i):rent=@min(job(j):time(i,j))); !求每个人的最短工作时间; @for(job(j):jobt=@min(ren(i):time(i,j))); !求每份工作最短的用时;
温州大学城市学院 三、Lingo 循环编程举例 例5 用Lingo循环编程语句求解线性规划模型
!约束条件;
温州大学城市学院
例6:人员选拔问题
队员号码 1 3 身高 / m 1.92 1.88 位置 中锋 前锋 队员号码 2 4 身高 / m 1.90 1.86 位置 中锋 前锋
5
7
1.85
1.80
前锋
后卫
6
8
1.83
1.78
后卫
后卫
同时, 要求出场阵容必须满足以下条件 : (1) 中锋只能有一个上场; (2) 至少有一名后卫; (3) 如果1号队员和4号队员都上场, 则6号队员不能上场; (4) 2号队员和6号队员必须至少保留一个不出场. 如何确定符合要求的出场阵容?
温州大学城市学院
max f 1.92 x1 1.90 x2 1.88 x3 1.86 x4 1.85 x5 1.83 x6 1.80 x7 1.78 x8
x1 x2 1 x6 x7 x8 1 x1 x4 x6 2 x 2 x6 1 8 x 5 i 1 i xi 0 或 1, i 1, 2,
温州大学ห้องสมุดไป่ตู้市学院
例 3 用Lingo软件求解非线性规划问题
min z x1 1 x2 2
2
2
x2 x1 1, x1 x2 2, x 0, x 0. 1 2
Lingo 程序: min=(x1-1)^2+(x2-2)^2;
x2-x1=1; x1+x2<=2;
约 束 条 件
x11 x12 x13 x14 1; x21 x22 x23 x24 1; x31 x32 x33 x34 1; x41 x42 x43 x44 1; x11 x21 x31 x41 1; x12 x22 x32 x42 1; x x x x 1; x x x x 1; 23 33 43 14 24 34 44 13 xij 0或1, i , j 1, 2, 3, 4.