实验1 线性规划.docx

上传人:b****8 文档编号:9964086 上传时间:2023-02-07 格式:DOCX 页数:12 大小:80.97KB
下载 相关 举报
实验1 线性规划.docx_第1页
第1页 / 共12页
实验1 线性规划.docx_第2页
第2页 / 共12页
实验1 线性规划.docx_第3页
第3页 / 共12页
实验1 线性规划.docx_第4页
第4页 / 共12页
实验1 线性规划.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

实验1 线性规划.docx

《实验1 线性规划.docx》由会员分享,可在线阅读,更多相关《实验1 线性规划.docx(12页珍藏版)》请在冰豆网上搜索。

实验1 线性规划.docx

实验1线性规划

实验一线性规划

实验目的

1.对于给定的实际应用问题,正确的建立线性规划问题数学模型,并用LINGO或MATLAB求解;

2.掌握灵敏度分析以及资源的影子价格的相关分析方法.

实验数据与内容

问题1.1某工厂在计划期内要安排生产A、B两种产品,已知生产单位产品所需设备台时及对甲、乙两种原材料的消耗,有关数据如表1.1.问:

应如何安排生产计划,使工厂获利最大?

.

问题1.2某公司饲养实验用的动物以供出售,已知这些动物的生长对饲料中3种营养成分(蛋白质、矿物质和维生素)特别敏感,每个动物每周至少需要蛋白质60g,矿物质3g,维生素8mg,该公司能买到5种不同的饲料,每种饲料1kg所含各种营养成分和成本如表

1.2所示,如果每个小动物每周食用饲料不超过52kg,求既能满足动物生长需要,又使总成本最低的饲料配方.

一、用LINGO求解线性规划

LINGO使用简介

LINGO软件是美国的LINDO系统公司(LindoSystemInc)开发的一套用于求解最优化问题的软件包.LINGO除了能用于求解线性规划和二次规划外,还可以用于非线性规划求解以及一些线性和非线性方程(组)的求解.LINGO软件的最大特色在于它允许优化模型中的决策变量为整数,而且执行速度快.LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果,这里简单介绍LINGO的使用方法.

LINGO可以求解线性规划、二次规划、非线性规划、整数规划、图论及网络优化和排队论模型中的最优化问题等.

一个LINGO程序一般会包含集合段、数据输入段、优化目标和约束段、初始段和数据预处理段等部分,每一部分有其独特的作用和语法规则,读者可以通过查阅相关的参考书或者LINGO的HELP文件详细了解,这里就不展开介绍了.

LINGO的主要功能特色为:

既能求解线性规划问题,也有较强的求解非线性规划问题的能力;输入模型简练直观;运算速度快、计算能力强;内置建模语言,提供几十个内部函数,从而能以较少语句,较直观的方式描述大规模的优化模型;将集合的概念引入编程语言,很容易将实际问题转换为LINGO模型;并且能方便地与Excel、数据库等其他软件交换数据.

LINGO的语法规定:

(1)求目标函数的最大值或最小值分别用MAX=…或MIN=…来表示;

(2)每个语句必须以分号“;”结束,每行可以有许多语句,语句可以跨行;

(3)变量名称必须以字母(A~Z)开头,由字母、数字(0~9)和下划线所组成,长度不超过32个字符,不区分大小写;

(4)可以给语句加上标号,例如[OBJ]MAX=200*X1+300*X2;

(5)以惊叹号“!

”开头,以分号“;”结束的语句是注释语句;

(6)如果对变量的取值范围没有作特殊说明,则默认所有决策变量都非负;

(7)LINGO模型以语句“MODEL:

”开头,以“END”结束,对于比较简单的模型,这两个语句可以省略.

实验目的

1.对于给定的实际应用问题,正确的建立线性规划问题数学模型,并用LINGO或MATLAB求解;

2.掌握灵敏度分析以及资源的影子价格的相关分析方法.

实验指导

例1、问题1.1设计划生产A,B两种产品分别为x1,x2,则建立线性规划问题数学模型

在LINGO的MODEL窗口内输入如下模型:

model:

max=2*x1+3*x2;

x1+2*x2<=8;

4*x1<=16;

4*x2<=12;

end

选菜单Lingo|Solve(或按Ctrl+S),或用鼠标点击“求解”按纽,如果模型有语法错误,则弹出一个标题为“LINGOErrorMessage”(错误信息)的窗口,指出在哪一行有怎样的错误,每一种错误都有一个编号(具体含义可查阅相关文献或LINGO的Help).改正错误以后再求解,如果语法通过,LINGO用内部所带的求解程序求出模型的解,然后弹出一个标题为“LINGOSolverStatus”(求解状态)的窗口,其内容为变量个数、约束条件个数、优化状态、耗费内存、所花时间等信息,点击Close关闭窗口,屏幕上出现标题为“SolutionReport”(解的报告)的信息窗口,显示优化计算(线性规划中换基迭代)的步数、优化后的目标函数值、列出各变量的计算结果.求解结果:

Globaloptimalsolutionfoundatiteration:

5

Objectivevalue:

14.00000

VariableValueReducedCost

X14.0000000.000000

X22.0000000.000000

RowSlackorSurplusDualPrice

114.000001.000000

20.0000001.500000

30.0000000.1250000

44.0000000.000000

该报告说明:

运行5步找到全局最优解,目标函数值为14,变量值分别为x1=4,x2=2.“ReducedCost”的含义是需缩减成本系数或需增加利润系数(最优解中取值非零的决策变量的ReducedCost值等于零).“Row”是输入模型中的行号,目标函数是第一行;“SlackorSurplus”的意思是松弛或剩余,即约束条件左边与右边的差值,对于“≤”的不等式,右边减左边的差值为Slack(松弛),对于“≥”的不等式,左边减右边的差值为Surplus(剩余),当约束条件两边相等时,松弛或剩余的值等于零.“DualPrice”的意思是对偶价格(或称为影子价格),上述报告中Row2的松弛值为0,表明生产甲产品4单位、乙产品2单位,所需设备8台时已经饱和,对偶价格1.5的含义是:

如果设备增加1台时,能使目标函数值增加1.5.报告中Row4的松弛值为4,表明生产甲产品4单位、乙产品2单位,所需原材料乙8公斤还剩余4公斤,因此增加原材料乙不会使目标函数值增加,所以对偶价格为0.

例2、问题1.2设需要饲料A1,A2,A3,A4,A5分别为x1,x2,x3,x4,x5kg,则建立线性规划数学模型:

在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;

求解输出结果如下:

Globaloptimalsolutionfoundatiteration:

4

Objectivevalue:

22.40000

VariableValueReducedCost

X10.0000000.7000000

X212.000000.000000

X30.0000000.6166667

X430.000000.000000

X510.000000.000000

RowSlackorSurplusDualPrice

122.40000-1.000000

20.000000-0.5833333

34.1000000.000000

40.000000-4.166667

50.0000000.8833333

因此,每周每个动物的配料为饲料A2、A4、A5分别为12kg、30kg和10kg,合计为52kg,可使得饲养成本达到最小,最小成本为22.4元;不选用饲料A1和A3的原因是因为这两种饲料的价格太高了,没有竞争力.“ReducedCost”分别等于0.7和0.617,说明当这

不仅选用这两种饲料而且使得饲养成本降两种饲料的价格分别降低0.7元和0.62元以上时,

低.从“SlackorSurplus”可以看出,蛋白质和维生素刚达到最低标准,矿物质超过最低标准

4.1g;从“DualPrice”可以得到降低标准蛋白质1单位可使饲养成本降低0.583元,降低标准维生素1单位可使饲养成本降低4.167元,但降低矿物质的标准不会降低饲养成本,如果动物的进食量减少,就必须选取精一些的饲料但要增加成本,大约进食量降低1kg可使得饲养成本增加0.88元.

对于目标函数系数和约束条件右端常数项的灵敏度分析,可以通过LINGO软件求解的灵敏度分析给出.如果要看灵敏度分析结果,必须激活灵敏度计算功能才会在求解时给出灵

必须运行LINGO|Options…命令,敏度分析结果,默认情况下这项功能是关闭的.想要激活它,

选择GengralSolver,在DualComputation列表框中,选择PricesandRanges选项并确定.对于例1.1问题进行灵敏度分析,结果如下:

以下是灵敏度分析的结果

Rangesinwhichthebasisisunchanged:

ObjectiveCoefficientRanges

CurrentAllowableAllowable

VariableCoefficientIncreaseDecrease

X12.000000INFINITY0.5000000

X23.0000001.0000003.000000

RighthandSideRanges

RowCurrentAllowableAllowable

RHSIncreaseDecrease

28.0000002.0000004.000000

316.0000016.000008.000000

412.00000INFINITY4.000000

对于例1.2问题进行灵敏度分析,结果如下:

Rangesinwhichthebasisisunchanged:

ObjectiveCoefficientRanges

CurrentAllowableAllowable

VariableCoefficientIncreaseDecrease

X10.2000000INFINITY0.7000000

X20.7000000INFINITY0.1358974

X30.4000000INFINITY0.6166667

X40.30000001.4000001.000000

X50.50000000.1247059INFINITY

RighthandSideRanges

RowCurrentAllowableAllowable

RHSIncreaseDecrease

260.000004.8000004.800000

33.0000004.100000INFINITY

48.0000000.34285710.4800000

552.000001.8461541.411765

应用MATLAB求解线性规划

MATLAB(MATrixLABoratory)的基本含义是矩阵实验室,它是由美、

国MathWorks公司研制开发的一套高性能的集数值计算、信息处理、图形显示等于一体的可视化数学工具软件。

它是建立在向量、数组和矩阵基础之上的,除了基本的数值计算、数据处理、图形显示等功能之外,还包含功能强大的多个“工具箱”,如优化工具箱(optimizationtoolbox)、统计工具箱、样条函数工具箱和数据拟合工具箱等都是优化计算的有力工具。

在这里仅介绍用MATLAB7优化工具箱求解线性规划问题。

一般线性规划问题的数学模型为

•其中C是目标函数的系数行向量(常数),X是n维列向量(决策变量),A,A1是常数矩阵,b,b1是常数向量,lb,ub是n维列向量分别表示决策变量X的下界与上界。

•在Matlab优化工具箱(OptimizationToolbox)中,求解(1.5.1)的程序如下:

[x,fval,exitflag,output,lambda]=linprog(c,A,b,Aeq,beq,lb,ub,x0,options)

•说明:

(1)A是不等式约束的系数矩阵,b是相应的常数列向量,若没有不等式约束,则均用[]代替;

(2)Aeq是等式约束的系数矩阵,beq是相应的常数列向量,若没有等式约束,则均用[]代替;

•(3)如果某个变量无下界,则用-inf表示;如果某个变量无上界,则用inf表示,若决策变量无下界,则lb用[]代替;若决策变量无上界,则ub用[]代替;

•(4)x0是线性规划的初始解,这种设计仅对中规模算法有效,通常可以缺省。

•(5)输出X是最优解,fval是最优值。

•(6)输出exitflag描述了程序的运行情况,若其值大于零,表示程序收敛到最优解;若其值等于零,表示计算达到了最大次数;若其值小于零,表示问题无可行解,或程序运行失败。

•(7)输出output表示程序运行的某些信息,如迭代次数(iterations)、所用算法(algorithm)、共轭梯度(cgiterations)等。

•(8)lambda表示解处的拉格朗日乘子,其中lower,upper,ineqlin,eqlin分别对应于下界、上界、不等式约束与等式约束。

例3用MATLAB解线性规划问题

解Matlab程序如下:

c=[-2,-1,1];

A=[1,4,-1;2,-2,1];

b=[4;12];

Aeq=[1,1,2];

beq=6;

lb=[0,0,-inf];

ub=[inf,inf,5];

[x,z]=linprog(c,A,b,Aeq,beq,lb,ub)

运行后得到输出

Optimizationterminatedsuccessfully.

x=

4.6667

0.0000

0.6667

z=

-8.6667

例4用MATLAB求解线性规划问题

解首先转化为求最小值问题

Matlab程序如下

c=[-2,-3,5];

A=[-2,5,-1];

b=-10;

Aeq=[1,1,1];

beq=[7];

lb=[0,0,0];

[x,z]=linprog(c,A,b,Aeq,beq,lb)

运行后得到输出

x=

6.4286

0.5714

0.0000

z=

-14.5714

键入

s=-z

运行后得到原问题的目标函数最大值

s=14.5714

例5、用MATLAB求解例2的程序与输出结果为:

程序与输出结果为:

c=[0.2,0.7,0.4,0.3,0.5];

A=[-0.3,-2,-1,-0.6,-1.8;-0.1,-0.05,-0.02,-0.2,-0.05;-0.05,-0.1,-0.02,-0.2,-0.08;1,1,1,1,1];

b=[-60;-3;-8;52];

lb=[0,0,0,0,0];

[x,z]=linprog(c,A,b,[],[],lb)

Optimizationterminatedsuccessfully.

x=

0.0000

12.0000

0.0000

30.0000

10.0000

z=

22.4000

思考题

1、(合理下料问题)用7.4m长的钢筋,分别截取2.9m、2.1m、1.5m各至少100根,要求用料最少。

2、美佳公司计划制造I、II两种家电产品。

已知各制造一件时分别占用设备A、B的台时、调试时间、调试工序每天可用于这种家电的能力、各售出一件时的获利情况,如表1-1所示。

1.问该公司应制造两种家电各多少件,使其获取的利润最大。

2. 如果资源出租,资源出租的最低价格至少是多少(即每种资源的影子价格是多少)。

3.若家电I的利润不变,家电II的利润在什么范围内变化时,则该公司的最优生产计划将不发生变化。

4. 若设备A和B每天可用能力不变,则调试工序能力在什么范围内变化时,问题的最优基不变。

3、用matlab求解下面的线性规划问题

1)

2)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1