数学模型数学建模第四次作业整数规划和对策论模型
- 格式:doc
- 大小:257.70 KB
- 文档页数:24
数模常⽤算法系列--整数线性规划(分枝定界法)、整数⾮线性规划(蒙特卡洛法)整数线性规划求解----分枝定界法什么是整数规划?线性规划中的变量(部分或全部)限制为整数时,称为整数规划。
若在线性规划模型中,变量限制为整数,则称为整数线性规划。
⽬前所流⾏的求解整数规划的⽅法,往往只适⽤于整数线性规划。
⽬前还没有⼀种⽅法能有效地求解⼀切整数规划。
整数规划的分类- 变量全限制为整数时,称(完全)整数规划- 变量部分限制为整数时,称混合整数规划什么是分枝定界法原理如下:设有最⼤化的整数规划问题A,与它相应的线性规划为问题B,从解问题B开始,若其最优解不符合A的整数条件,那么B的最优⽬标函数必是A的最优⽬标函数z^*的上界\overline{z};⽽A的任意可⾏解的⽬标函数值将是z^*的⼀个下界\underline z ,分枝定界法就是将B的可⾏域分成⼦区域的⽅法。
逐步减⼩\overline z和增⼤\underline z最终求到z^*本质就是个分治回溯,逼近最⼤值的算法。
Matlab算法如下:(强烈警告,(不会验证)由于⽐较懒,并未对算法正确性验证,思路上验证了⼀下没问题就码上来了,如果有错,请⼀定联系~~)% c,A,Aeq,Beq,LB,UB,是linprog函数的相关参数,知道了它们就可以求出对应的线性规划最优解,% now是⽬前已经知道的整数解的最⼤值function y = control(c,A,Aeq,Beq,LB,UB,now)ret = 0;[x,fval] = linprog(c,A,Aeq,Beq,LB,UB); % x是最优解的解向量,fval是对应的函数值if fval < nowy = fval;return;end % 如果得到的当前最优解fval⼩于已知的now,那说明最优整数解不在这个区间,则剪枝返回。
for i = 1 : length(x)if rem(x(i),1) ~= 0 % rem(x,1)如果返回值不为0,则表⽰是⼩数。
一、线性规划1.简介1.1适用情况用现有资源来安排生产,以取得最大经济效益的问题。
如: (1)资源的合理利用(2)投资的风险与利用问题 (3)合理下料问题 (4)合理配料问题 (5)运 输 问 题 (6)作物布局问题(7)多周期生产平滑模型 (8)公交车调度安排 1.2建立线性规划的条件(1)要求解问题的目标函数能用数值指标来反映,且为线性函数;(2)要求达到的目标是在一定条件下实现的,这些约束可用线性等式或不等式描述。
1.3线性规划模型的构成决策变量、目标函数、约束条件。
2、一般线性规划问题 数学标准形式:目标函数:1max ==∑ njjj z cx约束条件:1,1,2,...,,..0,1,2,...,.=⎧==⎪⎨⎪≥=⎩∑nij j i j ja xb i m s t x j nmatlab 标准形式:3、可以转化为线性规划的问题 例:求解下列数学规划问题解:作変量変换1||||,,1,2,3,4,22+-===i i i ii x x x x u v i 并把新变量重新排序成一维变量[]1414,,,,,⎡⎤==⎢⎥⎣⎦Tu y u u v v v ,则可把模型转化为线性规划模型其中:[]1,2,3,4,1,2,3,4;=T c 12,1,;2⎡⎤=---⎢⎥⎣⎦Tb 111111131 - - ⎡⎤⎢⎥= - -⎢⎥⎢⎥ -1 -1 3⎣⎦A 。
利用matlab 计算得最优解:12342,0,=-===x x x x 最优值z=2。
程序如下: 略二、整数规划 1.简介数学规划中的变量(部分或全部)限制为整数时称为整数规划。
目前流行求解整数规划的方法一般适用于整数线性规划。
1.1整数规划特点1)原线性规划有最优解,当自变量限制为整数后,出现的情况有①原线性规划最优解全是整数,则整数规划最优解与线性规划最优解一致。
②整数规划无可行解。
③有可行解(存在最优解),但最优解值变差。
2)整数规划最优解不能按照实数最优解简单取整获得。
整数规划的数学模型及解的特点整数规划IP (integer programming ):在许多规划问题中,如果要求一部分或全部决策变量必须取整数。
例如,所求的解是机器的台数、人数、车辆船只数等,这样的规划问题称为整数规划,简记IP 。
松弛问题(slack problem):不考虑整数条件,由余下的目标函数和约束条件构成的规划问题称为该整数规划问题的松弛问题。
若松弛问题是一个线性规化问题,则该整数规划为整数线性规划(integer linear programming)。
一、整数线性规划数学模型的一般形式∑==nj jj x c Z 1min)max(或中部分或全部取整数n j nj i jij x x x mj ni x b xa ts ,...,,...2,1,...,2,10),(.211==≥=≥≤∑=整数线性规划问题可以分为以下几种类型1、纯整数线性规划(pure integer linear programming ):指全部决策变量都必须取整数值的整数线性规划。
有时,也称为全整数规划.2、混合整数线性规划(mixed integer liner programming):指决策变量中有一部分必须取整数值,另一部分可以不取整数值的整数线性规划。
3、0—1型整数线性规划(zero —one integer liner programming ):指决策变量只能取值0或1的整数线性规划。
1 解整数规划问题0—1型整数规划0-1型整数规划是整数规划中的特殊情形,它的变量仅可取值0或1,这时的变量xi 称为0-1变量,或称为二进制变量.⎪⎪⎪⎩⎪⎪⎪⎨⎧≥≤+≥+≤-+=且为整数0,5210453233max 2121212121x x x x x x x x x x z0—1型整数规划中0—1变量作为逻辑变量(logical variable ),常被用来表示系统是否处于某一特定状态,或者决策时是否取某个方案。
数学模型第四次作业 整数规划和对策论模型4.1实验目的学会建立整数规划模型、对策论模型,学会用LINGO 软件求解。
4.2 基本实验1. 工程安排问题三年内有五项工程可以考虑施工,每项工程的期望收入和年度费用如表4.1所示。
假定每一项已经选定的工程要在整个三年内完成。
目标是要选出使总收入达到最大的那些工程。
解:根据题意,设0 1 i i x i ⎧=⎨⎩第个工程未被选中第个工程被选中,i=1,2,3,4,5目标函数为:123452*********Max x x x x x =++++限制条件为:1234512345123455437825794625..8102102501i x x x x x x x x x x s t x x x x x x ++++≤⎧⎪++++≤⎪⎨++++≤⎪⎪⎩为或 使用Lingo 编程:model :max=20*x1+40*x2+20*x3+15*x4+30*x5;5*x1+4*x2+3*x3+7*x4+8*x5<=25;1*x1+7*x2+9*x3+4*x4+6*x5<=25;8*x1+10*x2+1*x3+2*x4+10*x5<=25;@bin(x1);@bin(x2);@bin(x3);@bin(x4);@bin(x5);end运行得到结果:Global optimal solution found.Objective value: 95.00000Objective bound: 95.00000Infeasibilities: 0.000000Extended solver steps: 0Total solver iterations: 0Variable Value Reduced CostX1 1.000000 -20.00000X2 1.000000 -40.00000X3 1.000000 -20.00000X4 1.000000 -15.00000X5 0.000000 -30.00000Row Slack or Surplus Dual Price1 95.00000 1.0000002 6.000000 0.0000003 4.000000 0.0000004 4.000000 0.000000分析结果易知,总收入达到最大为95(千元),应选第一、二、三、四项工程可以使总收入达到最大。
规划模型求解指导老师:组员:组员分工实际的内容:1·简要介绍线性规划的历史线性规划是运筹学中最基本、应用最广泛的分支。
规划模型是一类有着广泛应用的确定性的系统优化模型,1939年,苏联数学家康托洛维奇出版《生产组织和计划中的数学方法》一书.1947年,美国数学家丹兹格提出了线性规划问题的单纯形求解方法.1951年,美国经济学家库普曼斯(J.C.Koopmans,1910—1985)出版《生产与配置的活动分析》一书.1950~1956年,线性规划的对偶理论出现.1960年,丹兹格与沃尔夫(P.Wolfe)建立大规模线性规划问题的分解算法.1975年,康托洛维奇与库普曼斯因“最优资源配置理论的贡献”荣获诺贝尔经济学奖.1978年,苏联数学家哈奇扬(L.G.Khachian)提出求解线性规划问题的多项式时间算法(内点算法),具有重要理论意义.1984年,在美国贝尔实验室工作的印度裔数学家卡玛卡(N.Karmarkar)提出可以有效求解实际线性规划问题的多项式时间算法——Karmarkar算法.线性规划的基本点就是在满足一定约束条件下,使预定的目标达到最优. 现在线性规划已不仅仅是一种数学理论和方法,而且成了现代化管理的重要手段,是帮助管理者与经营者做出科学决策的一个有效的数学技术.历史表明,重要数学概念对数学发展的作用是不可估量的,函数概念对数学发展的影响,可以说是贯穿古今、旷日持久、作用非凡,回顾函数概念的历史发展,看一看 函数概念不断被精炼、深化、丰富的历史过程,是一件十分有益的事情,它不仅有助于我们提高对函数概念来龙去脉认识的清晰度,而且更能帮助我们领悟数学概念 对数学发展,数学学习的巨大作用。
2·线性规划的原理:线性规划是合理利用、调配资源的一种应用数学方法。
它的基本思路就是在满足一定的约束条件下,使预定的目标达到最优。
它的研究内容可归纳为两个方面:一是系统的任务已定,如何合理筹划,精细安排,用最少的资源(人力、物力和财力)去实现这个任务;二是资源的数量已定,如何合理利用、调配,使任务完成的最多。
数学建模作业实验4整数规划和对策论模型数学建模作业(实验4 整数规划和对策论模型)基本实验1.遗嘱问题⼀个⾏为古怪的阿拉伯酋长留下了⼀份遗嘱,遗嘱中将他的骆驼群分给他的三个⼉⼦:长⼦⾄少得到驼群的1/2,次⼦⾄少得到驼群的1/3,三⼦⾄少得到驼群的1/9,剩余的捐献给慈善机构。
遗嘱中没有指出到底驼群的数⽬是多少,只是告诉了这个驼群的数⽬是奇数,并且这个指定的慈善机构恰好得到了⼀匹骆驼。
利⽤整数线性规划确定这个酋长到底留下了多少匹骆驼,并指出每个⼉⼦各得到多少匹。
解答解:设长⼦、次⼦、三⼦得到的骆驼数分别为:X1,X2,X3,则⽬标函数为:X1+X2+X3+1约束条件:X1>=(X1+X2+X3+1)/2X2>=(X1+X2+X3+1)/3X3>=(X1+X2+X3+1)/9X1,X2,X3为整数,且(X1+X2+X3+1)为奇数。
要想求出本题的可⾏解,则⽬标函数取得最⼩。
LINGO程序min=X1+X2+X3+1;X1+X2+X3+1<=2*X1;X1+X2+X3+1<=3*X2;X1+X2+X3+1<=9*X3;Y=(X1+X2+X3)/2;@gin(X1);@gin(X2);@gin(X3);@gin(Y);运⾏结果Global optimal solution found.Objective value: 27.00000Objective bound: 27.00000Infeasibilities: 0.000000Extended solver steps: 0Total solver iterations: 3Model Class: PILPTotal variables: 4Nonlinear constraints: 0Total nonzeros: 16Nonlinear nonzeros: 0Variable Value Reduced Cost X1 14.00000 1.000000 X2 9.000000 1.000000 X3 3.000000 1.000000 Y 13.00000 0.000000 Row Slack or Surplus Dual Price1 27.00000 -1.0000002 1.000000 0.0000003 0.000000 0.0000004 0.000000 0.0000005 0.000000 0.000000由运⾏结果可得:这个酋长的骆驼数量为27只,长⼦得到14只,次⼦得到9只,三⼦得到3只。
整数规划模型的构建及求解方法整数规划是一种数学优化问题,其目标是在给定的约束条件下,寻找能够使目标函数最大或最小的整数解。
在实际应用中,整数规划模型常被用于决策问题的求解,如生产计划、物流调度、资源分配等。
本文将介绍整数规划模型的构建方法以及常用的求解方法。
一、整数规划模型的构建方法1.确定决策变量:首先需要确定问题中的决策变量,即可用整数来表示的变量。
这些变量一般代表决策问题中的选择或分配方案。
例如,在生产计划问题中,决策变量可以是不同产品的生产数量。
2.定义目标函数:目标函数是整数规划问题中要最大化或最小化的指标。
根据问题的具体要求,可将目标函数设定为各个决策变量的线性组合或非线性函数。
例如,生产计划问题中,目标函数可以是利润的最大化或成本的最小化。
3.确定约束条件:约束条件用于限制决策变量的取值范围,以满足问题的实际限制。
约束条件可以是等式或不等式。
例如,在物流调度问题中,约束条件可以包括产品的需求量、供应量以及运输容量等。
4.完善模型:为了更准确地描述问题,还需要考虑一些特殊约束条件和问题的具体要求。
例如,某些决策变量可能需要满足某种关系或限制条件,或者需要指定某些变量的取值范围。
二、整数规划模型的求解方法1.穷举法:穷举法是最简单直接的求解方法,即将所有可能的整数解都列举出来,并计算对应的目标函数值,最后选取最优解。
然而,穷举法由于计算复杂度高,只适用于问题规模较小的情况。
2.分支定界法:分支定界法是一种逐步缩小解空间的方法。
通过将整数规划问题分解成若干个子问题,并为每个子问题设定上下界,不断迭代求解,最终找到最优解。
这种方法可以高效地搜索整数解空间,但对于规模较大的问题,计算时间可能会很长。
3.割平面法:割平面法是一种逐步划分解空间的方法。
它通过添加割平面来修正原始线性规划松弛的解,使其成为整数解。
这种方法能够快速收敛到最优解,并且具有较好的计算效率。
4.分枝定界法:分枝定界法是将分支定界法和割平面法相结合的方法。
数学模型第四次作业 整数规划和对策论模型4.1实验目的学会建立整数规划模型、对策论模型,学会用LINGO 软件求解。
4.2 基本实验1. 工程安排问题三年内有五项工程可以考虑施工,每项工程的期望收入和年度费用如表4.1所示。
假定每一项已经选定的工程要在整个三年内完成。
目标是要选出使总收入达到最大的那些工程。
解:根据题意,设0 1 i i x i ⎧=⎨⎩第个工程未被选中第个工程被选中,i=1,2,3,4,5目标函数为:123452*********Max x x x x x =++++限制条件为:1234512345123455437825794625..8102102501i x x x x x x x x x x s t x x x x x x ++++≤⎧⎪++++≤⎪⎨++++≤⎪⎪⎩为或 使用Lingo 编程:model :max=20*x1+40*x2+20*x3+15*x4+30*x5;5*x1+4*x2+3*x3+7*x4+8*x5<=25;1*x1+7*x2+9*x3+4*x4+6*x5<=25;8*x1+10*x2+1*x3+2*x4+10*x5<=25;@bin(x1);@bin(x2);@bin(x3);@bin(x4);@bin(x5);end运行得到结果:Global optimal solution found.Objective value: 95.00000Objective bound: 95.00000Infeasibilities: 0.000000Extended solver steps: 0Total solver iterations: 0Variable Value Reduced CostX1 1.000000 -20.00000X2 1.000000 -40.00000X3 1.000000 -20.00000X4 1.000000 -15.00000X5 0.000000 -30.00000Row Slack or Surplus Dual Price1 95.00000 1.0000002 6.000000 0.0000003 4.000000 0.0000004 4.000000 0.000000分析结果易知,总收入达到最大为95(千元),应选第一、二、三、四项工程可以使总收入达到最大。
2. 固定费用问题一服装厂生产三种服装,生产不同种类的服装要租用不同的设备,设备租金和其他的经济参数如表4.2所示。
假定市场需求不成问题,服装厂每月可用人工工时为2000小时,该厂如何安排生产可以使每月利润达到最大?解:根据题意三种服装的利润分别为120元、10元、100元.设x i 表示生成第i (i =1,2,3)种服装的数量,y i 表示是否生产第i 种服装。
列出目标函数:列出限制条件:5x 1+x 2+4x 3≤20003x 1≤300y 10.5x 2≤300y 22x 3≤300y 3使用Lingo 编程求解:model :sets:⎩⎨⎧=种服装,不生产第种服装生产第i i y i 0,1)000320005000(10010120m ax 321321y y y x x x ---++=m/1,2,3/:x,y;endsets[obj]max=100*x(1)+10*x(2)+100*x(3)-5000*y(1)-2000*y(2)-3000*y(3);5*x(1)+x(2)+4*x(3)<=2000;3*x(1)<=300*y(1);0.5*x(2)<=300*y(2);2*x(3)<=300*y(3);@for(m(i):x(i)>=0;@bin(y(i)););end得到结果:Global optimal solution found.Objective value: 21000.00Objective bound: 21000.00Infeasibilities: 0.000000Extended solver steps: 0Total solver iterations: 0Variable Value Reduced CostX( 1) 100.0000 0.000000X( 2) 600.0000 0.000000X( 3) 150.0000 0.000000Y( 1) 1.000000 -5000.000Y( 2) 1.000000 -4000.000Y( 3) 1.000000 -12000.00Row Slack or Surplus Dual PriceOBJ 21000.00 1.0000002 300.0000 0.0000003 0.000000 33.333334 0.000000 20.000005 0.000000 50.000006 100.0000 0.0000007 600.0000 0.0000008 150.0000 0.000000所以三种服装应该都生产,且生产西服100件、衬衫600件、羽绒服150件时可以使每月利润达到最大21000元。
3. 串并联系统可靠性问题有一台电器由三个部件组成,这三个部件串联,假如有一个部件发生故障,电器就不能工作。
可以通过在每个部件里安装1到2个备份元件来提高该电器的可靠性(不发生故障的概率)。
表4.3列出了可靠性和成本费用。
假设制造该电器的已有资金共10万元,那么怎样来构造这件电器呢?解:构造集合bujian/1..3/(部件),yuanjian/1..2/(每个部件可并联的元件数集合),links(bujian,yuanjian):p,C,R 。
其中⎩⎨⎧=,其他个元件部件并联,给01j i p ij列出Lingo 程序:model :sets :bujian/1..3/; !部件1,2,3;yuanjian/1..2/; !每个部件可装元件1,2;links(bujian,yuanjian)/1,1 1,2 2,1 2,2 3,1 3,2/:p,C,R;!p(i,j)=1,则表示部件i 上并联j 个元件,否则,p(i,j)=0.C,R 分别为成本,可靠性;!links 中的元素必须罗列出来;endsetsdata :C=1 23 52 4;R=0.60 0.800.70 0.800.50 0.70;enddatamax=@prod(bujian(I):@sum(yuanjian(J)|@in(links,I,J):p(I,J)*R(I,J) )); !整个系统的可靠性,为每个部件的可靠性之积;@for(bujian(I):@sum(yuanjian(J)|@in(links,I,J):p(I,J))=1);@for(links(I,J)|@in(links,I,J):@bin(p(I,J)));!对于每一个部件,并联的元件数是一定的,p(I,J)只能取0或1,且p(I,J)的和为1;@sum(bujian(I):@sum(yuanjian(J)|@in(links,I,J):p(I,J)*C(I,J)))<=10; !总成本小于10(万元);end运行得到如下结果:Linearization components added:Constraints: 64Variables: 16Integers: 16Global optimal solution found.Objective value: 0.3920000Objective bound: 0.3920000Infeasibilities: 0.000000Extended solver steps: 0Total solver iterations: 12Variable Value Reduced CostP( 1, 1) 0.000000 0.000000P( 1, 2) 1.000000 0.000000P( 2, 1) 1.000000 0.000000P( 2, 2) 0.000000 0.000000P( 3, 1) 0.000000 0.000000P( 3, 2) 1.000000 0.000000C( 1, 1) 1.000000 0.000000C( 1, 2) 2.000000 0.000000C( 2, 1) 3.000000 0.000000C( 2, 2) 5.000000 0.000000C( 3, 1) 2.000000 0.000000C( 3, 2) 4.000000 0.000000R( 1, 1) 0.6000000 0.000000R( 1, 2) 0.8000000 0.000000R( 2, 1) 0.7000000 0.000000R( 2, 2) 0.8000000 0.000000R( 3, 1) 0.5000000 0.000000R( 3, 2) 0.7000000 0.000000Row Slack or Surplus Dual Price1 0.3920000 1.0000002 0.000000 0.0000003 0.000000 0.0000004 0.000000 0.0000005 1.000000 0.000000因此,此时的最优解可以得到:即在第一个部件上并联两个元件,第二个部件上并联一个元件,第三个部件上并联两个元件,此时系统的在成本允许的情况下稳定性达到最大0.392。
4. 二选一约束条件某汽车公司正在考虑生产3种类型的汽车:微型、中型和大型。
表4.4给出了每种汽车需要的资源及产生的利润。
目前有6000吨钢材和60000小时的劳动时间。
要生产一种在经济效益上可行的汽车,这种汽车必须至少生产1000辆。
试为该公司制定一个使生产利润达到最大的方案。
解:设X1、X2、X3分别表示生产微型汽车、中型汽车、大型汽车的数量。
引入0-1变量,化为整数规划。
设yi 只取0, 1两个值,则生产1000辆或不生产用数学表达为:目标函数:max=2000*x1+3000*x2+4000*x3;限制条件:1.5 *x1+3 *x2+5 *x3<=6000;30* x1+25*x2+40* x3<=60000;x1<=5000*y1; (取个合理范围)x1>=1000* y1;x2<=5000*y2;x2>=1000* y2;x3<=5000*y3;x3>=1000*y3;x1,x2,x3为整数;用Lingo 编程求解:model :max =2000*x1+3000*x2+4000*x3;3,2,1},1,0{1000=∈=i y yi xi i ⎩⎨⎧-=变量不生产该车型,生产该车型100,1iy1.5*x1+3*x2+5*x3<=6000;30* x1+25*x2+40*x3<=60000;x1<=5000*y1;x1>=1000*y1;x2<=5000*y2;x2>=1000*y2;x3<=5000*y3;x3>=1000*y3;@bin(y1);@bin(y2);@bin(y3);@gin(x1);@gin(x2);@gin(x3);End运行得到结果:Objective value: 6000000.Objective bound: 6000000.Infeasibilities: 0.000000Extended solver steps: 1Total solver iterations: 8Variable Value Reduced Cost X1 0.000000 -2000.000 X2 2000.000 -3000.000 X3 0.000000 -4000.000 Y1 0.000000 0.000000 Y2 1.000000 0.000000 Y3 0.000000 0.000000Row Slack or Surplus Dual Price1 6000000. 1.0000002 0.000000 0.0000003 10000.00 0.0000004 0.000000 0.0000005 0.000000 0.0000006 3000.000 0.0000007 1000.000 0.0000008 0.000000 0.0000009 0.000000 0.000000易知生产中型车2000辆可以使生产利润达到最大为6000000美元。