matlab、lingo程序代码23-线性规划问题及灵敏度分析
MATLAB的线性规划问题的敏感性分析
MATLAB的线性规划问题的敏感性分析一.问题的提出在现在的日常生活中,我们常会遇到这样的问题,在不同的约束条件下找出最优点值或算出最佳的数值,以提高总产量或经济效益。
那么我们就需要假设一个模型出来,作为基本模型求解。
并找出其内在的规律以方便我们的生产生活的需要。
若约束条件改变,那么总产值是否也会有很大变化呢?让我们一起来研究。
二.具体案例如下:以某农场A,B ,C 等级耕地的面积分别为1002hm,计hm,3002hm,和2002划种植水稻,大豆和玉米,要求三种农作物最低收获量分别为190000kg,130000kg和350000kg。
农场kg kg kg,。
那么,(1)如何制定种植计划才能使总产量最大?(2)如何制定种植计划才能使总产值最大?表一:不同等级种植不同农作物的单产量(单位:2kg)/hm三.问题假设x,表示不同的农作物在根据题意,可以建立线性规划模型,假设决策变量为ij第j等级耕地上种植的面积。
hm)表2 作物计划种植面积(单位:2四.模型建立与分析1.模型:min z=cX S.t. AX b ≤命令:x=linprog(c,A,b) 2.模型:min z=cX S.t. AX b ≤ Aeq.X=beq命令:x=linprog(c,A,b,Aeq,beq)注意:若没有不等式:AX b ≤存在,则令A=[],b=[].3. [x,fval]=linprog(.....)左端fval 返回解X 处的目标函数值。
4.思路分析:找出约束条件——列出目标函数——作出可行域——求出最优解——敏感性分析——回答实际问题。
5.约束方程如下:耕地面积的约束:⎪⎩⎪⎨⎧≤++≤++≤++200300100332313322212312111x x x x x x x x x最低收获量的约束:⎪⎩⎪⎨⎧-≤----≤----≤---3500001000012000140001300006000680080001900009000950011000333231232221131211x x x x x x x x x并且注意:0≥ij x)3,2,13,2,1i ==j ;( 则(1)追求总产量最大时,目标函数为:3332312322211312111000012000140006000680080009000950011000max x x x x x x x x x Z ---------=(2)追求总产值最大的目标函数为:)10001200014000(08.0)600068008000(5.1)900095001000(2.1max 333231232221131211x x x x x x x x x Z ++⨯-++⨯-++⨯-=可化简为333231232221131211800096001120090001020012000108001140013200max x x x x x x x x x Z ---------=五.模型建立与求解:1.对(1)求解,追求总产量最大时,MATLAB 程序如下:f=[-11000 -9500 -9000 -8000 -6800 -6000 -14000 -12000 -10000];A=[1 0 0 1 0 0 1 0 0 ;0 1 0 0 1 0 0 1 0;0 0 1 0 0 1 0 0 1;-11000 0 0 -9500 0 0 -9000 0 0; 0 -8000 0 0 -6800 0 0 -6000 0; 0 0 -14000 0 0 -12000 0 0-10000];b=[100 300 200 -190000 -130000 -350000];lb=[0 0 0 0 0 0 0 0 0];[xopt fxopt]=linprog(f,A,b,[],[],lb,[])Optimization terminated successfully.xopt =fxopt =-7000000键入S=-Z得到原问题的目标函数最大值为S=70000002.运行后敏感性分析后的MATLAB程序如下:从a=0开始,以步长01∆a对下列模型求解;=.0a=0;while(1.1-a)>1c=[-11000 -9500 -9000 -8000 -6800 -6000 -14000 -12000 -10000];A=[1 0 0 1 0 0 1 0 0 ;0 1 0 0 1 0 0 1 0;0 0 1 0 0 1 0 0 1;-11000 0 0 -9500 0 0 -9000 0 0; 0 -8000 0 0 -6800 0 0 -6000 0; 0 0 -14000 0 0 -12000 0 0 -10000];b=[100+a ;300+a; 200+a ;-190000+a ;-130000+a;-350000+a];Aeq=[]; beq=[];vlb=[0,0,0,0,0,0,0,0,0];vub=[];[x,val]=linprog(c,A,b,Aeq,beq,vlb,vub);ax=x'Q=-valplot(a,Q,'.'),hold ona=a+0.01;endxlabel('a'),ylabel('Q')gridOptimization terminated successfully.a =0 x = 0 0 0 0 0 0 100 300 200Q =7000000分析整理后结果对比如下:a =0 x = 0 0 0 0 0 0 100 300 200 Q = 7000000x =0 0 0 0 0 0 Q =7000360x =0 0 0 0 0 0 Q =7000720x =0 0 0 0 0 0 Q =7.0011e+006x =0 0 0 0 0 0 Q =7.0014e+006x = 0 0 0 0 0 0 Q =7.0018e+006x =0 0 0 0 0 0 100.06 Q =7.0022e+006x = 0 0 0 0 0 0 Q =7.0025e+006x =0 0 0 0 0 0 100.08 Q =7002880x =0 0 0 0 0 0 Q =7.0032e+006如果不好观测,还可以将a细分为0001∆a,程序基本不变,只需改变a.0=的步长即可,则运行后图像如下:观察图像后,最优值随a的参加变化不明显,但总在6.88e+6到6.9e+6与7e+6到7.02e+6两个区间内缓慢增长。
运用Lingo和Matlab软件求解线性规划问题比较
运用Lingo和Matlab软件求解线性规划问题比较运用Lingo和Matlab软件求解线性规划问题的比较研究摘要:本文就一个给定的线性规划模型,通过介绍优化软件lingo和科学计算软件matlab中求解线性规划问题的命令和函数,指出lingo软件在求解线性规划问题上占有一定优势。
关键词:线性规划 lingo软件 matlab软件最优解线性规划由前苏联经济学家康托洛维奇提出,它主要研究的是在线性等式(或不等式)约束条件下,使某一线性目标函数取得最大值(或最小值)的问题。
随着计算机技术的发展,借助软件可以快速对线性规划问题进行求解和分析。
目前,能够求解规划问题的数学软件比较多,常见的有优化软件lingo和科学计算软件matlab。
本文以如下线性规划为例,分别利用这二种软件来求解,并就它们在求解线性规划上的差异进行对比分析。
minz=10.8x11+10.95x12+11.1x13+11.25x14+11.1x22+11.25x23+11.4x24+11x33+11.15x34+11.3x44;s.t.x11+x12+x13+x14”“x(3,1) 0.000000x(3,2) 0.000000x(3,3) 25.00000x(3,4) 5.000000x(4,1) 0.000000x(4,2) 0.000000x(4,3) 0.000000x(4,4) 10.00000显然最优解同上,只是输出格式不同而已。
2 matlab求解线性规划2.1 matlab软件简介目前,matlab提供了四十多个工具箱,这些工具箱专门针对某些具体应用领域。
matlab优化工具箱中提供了linprog函数来求解线性规划问题。
2.2 matlab求解线性规划的命令介绍 matlab中一般使用“[ ]”、“,”或空格以及“;”来创建数组,“[ ]”中给出数组的所有元素,同行间的元素用“,”或者空格隔开,不同行之间用分号“;”隔开,并且用符号“?”置于矩阵右上角表示矩阵的转置运算。
灵敏度分析使用MATLAB编写
实验二、线性规划的灵敏度分析(一) 实验目的1. 线性规划求解的单纯形法的灵敏度分析的编程实现2.掌握使用matlab 、Lingo 、Excel 的规划求解功能求解,并利用“敏感性报告”进行分析。
(二)实验内容课本例 1 解的灵敏度分析 (1):调用单纯形程序:function[x,z,flg,sgma]=simplexfun(A,A1,b,c,m,n,n1,cb,xx) % A,b are the matric in A*x=b% c is the matrix in max z=c*x% A1 is the matric in simplex table% m is the numbers of row in A and n is the con number in A% n1 is the nubers of artificial variables,and artificial variables are default as the last % n1 variables in x.% cb is the worth coefficient matrix for basic variables% xx is the index matrix for basic variables% B1 is the invers matrix for the basic matrix in simplex table.The initial% matrix is default as the last m con in the matrix A.x=zeros(n,1);z=0;B1=A1(:,n-m+1:n); sgma1=c-(cb*B1)*A;[masg,kk]=max(sgma1);k=kk(1);flg=0;ll=0;while (masg>0)&&(ll<20)ll=ll+1;thita=1000+zeros(m,1);for i=1:mif A1(i,k)>0 thita(i)=A1(i,k)\b(i);endend [r8,c8]=find(thita>999);if sum(c8)<m[mith,rr]=min(thita);r=rr(1);aa=A1(r,k);for i=1:mif i==rb(r)=b(r)/aa;for j=1:nA1(r,j)=A1(r,j)/aa ; endendfor i=1:mif i~=rcc=A1(i,k) b(i)=b(i)-b(r)*cc;for j=1:nA1(i,j)=A1(i,j)-A1(r,j)*cc; end endendcb(r)=c(k);xx(r)=k;B1=A1(:,n-m+1:n);sgma1=c-(cb*B1)*A;[masg,kk]=max(sgma1);k=kk(1);thita=100+zeros(m,1);elseflg=3;masg=-1;x='unbound solution';z='inf';endend if flg~=3if n1==0sgma1=c-(cb*B1)*A [rc,ccc]=find(sgma1<-0.0000000001);if sum(rc)==n-mflg=1;elseflg=2;endx=zeros(n,1);for i=1:mx(xx(i))=b(i);endx=zeros (n ,1); for i=1:mx(xx(i))=b(i);endxa=x( (n_n 1+1): n,:); ra=fi nd(xa);if sum(ra)==0sgma仁c-(cb*B1)*A;[rc,ccc]=fi nd(sgma1<-0.00000001);if sum(rc)==n-m flg=1;else flg=2;endz=c*x;elseflg=4;x='nothin g';z='nothin g';endendendsgma=sgma1;ll;A=[1,2,1,0,0;4 0 0 1 0;0 4 0 0 1];A仁A;b=[8;16;12];c=[2 3 0 0 0];m=3;n=5cb=[0 0 0];xx=[3,4,5];然后调用单纯行解法simplexfun111 ;5-fU =求出值,并返回B1,b,然后输入:r=1,2,3求之。
运筹学实验报告线性规划及其灵敏度分析
.
数学与计算科学学院实验报告
实验项目名称线性规划及其灵敏度分析
所属课程名称运筹学B
实验类型综合
实验日期2014年10月24日
班级数学1201班
学号201264100128 成绩
附录1:源程序
附录2:实验报告填写说明
1.实验项目名称:要求与实验教学大纲一致.
2.实验目的:目的要明确,要抓住重点,符合实验教学大纲要求.
3.实验原理:简要说明本实验项目所涉及的理论知识.
4.实验环境:实验用的软、硬件环境.
5.实验方案(思路、步骤和方法等):这是实验报告极其重要的容.概括整个实验过程. 对于验证性实验,要写明依据何种原理、操作方法进行实验,要写明需要经过哪几个步骤来实现其操作.对于设计性和综合性实验,在上述容基础上还应该画出流程图、设计思路和设计方法,再配以相应的文字说明.对于创新性实验,还应注明其创新点、特色. 6.实验过程(实验中涉及的记录、数据、分析):写明具体实验方案的具体实施步骤,包括实验过程中的记录、数据和相应的分析.
7.实验结论(结果):根据实验过程中得到的结果,做出结论.
8.实验小结:本次实验心得体会、思考和建议.
9.指导教师评语及成绩:指导教师依据学生的实际报告容,给出本次实验报告的评价.。
线性规划问题及灵敏度分析
实验一 线性规划问题及灵敏度分析实验目的:了解WinQSB 软件在Windows 环境下的文件管理操作,熟悉软件界面内容,掌握操作命令。
用WinQSB 软件求解线性规划,掌握winQSB 软件写对偶规划,灵敏度分析和参数分析的操作方法。
实验每组人数及学时:组人数1人,学时数:4学时 实验环境:装有WinQSB 软件的个人电脑 实验类型:验证性 实验内容:一、 用WinQSB 软件求解线性规划的方法:操作步骤:1.将WinQSB 文件复制到本地硬盘;在WinQSB 文件夹中双击setup.exe 。
2.指定安装WinQSB 软件的目标目录(默认为C:\ WinQSB )。
3. 安装过程需输入用户名和单位名称(任意输入),安装完毕之后,WinQSB 菜单自动生成在系统程序中。
4.熟悉WinQSB 软件子菜单内容及其功能,掌握操作命令。
5.求解线性规划。
启动程序 开始→程序→WinQSB→Linear and Integer Programming 。
6.学习例题 点击File→Load Problem→lp.lpp, 点击菜单栏Solve and Analyze 或点击工具栏中的图标用单纯形法求解,观赏一下软件用单纯形法迭代步骤。
用图解法求解,显示可行域,点击菜单栏Option →Change XY Ranges and Colors,改变X1、X2的取值区域(坐标轴的比例),单击颜色区域改变背景、可行域等8种颜色,满足你的个性选择。
下面结合例题介绍WinQSB 软件求解线性规划的操作步骤及应用。
用WinQSB 软件求解下列线性规划问题:1234max657Z x x x x =+++s.t. 12341234123123431234269260852150730001020,,0,x x x x x x x x x x x x x x x x x x x x +++≤⎧⎪-+-≥⎪⎪++=⎪-≥⎨⎪-≥⎪≤≤⎪⎪≥⎩无约束解:应用WinQSB 软件求解线性规划问题不必化为标准型,如果是可以线性化的模型则先线性化,对于有界变量及无约束变量可以不用转化,只需要修改系统的变量类型即可,对于不等式约束可以在输入数据时直接输入不等式符号。
LINGO结果窗口内容解读与灵敏度分析
LINGO结果窗⼝内容解读与灵敏度分析1.结果窗⼝内容解读1. ⽬标函数值:Global option solution found.表⽰求出了全局最优解;Objective value表⽰最优⽬标值,Total solver iretion表⽰求解时共⽤了⼏次迭代2. 决策变量:Value给出最优解中各变量的值3. 变量的判别数:Reduced Cost表⽰最优单纯形表中判别数所在的⾏的变量的系数,表⽰当变量有微⼩变化时,⽬标函数的变化率。
其中基变量的reduced cost值应为零。
对于基变量相应的reduced cost值表⽰这个变量增加⼀个单位时⽬标函数值减少的量(max型问题)4. 紧约束与松约束:slack or Surplus给出松弛或剩余变量的值,其值为零的对应约束为"紧约束",表⽰在最优解下该项资源已经⽤完;其值为⾮零的对应约束为"松约束",表⽰在最优解下该项资源还有剩余5. 对偶价格(经济学:影⼦价格):DUAl PRICE(对偶价格)表⽰当对应约束有微⼩变动时⽬标函数的变化率。
输出结果中对应每⼀个"紧约束"有⼀个对偶价格。
若其数值为怕,则表⽰对应约束不等式右端项正好增加⼀个单位,⽬标函数将增加P个单位(max)模型。
显然,如果在最优解处约束条件正好取等号(也就是"紧约束",也称为有效约束或起作⽤约束),对偶价格值才可能不是0.6. 变量框(Variables):Total表⽰当前模型的全部变量数,Nonlinear显⽰其中的⾮线性变量数,Integers显⽰其中的整数变量数。
⾮线性变量是指它⾄少处于某⼀个约束条件中的⾮线性关系中。
7. 约束(Constains)框:Total表⽰当前模型扩展后的全部约束个数,Nonlinear显⽰其中的⾮线性约束个数。
⾮线性约束是该约束⾄少有⼀个⾮线性变量。
如果⼀个约束中的所有变量都是定值,那么该约束就以定值不等式表⽰,该约束的真假由变量的具体值决定,仍计⼊约束总数中。
lingo解决线性规划问题的程序(经典)
lingo解决线性规划问题的程序(经典)•线性规划问题概述•Lingo软件介绍•使用Lingo解决线性规划问题步目录骤•经典线性规划问题案例解析•Lingo在解决线性规划问题中的优势•总结与展望01线性规划问题概述定义:线性规划(Linear Programming,简称LP)是数学规划的一个分支,它研究的是在一组线性约束条件下,一个线性目标函数的最大或最小值问题。
特点目标函数和约束条件都是线性的。
可行域是凸集,即对于任意两个可行解,它们的凸组合仍然是可行解。
最优解如果存在,则一定在可行域的某个顶点上达到。
定义与特点生产计划资源分配运输问题金融投资01020304企业如何安排生产,使得在满足市场需求和资源限制的前提下,成本最低或利润最大。
如何合理分配有限的资源(如资金、人力、时间等),以达到最佳的效果。
如何安排货物的运输路线和数量,使得在满足供需关系的前提下,总运费最低。
投资者如何在一定的风险水平下,使得投资收益最大。
决策变量表示问题的未知量,通常用$x_1, x_2, ldots, x_n$表示。
目标函数表示问题的优化目标,通常是决策变量的线性函数,形如$z = c_1x_1 + c_2x_2 + ldots + c_nx_n$。
约束条件表示问题的限制条件,通常是决策变量的线性不等式或等式,形如$a_{11}x_1 + a_{12}x_2 + ldots + a_{1n}x_n leq (=, geq) b_1$。
01$begin{aligned}02& text{max} quad z = c_1x_1 + c_2x_2 + ldots +c_nx_n03& text{s.t.} quad a_{11}x_1 + a_{12}x_2 + ldots + a_{1n}x_n leq (=, geq) b_1& quadquadquad vdots& quadquadquad a_{m1}x_1 + a_{m2}x_2 + ldots + a_{mn}x_n leq (=, geq) b_m•& \quad\quad\quad x_i \geq 0, i = 1, 2, \ldots, n线性规划问题数学模型end{aligned}$其中,“s.t.”表示“subject to”,即“满足……的条件下”。
线性规划的灵敏度分析实验报告
A( 1, 3) 1.000000 0.000000
A( 1, 4) 0.000000 0.000000
A( 1, 5) 0.000000 0.000000
A( 2, 1) 4.000000 0.000000
A( 2, 2) 0.000000 0.000000
实验项目线性规划的灵敏度分析实验目的掌握用lingolindo对线性规划问题进行灵敏度分析的方法理解解报告的容
《运筹学/线性规划》实验报告
实验室: 实验日期:
实验项目
线性规划的灵敏度分析
系 别
数学系
姓 名
学 号
班 级
指导教师
成 绩
一 实验目的
掌握用Lingo/Lindo对线性规划问题进行灵敏度分析的方法,理解解报告的内容。初步掌握对实际的线性规划问题建立数学模型,并利用计算机求解分析的一般方法。
X( 1) 2.000000 INFINITY 2.000000
X( 2) 3.000000 INFINITY 3.000000
X( 3) 0.0 1.500000 INFINITY
X( 4) 0.0 0.5000000 INFINITY
X( 5) 0.0 0.7500000 INFINITY
Righthand Side Ranges
X( 3) 0.000000 1.500000
X( 4) 0.000000 0.1250000
X( 5) 4.000000 0.000000
A( 1, 1) 1.000000 0.000000
A( 1, 2) 2.000000 0.000000
A( 1, 3) 1.000000 0.000000
线性规划的灵敏度分析与应用知识点总结
线性规划的灵敏度分析与应用知识点总结线性规划是一种重要的数学优化方法,它通过建立一个数学模型,根据特定的约束条件和目标函数,求解出使目标函数取得最大(最小)值的决策变量的取值。
而灵敏度分析则是针对线性规划模型中的参数进行变动时,目标函数值和决策变量的取值产生的变化进行评估和分析。
本文将对线性规划的灵敏度分析进行总结,并探讨其在实际应用中的一些重要知识点。
一、灵敏度分析的基本概念和原理灵敏度分析是指在线性规划模型中,通过变动参数的大小和取值范围,分析其对目标函数值和决策变量的解产生的影响程度。
主要包括以下几个方面的分析内容:1. 目标函数系数的灵敏度分析目标函数系数表示决策变量对目标函数的贡献程度,通过改变目标函数系数可以分析目标函数值的变动情况。
当目标函数系数发生较大变动时,可能导致最优解的决策变量发生改变。
2. 约束条件右侧常数的灵敏度分析约束条件的右侧常数表示资源的可利用程度,通过改变约束条件右侧常数可以分析资源的利用程度对决策变量解的影响。
当约束条件右侧常数发生较大变动时,可能会改变最优解的取值范围。
3. 决策变量的灵敏度分析决策变量的灵敏度分析可以评估决策变量值的改变对目标函数值和约束条件的违背程度产生的影响。
通过改变决策变量的取值范围,可以判断最优解的稳定性和可行性。
二、灵敏度分析的具体应用灵敏度分析在实际应用中有广泛的应用价值,主要包括以下几个方面:1. 评估模型的可靠性通过灵敏度分析,可以评估线性规划模型中参数的变动对解的影响程度,从而判断模型的可靠性和稳定性。
当参数变动对解的影响较小时,说明模型具有较好的鲁棒性。
2. 制定决策方案灵敏度分析可以帮助决策者评估决策方案的可行性和稳定性,从而选取出最优的决策方案。
在实际应用中,决策者可以通过改变参数的取值范围,确定决策方案的合理范围。
3. 资源优化分配通过灵敏度分析,可以评估资源可利用程度的变动对决策变量的解产生的影响。
在资源有限的情况下,通过调整资源的利用程度,实现资源的优化分配。
【精品】LINGO软件灵敏度分析
【精品】LINGO软件灵敏度分析LINGO是一种非常实用的数学建模软件,可用于线性规划、非线性规划、整数规划、混合整数规划、二次规划、非线性二次规划、全局优化、动态规划等方面。
在LINGO中,灵敏度分析可以帮助用户更好地理解线性规划问题的解,并探究约束、变量、最优值等因素的变化对于优化结果的影响。
下面将详细介绍LINGO软件的灵敏度分析功能。
一、约束灵敏度分析在LINGO中,可以通过在“呼出”窗口中选择“求解”菜单,再选中“灵敏度分析”,来进行约束灵敏度分析。
当我们需要对某一约束条件进行灵敏度分析时,可以在“PSens”一栏中选中要进行分析的约束条件,并选择需要分析的灵敏度类型:1. 左侧界(Lower Bound)灵敏度分析:在该约束条件的左侧界上下浮动,观察最优解随着左侧界的变化而产生的变化情况。
进行变量灵敏度分析时,LINGO会输出一个名为“Variable Sensitivity”的窗口,其中包含了与所选中变量相关的数据,如灵敏度系数、上/下限边界、最小可行解等。
另外,该窗口还提供了一个“Graph”选项卡,可以展示出灵敏度分析的图表,帮助用户更直观地理解灵敏度的变化情况。
在LINGO中,最优解灵敏度分析可以探究最优解随着目标函数系数的变化而产生的变化情况。
用户可以在“呼出”窗口中选择“求解”菜单,再选中“灵敏度分析”,然后在“Objective Sensitivity”选项卡中选中需要进行分析的目标函数变量。
总之,LINGO软件的灵敏度分析功能可以在优化过程中帮助用户更好地了解问题的解,探究约束、变量、目标函数系数等因素对应问题的影响,帮助用户优化模型,从而达到更好的优化效果。
应用LINGO和MATLAB软件求解线性规划讲解
x1 2x2 8
s.t
4
x1
16 4x2 12
x1, x2 0
在LINGO的MODEL窗口内输入如下模型:
model:
max=2*x1+3*x2;
x1+2*x2<=8;
4*x1<=16;
4*x2<=12;
End
选菜单Lingo|Solve(或按Ctrl+U),或用鼠标点击“求解”
即约束条件左边与右边的差值,对于“ ”的不等式,右边减
左边的差值为Slack(松弛),对于“ ”的不等式,左边减
的右边差值为Surplus(剩余),当约束条件两边相等时,松 弛或剩余的值等于零。
“Dual Price”的意思是对偶价格(或称为影子价格),上述 报告中Row2的松弛值为0,表明生产甲产品4单位、乙产品 2单位,所需设备8台时已经饱和,对偶价格1.5的含义是: 如果设备增加1台时,能使目标函数值增加1.5。报告中 Row4的松弛值为4,表明生产甲产品4单位、乙产品2单位, 所需原材料乙8公斤还剩余4公斤,因此增加原材料乙不会 使目标函数值增加,所以对偶价格为0。
3 0.000000
0.1250000
4 4.000000
0.000000
该报告说明:运行5步找到全局最优解,目标函数值为14,变 量值分别为 x1 4, x2 2 。“Reduced Cost”的含义是需缩减成 本系数或需增加利润系数(最优解中取值非零的决策变量的
Reduced Cost值等于零)。“Row”是输入模型中的行号,目 标函数是第一行;“Slack or Surplus”的意思是松弛或剩余,
约束条件个数、优化状态、耗费内存、所花时间等信 息, 点击Close关闭窗口, 屏幕上出现标题为“Solution Report”(解的报告)的信息窗口, 显示优化计算(线性规 划中换基迭代)的步数、优化后的目标函数值、列出各 变量的计算结果。
线性规划问题的求解方法
例5 model: max=3*x1+2*x2; 2*x1+3*x2<=14; 2*x1+x2<9; @gin(x1); @gin(x2); end
例6 model: max=x1+x2; 3*x1+2*x2+x3<=10; 2*x2+x4<=5; @gin(x1); @gin(x2); end
gy=10 15 25 40 10; xq=9 17 22 33 14 5; enddata [obj] min=@sum(link:c*x);
@for(supply(i):[supply_con] @sum(demond(j):x(i,j))=gy(i););
@for(demond(j):[demond_con] @sum(supply(i):x(i,j))=xq(j);); end
精品课件!
精品课件!
自编matlab程序求解运输问题
线性规划问题的求 解方法
一、利用MATLAB软件中的linprog 命令求解
1.求解线性规划问题 min S f * X s.t. AX b
格式为:x=linprog(f,A,b)
[x,fval]=linprog(f,A,b)
2.求解线性规划问题
min S f * X
注:x,b不要求非负
s.t.
最优解为(2,1),最优值为13. 最优解为整数解,故整数 规划问题的最优解就是(2,1),最优值为13
运输问题的初始调运方案的编制
z 1.希奇柯克法:xiqikeke1 z 2.主对角线法:zhuduijiaoxian2 z 3.最小元素法:zuixiaoyuan3 z 4.小元素差额法:xiaoyuancha4
matlab、lingo程序代码23-线性规划问题及灵敏度分析
matlab、lingo程序代码23-线性规划问题及灵敏度分析线性规划问题及灵敏度分析在LINGO软件中的实现(龙少波李东阳罗添元)一、问题的提出:某公司饲养实验用的动物以出售给动物研究所,已知这些动物的生长对饲料中3种营养成分(蛋白质、矿物质和维生素)特别敏感,每个动物每周至少需要蛋白质60g,矿物质3g,维生素8mg,该公司能买到5种不同的饲料,每种饲料1kg所含各种营养成分和成本如下表所示,如果每个小动物每周食用饲料不超过52kg,才能满足动物生长需要。
A1 A2 A3 A4 A5 营养最低要求蛋白质(g) 0.3 2 1 0.6 1.8 60 矿物质(g) 0.1 0.05 0.02 0.2 0.05 3 维生素(mg) 0.05 0.1 0.02 0.2 0.08 8 成本(元/ kg)0.2 0.7 0.4 0.3 0.5问题:1.求使得总成本最低的饲料配方?2.如果另一个动物研究对蛋白质的营养要求变为59单位,但是要求动物的价格比现在的价格便宜0.3元,问该养殖所值不值得接受?3.由于市场因素的影响,X2的价格降为0.6元每千克,问是否要改变饲料配方?二、建立线性规划数学模型解答:(1)设需要饲料A1, A2, A3, A4分别为X1, X2, X3, X4kg,则建立线性规划数学模型如下:目标函数:MinS=0.2X1+0.7X2+0.4X3+0.3X4+0.5X5约束条件:0.3X1+2X2+X3+0.6X4+1.8X5>=600.1X1+0.05X2+0.02X3+0.2X4+0.05X5>=3005X1+0.1X2+0.02X3+0.2X4+0.08X5>=8X1+X2+X3+X4+X5<=52X1, X2, X3, X4, X5>=0三、在LINGO软件中的求解在LINGO中输入下面的命令:Model:Min=0.2*x1+0.7*x2+0.4*x3+0.3*x4+0.5*x5;0.3*x1+2*x2+x3+0.6*x4+1.8*x5>60;0.1*x1+0.05*x2+0.02*x3+0.2*x4+0.05*x5>3;0.05*x1+0.1*x2+0.02*x3+0.2*x4+0.08*x5>8;x1+x2+x3+x4+x5<52;end操作:选菜单Lingo|Solve(或按Ctrl+S),或用鼠标点击“求解”按纽,如果模型有语法错误,则弹出一个标题为“LINGO Error Message”(错误信息)的窗口,指出在哪一行有怎样的错误,每一种错误都有一个编号(具体含义可查阅相关文献或LINGO的Help).改正错误以后再求解,如果语法通过,LINGO用内部所带的求解程序求出模型的解,然后弹出一个标题为“LINGO Solver Status”(求解状态)的窗口,其内容为变量个数、约束条件个数、优化状态、耗费内存、所花时间等信息,点击Close关闭窗口,屏幕上出现标题为“Solution Report”(解的报告)的信息窗口,显示优化计算(线性规划中换基迭代)的步数、优化后的目标函数值、列出各变量的计算结果.输出结果如下:Global optimal solution found at iteration: 4Objective value: 22.40000Variable Value Reduced CostX1 0.000000 0.7000000X2 12.00000 0.000000X3 0.000000 0.6166667X4 30.00000 0.000000X5 10.00000 0.000000Row Slack or Surplus Dual Price1 22.40000 -1.0000002 0.000000 -0.58333333 4.100000 0.0000004 0.000000 -4.1666675 0.000000 0.8833333四、结果分析:(一) 一般分析1.因此,每周每个动物的配料为饲料A2、A4、A5分别为12、30和10kg,合计为52KG,可使得饲养成本达到最小,最小成本为22.4元;2. “Reduced Cost”表示当变量有微小变动时, 目标函数的变化率。
Matlab线性规划问题模型代码
Matlab线性规划问题模型代码线性规划问题的基本内容线性规划解决的是⾃变量在⼀定的线性约束条件下,使得线性⽬标函数求得最⼤值或者最⼩值的问题。
min z=n ∑j=1f j x js.t. {∑n j=1a ij x j⩽其中价值系数向量为\mathbf{F}=\left(f_{1}, f_{2}, \cdots, f_{n}\right)^{\mathrm{T}}决策变量向量为\mathbf{X}=\left(x_{1}, x_{2}, \cdots, x_{n}\right)^{\mathrm{T}}不等式约束系数矩阵为\mathbf{A}=\left(\begin{array}{ccc}{a_{11}} & {\cdots} & {a_{1 n}} \\ {\vdots} & {\ddots} & {\vdots} \\ {a_{m 1}} & {\cdots} & {a_{m n}}\end{array}\right)不等式右端常数向量为\mathbf{B}=\left(b_{1}, b_{2}, \cdots, b_{n}\right)^{\mathrm{T}}等式约束系数矩阵为\mathbf{A}_{eq} = \left(\begin{array}{ccc}{a_{11}^{\mathrm{cq}}} & {\cdots} & {a_{1 n}^{\mathrm{cq}}} \\ {\vdots} &{\ddots} & {\vdots} \\ {a_{\mathrm{h1}}^{\mathrm{eq}}} & {\cdots} & {a_{\mathrm{hn}}^{\mathrm{eq}}}\end{array}\right)等式右端常数向量为\mathbf{B}_{\mathrm{eq}}=\left(b_{1}^{\mathrm{eq}}, b_{2}^{\mathrm{eq}}, \cdots,b_{\mathrm{h}}^{\mathrm{eq}}\right)^{\mathrm{T}}决策变量下界向量为\mathbf{L B}=\left(\mathrm{lb}_{1}, \mathrm{lb}_{2}, \cdots, \mathrm{lb}_{n}\right)^{\mathrm{T}}决策变量上界变量为\mathbf{UB}=\left(\mathrm{ub}_{1}, \mathrm{ub}_{2}, \cdots, \mathrm{ub}_{n}\right)^{\mathrm{T}}当⽬标函数为最⼩值时,上述问题可以写成如下形式:\min z=\boldsymbol{F}^{\mathrm{T}} \boldsymbol{X}\text { s.t. }\left\{\begin{array}{l}{\mathbf{A}\mathbf{X} \leqslant \mathbf{B}} \\ {\mathbf{A}_{\mathrm{eq}}\mathbf{X}=\mathbf{B}_{\mathrm{eq}}} \\ {\mathbf{LB} \leqslant \mathbf{X} \leqslant \mathbf{UB}}\end{array}\right.当⽬标函数为最⼤值时,上述问题可以写成如下形式:\max z=\boldsymbol{-F}^{\mathrm{T}} \boldsymbol{X}\text { s.t. }\left\{\begin{array}{l}{\mathbf{A}\mathbf{X} \leqslant \mathbf{B}} \\ {\mathbf{A}_{\mathrm{eq}}\mathbf{X}=\mathbf{B}_{\mathrm{eq}}} \\ {\mathbf{LB} \leqslant \mathbf{X} \leqslant \mathbf{UB}}\end{array}\right. Matlab模型代码调⽤形式[X,FVAL,EXITFLAG,OUTPUT,LAMBDA] = linprog(F,A,B,Aeq,Beq,LB,UB) % ⽬标函数为最⼩值[X,FVAL,EXITFLAG,OUTPUT,LAMBDA] = linprog(-F,A,B,Aeq,Beq,LB,UB) % ⽬标函数为最⼤值输⼊变量F 为⽬标函数中的价值系数向量A 为不等式约束系数矩阵(注意默认不等式⽅向为⼩于等于,若为⼤于等于,需要将其取相反数)B 为不等式右端常数向量(注意默认不等式⽅向为⼩于等于,若为⼤于等于,需要将其取相反数)Aeq 为等式约束系数矩阵Beq 为等式右端常数向量LB 为决策变量下界向量UB为决策变量上界向量在调⽤时,输⼊参数不存在时,可以将其输⼊⽤ [] 空矩阵表⽰。
最优化方法——用Lingo对线性规划进行灵敏度分析
lingo 软件求解线性规划及灵敏度分析注:以目标函数最大化为例进行讨论,对求最小的问题,有类似的分析方法!所有程序运行环境为lingo10。
一、用lingo 软件求解线性规划例1:max 23..43103512,0z x y s t x y x y x y =++≤+≤≥在模型窗口输入:model: max=2*x+3*y; 4*x+3*y<=10; 3*x+5*y<12;! the optimal value is :7.454545 ; End 如图所示:运行结果如下(点击 工具栏上的‘solve ’或点击菜单‘lingo ’下的‘solve ’即可):Global optimal solution found.Objective value: 7.454545(最优解函数值) Total solver iterations: 2(迭代次数)Variable (最优解) Value Reduced Cost X 1.272727 0.000000 Y 1.636364 0.000000Row Slack or Surplus Dual Price 1 7.454545 1.000000 2 0.000000 0.9090909E-01 3 0.000000 0.5454545例2:12123124125max 54..390280450z x x s t x x x x x x x x x x =+++=++=++=≥ 在模型窗口输入:model:max=5*x1+4*x2; x1+3*x2+x3=90; 2*x1+x2+x4=80; x1+x2+x5=45; end运行(solve )结果如下:Global optimal solution found.Objective value: 215.0000 Total solver iterations: 3Variable Value Reduced Cost X1 35.00000 0.000000 X2 10.00000 0.000000 X3 25.00000 0.000000 X4 0.000000 1.000000 X5 0.000000 3.000000Row Slack or Surplus Dual Price 1 215.0000 1.000000 2 0.000000 0.000000 3 0.000000 1.000000 4 0.000000 3.000000例323123234235min 2..223120z x x s t x x x x x x x x x x =-+-+=-+=-+=≥ 在模型窗口输入:model:min=-x2+2*x3; x1-2*x2+x3=2; x2-3*x3+x4=1; x2-x3+x5=2; end运行结果如下:Global optimal solution found.Objective value: -1.500000 Total solver iterations: 2Variable Value Reduced Cost X2 2.500000 0.000000 X3 0.5000000 0.000000 X1 6.500000 0.000000 X4 0.000000 0.5000000 X5 0.000000 0.5000000Row Slack or Surplus Dual Price 1 -1.500000 -1.000000 2 0.000000 0.000000 3 0.000000 0.5000000 4 0.000000 0.5000000例4:min ..124x y z s t x y x z +++≤+= 在模型窗口输入:model :min =@abs (x)+@abs (y)+@abs (z); x+y<1; 2*x+z=4; @free (x); @free (y); @free (z);End求解器状态如下:(可看出是非线性模型!)运行结果为:Linearization components added:Constraints: 12Variables: 12Integers: 3Global optimal solution found.Objective value: 3.000000Extended solver steps: 0Total solver iterations: 4Variable Value Reduced Cost X 2.000000 0.000000Y -1.000000 0.000000 Z 0.000000 0.000000Row Slack or Surplus Dual Price1 3.000000 -1.0000002 0.000000 1.0000003 0.000000 -1.000000二、用lingo软件进行灵敏度分析实例例5:max 603020864842 1.5202 1.50.585,,0S x y z x y z x y z x y z y x y z =++++≤++≤++≤≤≥在模型窗口输入: Lingo 模型:model:max=60*x+30*y+20*z; 8*x+6*y+z<48; 4*x+2*y+1.5*z<20; 2*x+1.5*y+0.5*z<8; y<5; end(一)求解报告(solution report )通过菜单Lingo →Solve 可以得到求解报告(solution report )如下:Global optimal solution found at iteration: 0 Objective value: 280.0000Variable Value Reduced Cost X 2.000000 0.000000 Y 0.000000 5.000000 Z 8.000000 0.000000Row Slack or Surplus Dual Price 1 280.0000 1.000000 2 24.00000 0.000000 3 0.000000 10.00000 4 0.000000 10.00000 5 5.000000 0.000000分析Value,Reduced Cost ,Slack or Surplus ,Dual Price 的意义如下: 1、最优解和基变量的确定Value 所在列给出了问题的最优解。
基于Matlab和Lingo的线性规划问题求解过程对比分析
图1最小值的求解图在Matlab 中没有求最大值函数,因此需要先将目标转化为最小值问题:min (-f )=-3x 1-7x 2;s.tx 1≤7x 2≤6x 1,x 2>0x 1+2x 2≤17⎧⎩⏐⏐⏐⏐⏐⏐⎨⏐⏐⏐⏐⏐⏐,然后进行转换即可。
Matlab 中代码设计如下:>>f =[-3,-7];>>A =[1,0;0,1;1,2];>>b =[7,6,17];>>lb =[0,0];>>[x ,fval ]=linprog (f ,A ,b ,[],[],lb )Optimization terminated.可得到x =5.0000fval =-57.00006.0000可以发现x 1和x 2取值都符合要求,即maxf =fval*(-1),则maxf =57.0000。
2.2.2基于Lingo 求线性规划最优解图2最大值的求解图3结论通过以上的基于两种软件的求最优值的过程对比可以得出,不管是使用Matlab还是Lingo,两种方法一样,但求解的程序形式有着较大的差异。
Matlab中,需要用到数组(矩阵)的知识点,所以可能需要前期的学习过程作为铺垫。
同时,也可以明显知道,Matlab中的程序接口是已经写好的,即linprog的使用格式是固定的,就线性规划而言,在日常生活中,需要使用的整数性的线性规划时就会受到一定的限制,一般的情况下,整数情况可能较少,所以关于小数化整数的过程需要自己进行编译,因此,这一过程可能对初学者很不友善,受到一定的制约。
但Matlab在进行规模庞大的变量运算时具有很大的优势,在非线性(上接第33页)息融合NFE模型的研究及应用[J].电子与信息。
lingo灵敏度分析实例
一个实例理解Lingo的灵敏性分析线性规划问题的三个重要概念:最优解就是反应取得最优值的决策变量所对应的向量。
最优基就是最优单纯形表的基本变量所对应的系数矩阵如果其行列式是非奇异的,则该系数矩阵为最优基。
最优值就是最优的目标函数值。
Lingo的灵敏性分析是研究当目标函数的系数和约束右端项在什么范围(此时假定其它系数不变)时,最优基保持不变。
灵敏性分析给出的只是最优基保持不变的充分条件,而不一定是必要条件。
下面是一道典型的例题。
一奶制品加工厂用牛奶生产A1,A2两种奶制品,1桶牛奶可以在甲车间用12小时加工成3公斤A1,或者在乙车间用8小时加工成4公斤A2。
根据市场需求,生产的A1,A2全部能售出,且每公斤A1获利24元,每公斤A2获利16元。
现在加工厂每天能得到50桶牛奶的供应,每天正式工人总的劳动时间480小时,并且甲车间每天至多能加工100公斤A1,乙车间的加工能力没有限制。
试为该厂制订一个生产计划,使每天获利最大,并进一步讨论以下3个附加问题:1)若用35元可以买到1桶牛奶,应否作这项投资?若投资,每天最多购买多少桶牛奶?2)若可以聘用临时工人以增加劳动时间,付给临时工人的工资最多是每小时几元?3)由于市场需求变化,每公斤A1的获利增加到30元,应否改变生产计划?模型代码:max=72*x1+64*x2;x1+x2<=50;12*x1+8*x2<=480;3*x1<=100;运行求解结果:Objective value: 3360.000Variable Value Reduced CostX1 20.00000 0.000000X2 30.00000 0.000000Row Slack or Surplus Dual Price1 3360.000 1.0000002 0.000000 48.000003 0.000000 2.0000004 40.00000 0.000000这个线性规划的最优解为x1=20,x2=30,最优值为z=3360,即用20桶牛奶生产A1, 30桶牛奶生产A2,可获最大利润3360元。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
线性规划问题及灵敏度分析在LINGO软件中的实现
(龙少波李东阳罗添元)
一、问题的提出:
某公司饲养实验用的动物以出售给动物研究所,已知这些动物的生长对饲
料中3种营养成分(蛋白质、矿物质和维生素)特别敏感,每个动物每周至少需
要蛋白质60g,矿物质3g,维生素8mg,该公司能买到5种不同的饲料,每种饲
料1kg所含各种营养成分和成本如下表所示,如果每个小动物每周食用饲料不超
过52kg,才能满足动物生长需要。
A1 A2 A3 A4 A5 营养最
低
要求蛋白质(g) 0.3 2 1 0.6 1.8 60 矿物质(g) 0.1 0.05 0.02 0.2 0.05 3 维生素(mg) 0.05 0.1 0.02 0.2 0.08 8 成本(元/ kg)0.2 0.7 0.4 0.3 0.5
问题:
1.求使得总成本最低的饲料配方?
2.如果另一个动物研究对蛋白质的营养要求变为59单位,
但是要求动物的价格比现在的价格便宜0.3元,问该养殖所
值不值得接受?
3.由于市场因素的影响,X2的价格降为0.6元每千克,
问是否要改变饲料配方?
二、建立线性规划数学模型
解答:
(1)设需要饲料A1, A2, A3, A4分别为X1, X2, X3, X4kg,则建立线
性规划数学模型如下:
目标函数:MinS=0.2X1+0.7X2+0.4X3+0.3X4+0.5X5
约束条件:0.3X1+2X2+X3+0.6X4+1.8X5>=60
0.1X1+0.05X2+0.02X3+0.2X4+0.05X5>=3
005X1+0.1X2+0.02X3+0.2X4+0.08X5>=8
X1+X2+X3+X4+X5<=52
X1, X2, X3, X4, X5>=0
三、在LINGO软件中的求解
在LINGO中输入下面的命令:
Model:
Min=0.2*x1+0.7*x2+0.4*x3+0.3*x4+0.5*x5;
0.3*x1+2*x2+x3+0.6*x4+1.8*x5>60;
0.1*x1+0.05*x2+0.02*x3+0.2*x4+0.05*x5>3;
0.05*x1+0.1*x2+0.02*x3+0.2*x4+0.08*x5>8;
x1+x2+x3+x4+x5<52;
end
操作:选菜单Lingo|Solve(或按Ctrl+S),或用鼠标点击“求解”按纽,如果模型有语法错误,则弹出一个标题为“LINGO Error Message”(错误信息)的窗口,指出在哪一行有怎样的错误,每一种错误都有一个编号(具体含义可查阅相关文献或LINGO的Help).改正错误以后再求解,如果语法通过,LINGO用内部所带的求解程序求出模型的解,然后弹出一个标题为“LINGO Solver Status”(求解状态)的窗口,其内容为变量个数、约束条件个数、优化状态、耗费内存、所花时间等信息,点击Close关闭窗口,屏幕上出现标题为“Solution Report”(解的报告)的信息窗口,显示优化计算(线性规划中换基迭代)的步数、优化后的目标函数值、列出各变量的计算结果.
输出结果如下:
Global optimal solution found at iteration: 4
Objective value: 22.40000
Variable Value Reduced Cost
X1 0.000000 0.7000000
X2 12.00000 0.000000
X3 0.000000 0.6166667
X4 30.00000 0.000000
X5 10.00000 0.000000
Row Slack or Surplus Dual Price
1 22.40000 -1.000000
2 0.000000 -0.5833333
3 4.100000 0.000000
4 0.000000 -4.166667
5 0.000000 0.8833333
四、结果分析:
(一) 一般分析
1.因此,每周每个动物的配料为饲料A2、A4、A5分别为12、30和10kg,合计为52KG,可使得饲养成本达到最小,最小成本为2
2.4元;
2. “Reduced Cost”表示当变量有微小变动时, 目标函数的变化率。
其中基变量的reduced cost值应为0,对于非基变量Xj, 相应的reduced cost值表示当某个变量Xj 增加一个单位时目标函数增加的量。
变量X1对应的reduced cost值为0.7,表示当非基变量x1的值从0变为1时(此时假定其他非基变量保持不变,但为了满足约束条件,基变量显然会发生变化),最优的目标函数值= 22.4+0.7 = 2
3.1。
3.“Slack or Surplus”给出松驰变量的值:可以看出,蛋白质和维生素刚达到最低标准,矿物质超过最低标准
4.1g;
4.“DUAL PRICE”(对偶价格)表示当对应约束有微小变动时, 目标函数的变化率。
输出结果中对应于每一个约束有一个对偶价格。
若其数值为p,表示对应约束中不等式右端项若增加1 个单位,目标函数将增加p个单位(max型问题)。
显然,如果在最优解处约束正好取等号(也就是“紧约束”,也称为有效约束或起作用约束),对偶价格值才可能不是0. 从“Dual Price”可以得到:
1.降低标准蛋白质1单位可使饲养成本降低0.583元,(第二个问题答案)
2.降低标准维生素1单位可使饲养成本降低4.167元,
3.降低矿物质的标准不会降低饲养成本,
4.如果动物的进食量减少,就必须选取精一些的饲料但要增加成本,大约进食量降低1kg可使得饲养成本增加0.88元.
(二)灵敏度分析
对于目标函数系数和约束条件右端常数项的灵敏度分析,可以通过LINGO软件求解的灵敏度分析给出.如果要看灵敏度分析结果,必须激活灵敏度计算功能才会在求解时给出灵敏度分析结果,默认情况下这项功能是关闭的.想要激活它,必须运行LINGO|Options…命令,选择Gengral Solver,在Dual Computation列表框中,选择Prices and Ranges选项并确定.
Ranges in which the basis is unchanged:
Objective Coefficient Ranges
Current Allowable Allowable Variable Coefficient Increase Decrease
X1 0.2000000 INFINITY 0.7000000
X2 0.7000000 INFINITY 0.1358974
X3 0.4000000 INFINITY 0.6166667
X4 0.3000000 1.400000 1.000000
X5 0.5000000 0.1247059 INFINITY
Right hand Side Ranges
Row Current Allowable Allowable
RHS Increase Decrease
2 60.00000 4.800000 4.800000
3 3.000000 4.100000 INFINITY
4 8.000000 0.3428571 0.4800000 4
5 52.00000 1.846154 1.411765
(1)系数价格变化的分析:
目标函数中X1原来的费用系数为0.2,允许增加(Allowable Increase)到无穷大、或者允许减少(Allowable Decrease)=0.7,说明当它在[0,+∞]范围变化时,最优基保持不变。
由于此时约束没有变化(只是目标函数中某个费用系数发生变化),所以最优基保持不变的意思也就是最优解不变(当然,由于目标函数中费用系数发生了变化,所以最优值会变化)。
对于X2来说,目标函数中原来的费用系数为0.7,允许增加(Allowable Increase)到无穷大、或者允许减少(Allowable Decrease)=0.136,说明当它在[0.7-0.136,+∞]=[0.564, +∞]范围变化时,最优
基保持不变。
(第三个问题答案)
(2)约束中右端项变化的分析:
第2行约束中右端项(Right Hand Side,简写为RHS)原来为60,当它在[60-4.8,60+4.8] = [55.2,64.8]范围变化时,最优基保持不变。
第3、4、5行可以类似解释。
不过由于此时约束发生变化,最优基即使不变,最优解、最优值也会发生变化。