文档库 最新最全的文档下载
当前位置:文档库 › 多目标线性规划的若干解法及MATLAB实现

多目标线性规划的若干解法及MATLAB实现

多目标线性规划的若干解法及MATLAB实现
多目标线性规划的若干解法及MATLAB实现

多目标线性规划的若干解法及MATLAB 实现

一.多目标线性规划模型

多目标线性规划有着两个和两个以上的目标函数,且目标函数和约束条件全是线性函

数,其数学模型表示为:

11111221221122221122max n n n n

r r r rn n

z c x c x c x z c x c x c x z c x c x c x =+++??=+++?? ??=+++? (1)

约束条件为:

1111221121122222112212,,,0

n n n n m m mn n m

n a x a x a x b a x a x a x b a x a x a x b

x x x +++≤??+++≤?? ??+++≤?≥?? (2) 若(1)式中只有一个1122i i i in n z c x c x c x =+++ ,则该问题为典型的单目标线性规划。我们记:()ij m n A a ?=,()ij r n C c ?=,12(,,,)T m b b b b = ,12(,,,)T n x x x x = ,

12(,,,)T r Z Z Z Z = .

则上述多目标线性规划可用矩阵形式表示为:

max Z Cx =

约束条件:0

Ax b

x ≤??

≥? (3)

二.MATLAB 优化工具箱常用函数[3]

在MA TLAB 软件中,有几个专门求解最优化问题的函数,如求线性规划问题的linprog 、求有约束非线性函数的fmincon 、求最大最小化问题的fminimax 、求多目标达到问题的fgoalattain 等,它们的调用形式分别为:

①.[x,fval]=linprog(f,A,b,Aeq,beq,lb,ub)

f 为目标函数系数,A,b 为不等式约束的系数, Aeq,beq 为等式约束系数, lb,ub 为x 的下

限和上限, fval 求解的x 所对应的值。

算法原理:单纯形法的改进方法投影法 ②.[x,fval ]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub )

fun 为目标函数的M 函数, x0为初值,A,b 为不等式约束的系数, Aeq,beq 为等式约束

系数, lb,ub 为x 的下限和上限, fval 求解的x 所对应的值。

算法原理:基于K-T (Kuhn-Tucker )方程解的方法。 ③.[x,fval ]=fminimax(fun,x0,A,b,Aeq,beq,lb,ub)

fun 为目标函数的M 函数, x0为初值,A,b 为不等式约束的系数, Aeq,beq 为等式约束

系数, lb,ub 为x 的下限和上限, fval 求解的x 所对应的值。

算法原理:序列二次规划法。

④.[x,fval ]=fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub)

fun 为目标函数的M 函数, x0为初值,goal 变量为目标函数希望达到的向量值, wight

参数指定目标函数间的权重,A,b 为不等式约束的系数, Aeq,beq 为等式约束系数, lb,ub 为x 的下限和上限, fval 求解的x 所对应的值。

算法原理:目标达到法。

三.多目标线性规划的求解方法及MA TLAB 实现

4.1理想点法

在(3)中,先求解r 个单目标问题:min (),1,2,j x D

Z x j r ∈= ,设其最优值为*j Z ,称

***

*12(,,)r Z Z Z Z = 为值域中的一个理想点,因为一般很难达到。于是,在期望的某种度量

之下,寻求距离*

Z 最近的Z 作为近似值。一种最直接的方法是最短距离理想点法,构造评价函数

()Z ?=

然后极小化[()]Z x ?,即求解

min [()]x D

Z x ?∈=

并将它的最优解*

x 作为(3)在这种意义下的“最优解”。

例1:利用理想点法求解

112212121212max ()32max ()43.2318210,0

f x x x f x x x s t x x x x x x =-+=+ +≤ +≤ ≥

解:先分别对单目标求解:

①求解1()f x 最优解的MA TLAB 程序为 >> f=[3;-2]; A=[2,3;2,1]; b=[18;10]; lb=[0;0]; >> [x,fval]=linprog(f,A,b,[],[],lb) 结果输出为:x = 0.0000 6.0000

fval = -12.0000

即最优解为12.

②求解2()f x 最优解的MA TLAB 程序为 >> f=[-4;-3]; A=[2,3;2,1]; b=[18;10]; lb=[0;0]; >> [x,fval]=linprog(f,A,b,[],[],lb) 结果输出为:x =3.0000 4.0000

fval =-24.0000

即最优解为24. 于是得到理想点:(12,24). 然后求如下模型的最优解

121212min [()].2318210,0

x D

f x s t x x x x x x ?∈= +≤ +≤ ≥

MATLAB 程序如下:

>> A=[2,3;2,1]; b=[18;10]; x0=[1;1]; lb=[0;0];

>> x=fmincon('((-3*x(1)+2*x(2)-12)^2+(4*x(1)+3*x(2)-24)^2)^(1/2)',x0,A,b,[],[],lb,[]) 结果输出为:x = 0.5268 5.6488

则对应的目标值分别为1()9.7172f x =,2()19.0536f x =.

4.2线性加权和法

在具有多个指标的问题中,人们总希望对那些相对重要的指标给予较大的权系数,因而将多目标向量问题转化为所有目标的加权求和的标量问题,基于这个现实,构造如下评价函数,即

1

min ()()r

i i x D

i Z x Z x ω∈==∑

将它的最优解*

x 作为(3)在线性加权和意义下的“最优解”。(i ω为加权因子,其选取的方法很多,有专家打分法、容限法和加权因子分解法等).

例2:对例1进行线性加权和法求解。(权系数分别取10.5ω=,20.5ω=) 解:构造如下评价函数,即求如下模型的最优解。

1212121212min{0.5(32)0.5(43)}.2318210,0

x x x x s t x x x x x x ?-+?-- +≤ +≤ ≥

MATLAB 程序如下:

>> f=[-0.5;-2.5; A=[2,3;2,1]; b=[18;10]; lb=[0;0]; >> x=linprog(f,A,b,[],[],lb)

结果输出为:x =0.0000 6.0000

则对应的目标值分别为1()12f x =,2()18f x =.

4.3最大最小法

在决策的时候,采取保守策略是稳妥的,即在最坏的情况下,寻求最好的结果,按照此想法,可以构造如下评价函数,即

1()max i i r

Z Z ?≤≤=

然后求解: 1[()]max ()i x D

x D i r

min Z x min Z x ?∈∈≤≤=

并将它的最优解*

x 作为(3)在最大最小意义下的“最优解”。

例3:对例1进行最大最小法求解:

解:MATLAB 程序如下,首先编写目标函数的M 文件:

function f=myfun12(x) f(1)=3*x(1)-2*x(2); f(2)=-4*x(1)-3*x(2);

>> x0=[1;1];A=[2,3;2,1];b=[18;10];lb=zeros(2,1); >> [x,fval]=fminimax('myfun12',x0,A,b,[],[],lb,[]) 结果输出为:x =0.0000 6.0000

fval = -12 -18 则对应的目标值分别为1()12f x =,2()18f x =.

4.4目标规划法

()x D

Appr Z x Z ∈→ (4)

并把原多目标线性规划(3)min ()x D

Z x ∈称为和目标规划(4)相对应的多目标线性规划。

为了用数量来描述(4),我们在目标空间r E 中引进点0

()Z x Z 与之间的某种“距离”

*21/21

[()][(())]r

i i i i D Z x Z Z x Z λ==-∑,

这样(4)便可以用单目标0

min [()]x D

D Z x Z ∈,来描述了。

例4:对例1对进行目标规划法求解:

解:MATLAB 程序如下,首先编写目标函数的M 文件:

function f=myfun3(x) f(1)=3*x(1)-2*x(2); f(2)=-4*x(1)-3*x(2);

>> goal=[18,10]; weight=[18,10]; x0=[1,1]; A=[2,3;2,1]; b=[18,10]; lb=zeros(2,1); >> [x,fval]=fgoalattain('myfun3',x0,goal,weight,A,b,[],[],lb,[]) 结果输出为:x = 0.0000 6.0000

fval = -12 -18 则对应的目标值分别为1()12f x =,2()18f x =.

4.5模糊数学求解方法[4]

由于多目标线性规划的目标函数不止一个,要想求得某一个点作*

x ,使得所有的目标函数都达到各自的最大值,这样的绝对最优解通常是不存在的。因此,在具体求解时,需要采取折衷的方案,使各目标函数都尽可能的大。模糊数学规划方法可对其各目标函数进行模糊化处理,将多目标问题转化为单目标,从而求该问题的模糊最优解。 具体的方法为:先求在约束条件:0

Ax b

x ≤??

≥? 下各个单目标,1,2,i Z i r = 的最大值*i Z 和

最小值i Z -,伸缩因子为*,1,2,i i i d Z Z i r -=-=

得到*1

112max 1,2,,1,2,,0,,,,0

n

ij j i i i j n kj j k

j n Z c x d Z d i r a x b k m

x x x λλλ===???-≥-,= ????≤=??≥≥??∑∑ (5)

式(5)是一个简单的单目标线性规划问题。

最后求得模糊最优解为:**

**1(,,)T

n Z

C x x = .

利用(5)式来求解的关键是对伸缩指标的i d 确定,i d 是我们选择的一些常数,由于在多目标线性规划中,各子目标难以同时达到最大值*i Z ,但是可以确定的是各子目标的取值范围,它满足:*i i i Z Z Z -≤≤,所以,伸缩因子为i d 可以按如下取值:*i i i d Z Z -=-.

例5:对例1进行模糊数学方法求解:

解:①分别求得1()f x ,2()f x 在约束条件下的最大值为:*(12,24)Z =.

②分别求得1()f x ,2()f x 在约束条件下的最小值为:(15,0)Z -=-. 伸缩因子为(27,24)i d = 然后求如下模型的最优解:

1212121212max .322715432402318210,,0

Z s t x x x x x x x x x x λ

λλλ= -+-≥- +-≥ +≤ +≤ ≥

MATLAB 程序如下:

>>f=[0;0;-1]; A=[3,-2,27;-4,-3,24;2,3,0;2,1,0]; b=[15;0;18;10]; lb=[0;0;0] >> [x,fval]=linprog(f,A,b,[],[],lb)

结果输出为:x = 1.0253 5.3165 0.8354

fval =-0.8354 于是原多目标规划问题的模糊最优值为**(7.5571,20.0507)Z =.

四.结论

多目线性标规划是优化问题的一种,由于其存在多个目标,要求各目标同时取得较优的值,使得求解的方法与过程都相对复杂. 通过将目标函数进行模糊化处理,可将多目标问题转化为单目标,借助工具软件,从而达到较易求解的目标。

参考文献:

[1] 林锉云,董加礼. 多目标优化的方法与理论[M]. 长春:吉林教育出版社,1992.8

[2] 宋业新,胡伟文,张建军. 具有模糊系数约束的多目标线性规划[J]. 海军工程大学学报, 2004,16(1):40-44.

[3] 龚纯,王正林. 精通MATLAB 最优化计算[M]电子工业出版社,2009

[4] 王嫣,张志宏. 模糊线性规划的最优解分析[J]. 北京工商大学学报(自然科学版), 2007,25(5):67-69.

运用Matlab进行线性规划求解(实例)

线性规划 线性规划是处理线性目标函数和线性约束的一种较为成熟的方法,目前已经广泛应用于军事、经济、工业、农业、教育、商业和社会科学等许多方面。 8.2.1 基本数学原理 线性规划问题的标准形式是: ????? ??????≥=+++=+++=++++++=0,,,min 21221122222121112 121112211n m n mn m m n n n n n n x x x b x a x a x a b x a x a x a b x a x a x a x c x c x c z 或 ???? ?????=≥===∑∑==n j x m i b x a x c z j n j i j ij n j j j ,,2,1,0,,2,1,min 1 1 写成矩阵形式为: ?? ???≥==O X b AX CX z min 线性规划的标准形式要求使目标函数最小化,约束条件取等式,变量b 非负。不符合这几个条件的线性模型可以转化成标准形式。 MATLAB 采用投影法求解线性规划问题,该方法是单纯形法的变种。 8.2.2 有关函数介绍 在MATLAB 工具箱中,可用linprog 函数求解线性规划问题。 linprog 函数的调用格式如下: ●x=linprog(f,A,b):求解问题minf'*x ,约束条件为A*x<=b 。 ●x=linprog(f,A,b,Aeq,beq):求解上面的问题,但增加等式约束,即Aeq*x=beq 。若没有不等式约束,则令A=[ ],b=[ ]。 ●x=linprog(f,A,b,Aeq,beq,lb,ub):定义设计x 的下界lb 和上界ub ,使得x 始终在该范围内。若没有等式约束,令Aeq=[ ],beq=[ ]。 ●x=linprog(f,A,b,Aeq,beq,lb,ub,x0):设置初值为x0。该选项只适用于中型问题,默认时大型算法将忽略初值。 ●x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options):用options 指定的优化参数进行最小化。 ●[x,fval]=linprog(…):返回解x 处的目标函数值fval 。 ●[x,lambda,exitflag]=linprog(…):返回exitflag 值,描述函数计算的退出条件。 ●[x,lambda,exitflag,output]=linprog(…):返回包含优化信息的输出参数output 。 ●[x,fval,exitflag,output,lambda]=linprog(…):将解x 处的拉格朗日乘子返回到lambda 参数中。

matlab线性规划练习

第11次课 (1) 某机床厂生产甲、乙两种机床,每台销售后的利润分别为 4000 元与 3000 元 。 生产甲机床需用A 、B 机器加工,加工时间分别为每台 2 小时和 1 小时; 生产乙机床 需用A 、B 、C 三种机器加工,加工时间为每台各一小时。 若每天可用于加工的机器 时数分别为A 机器 10 小时、 B 机器 8 小时和 C 机器 7 小时,问该厂应生产甲、乙机床 各 几台,才能使总利润最大? (2)有两种农作物(大米和小麦),可用轮船和飞机两种方式运输,每天每艘轮船和每架飞机运输效果 如下:在一天内如何安排才能合理完成运输2000吨小麦和1500吨大米的任务? (3)设422+-=x y z ,式中变量y x ,满足条件?????≥-≤≤≤≤12201 0x y y x ,求z 的最小值和最大值. (4)某家俱公司生产甲、乙两种型号的 组合柜,每种柜的制造白坯时间、油漆时间及有关数据如下: 问该公司如何安排甲、乙二种柜的日产量可获最大利润,并且最大利润是多少? (5) 某运输公司接受了向抗洪抢险地区每天至少送180t 支援物资的任务.该公司有8辆载重为6t 的A 型 卡车与4辆载重为10t 的B 型卡车,有10名驾驶员;每辆卡车每天往返的次数为A 型卡车4次,B 型 卡车3次;每辆卡车每天往返的成本费A 型车为320元,B 型车为504元.请你们为该公司安排一下应该如何调配车辆,才能使公司所花的成本费最低?若只调配A 型或B 型卡车,所花的成本费分别是多少?

(6)一家玩具公司制造三种桌上高尔夫玩具,每一种要求不同的制造技术。高级的一种需要17小时加工装配劳动力,8小时检验,每台利润300元。中级的需要10小时劳动力,4小时检验,利润200元。低级的需要2小时劳动力,2小时检验,利润100元。可供利用的加工劳动力为1000小时,检验500小时。其次,有市场预测表明,对高级的需求量不超过50台,中级的不超过80台,低级的不超过150台。 问制造商如何决策才能得出使总利润为最大的最优生产计划。 (7)(任务分配问题)某车间有甲、乙两台机床,可用于加工三种工件。 假定这两台车床的可用台时数分别为800和900,三种工件的数量分别为400、600和500,且已知用三种不同车床加工单位数量不同工件所需的台时数和加工费用如下表。问怎样分配车床的加工任务,才能既满足加工工件的要求,又使加工费用最低 (8)

Matlab在线性规划中的使用

⒈ 优化问题及其数学模型 假设有一个问题,它有几个因素来决定,当这些因素处于某个状态时,可以使问题得到我们最想要的结果。优化问题就是寻求这个状态的过程。例如: 某工厂生产A ,B 两种产品,所用原料均为甲、乙、丙三种;生产一件产品所需原料和 问题:在该厂只有库存原料甲380单位,原料乙300单位,原料丙220单位的情况下如何安排A ,B 两种产品的生产数量可以获得最大的利润? 设生产A 中产品1x 件,生产B 中产品2x 件,z 为所获得的利润,于是有关系式: 我们称它为目标函数。生产的条件我们可以表示为: 我们把上面的不等式称为约束条件。 产品A 的产量1x 和B 的产量2x 是优化问题的变量。在满足约束条件的前提下使目标函数得到最优的值成为最优解。根据以上定义,也可以说优化运算是通过某种计算寻求最优解的过程。 以上这个用等式或不等式来表达我们要解决的问题的过程就是优化问题的建模过程。我们平时遇到的问题常常不是上面的这几个数学表达式就能表达得清清楚楚的,但是建立像上面类似的数学模型却是优化求解的第一步。优化问题常常表现为在多约束条件下求某一函数的极值问题,例如上面的这个例子。 Matlab 有一个优化工具箱,可以帮助我们方便的解决好这类问题。 ⒉ 优化工具箱 Matlab 的优化工具箱有一些对普通非线性函数求解最小化或最大化(求极值)的函数组成,另外还包括一些解决诸如线性规划等标准矩阵问题的函数。所有的优化函数都是用Matlab 语言编写的m 文件,我们可以通过在命令窗口里输入type function_name 来查看这些函数。 优化工具箱的优化功能包括: ⑴ 求无约束非线性最小化; ⑵ 求有约束非线性最小化; ⑶ 二次和线性规划问题; ⑷ 非线性最小二乘法和曲线拟合问题; ⑸ 非线性等式的求解; ⑹ 约束线性最小二乘法; ⑺ 稀疏和结构化大尺度问题。 工具箱中求非线性函数极小值的命令函数如下表所示:

用MATLAB解线性规划

用MATLAB 优化工具箱解线性规划 命令:x=linprog (c ,A ,b ) 2、模型: beq AeqX b AX ..min =≤=t s cX z 命令:x=linprog (c ,A ,b ,Aeq,beq ) 注意:若没有不等式:b AX ≤存在,则令A=[ ],b=[ ]. 若没有等式约束, 则令Aeq=[ ], beq=[ ]. 3、模型: VUB X VLB beq AeqX b AX ..min ≤≤=≤=t s cX z 命令:[1] x=linprog (c ,A ,b ,Aeq,beq, VLB ,VUB ) [2] x=linprog (c ,A ,b ,Aeq,beq, VLB ,VUB, X0) 注意:[1] 若没有等式约束, 则令Aeq=[ ], beq=[ ]. [2]其中X0表示初始点 4、命令:[x,fval]=linprog(…) 返回最优解x及x处的目标函数值fval. 例1 max 6543216.064.072.032.028.04.0x x x x x x z +++++= 85003.003.003.001.001.001.0..654321≤+++++x x x x x x t s 70005.002.041≤+x x 10005.002.052≤+x x 90008.003.063≤+x x 6,2,10 =≥j x j 解 编写M 文件小xxgh1.m 如下: c=[-0.4 -0.28 -0.32 -0.72 -0.64 -0.6]; A=[0.01 0.01 0.01 0.03 0.03 0.03;0.02 0 0 0.05 0 0;0 0.02 0 0 0.05 0;0 0 0.03 0 0 0.08]; b=[850;700;100;900]; Aeq=[]; beq=[]; vlb=[0;0;0;0;0;0]; vub=[]; [x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub) min z=cX b AX t s ≤..1、模型:

线性规划模型及matlab程序求解

§1 线性规划模型 一、线性规划课题: 实例1:生产计划问题 假设某厂计划生产甲、乙两种产品,现库存主要材料有A类3600公斤,B类2000公斤,C类3000公斤。每件甲产品需用材料A类9公斤,B类4公斤,C类3公斤。每件乙产品,需用材料A类4公斤,B类5公斤,C类10公斤。甲单位产品的利润70元,乙单位产品的利润120元。问如何安排生产,才能使该厂所获的利润最大。 建立数学模型: 设x1、x2分别为生产甲、乙产品的件数。f为该厂所获总润。 max f=70x1+120x2 s.t 9x1+4x2≤3600 4x1+5x2≤2000 3x1+10x2≤3000 x1,x2≥0 归结出规划问题:目标函数和约束条件都是变量x的线性函数。 形如: (1) min f T X s.t A X≤b Aeq X =beq lb≤X≤ub 其中X为n维未知向量,f T=[f1,f2,…f n]为目标函数系数向量,小于等于约束系数矩阵A为m×n矩阵,b为其右端m维列向量,Aeq为等式约束系数矩阵,beq为等式约束右端常数列向量。lb,ub为自变量取值上界与下界约束的n维常数向量。 二.线性规划问题求最优解函数: 调用格式: x=linprog(f,A,b) x=linprog(f,A,b,Aeq,beq) x=linprog(f,A,b,Aeq,beq,lb,ub) x=linprog(f,A,b,Aeq,beq,lb,ub,x0) x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options) [x,fval]=linprog(…) [x, fval, exitflag]=linprog(…) [x, fval, exitflag, outpu t]=linprog(…) [x, fval, exitflag, output, lambda]=linprog(…) 说明:x=linprog(f,A,b)返回值x为最优解向量。 x=linprog(f,A,b,Aeq,beq) 作有等式约束的问题。若没有不等式约束,则令A=[ ]、b=[ ] 。 x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options) 中lb ,ub为变量x的下界和上界,x0为初值点,options 为指定优化参数进行最小化。

一元线性规划matlab算例及解释

一元线性回归: x 含碳量 y合金强度建立y与x函数关系并检验可信度,检查数据有无异常点 clc close all x1=[0.1:0.01:0.18,0.20,0.21,0.23]'; x=[ones(size(x1)),x1]; y=[42 41.5 45 45.5 45 47.5 49 55 50 55 55.5 60.5]'; % 作数据的散点图 figure(1) plot(x1,y,'*') %回归分析 [b,bint,r,rint,stats]=regress(y,x) %alpha 缺省表示取值为0.05 %做残差图 figure(2) rcoplot(r,rint); %预测与回归图 figure(3) z=b(1)+b(2)*x1; plot(x1,y,'*',x1,z,'k-') legend('原始数据','回归曲线') 运行结果如下: b = 27.0269 140.6194 bint = 22.3226 31.7313 111.7842 169.4546 r = 0.9111 -0.9951

1.0987 0.1925 -1.7136 -0.6198 -0.5260 4.0678 -2.3384 -0.1508 -1.0570 1.1306 rint = -2.5705 4.3928 -4.6033 2.6131 -2.6026 4.8001 -3.6754 4.0605 -5.4276 2.0003 -4.5502 3.3105 -4.4717 3.4196 1.5241 6.6114 -5.8418 1.1649 -3.9067 3.6051 -4.6124 2.4984 -2.0746 4.3358 stats = 0.9219 118.0670 0.0000 3.1095 α= 27.0269 β= 140.6194 即y=α+βx

用matlab解决线性规划问题的几道题

一、用MATLAB 求解线性规划问题 (1) 编写的M 文件为: f=[-1;-1] A=[1 -2;1 2] b=[4,8] [x,feval]=linprog(f,A,b,[],[],zeros(2,1)) 所求解为:x 1=6,x 2=1;min f=-7 (2) 编写的M 文件为: f=[-4;-3] A=[3 4;3 3;4 2] b=[12;10;8] [x,feval]=linprog(f,A,b,[],[],zeros(1,2)) 所求得的解为:x 1=,x 2=;max f= (3) (4) 编写的M 文件为: f=[-1;-3;3] Aeq=[1 1 2;-1 2 1] beq=[4;4] [x,feval]=linprog(f,[],[],Aeq,beq,zeros(3,1)) 所求得的结果为:x 1=4/3,x 2=8/3,x 3=0;max f=28/3。 12121212min 24s.t.28,0f x x x x x x x x ì=--????-?镲í?+????3??121212121243max 3412..3310428,0f x x x x s t x x x x x x ì=+????+????+?í???+????3?? 12312312313min 3s.t.211423210(1,2,3)j f x x x x x x x x x x x x j =--ì????-+?????-++?í??-+=????????123123123max 3s.t.24240(1,2,3) j f x x x x x x x x x x j =+-ì????++=??í-++=????????min s.t.123f x y z x y x z ì?=++???+?í???+=???

运用Matlab进行线性规划求解(实例)

8.2 线性规划 线性规划是处理线性目标函数和线性约束的一种较为成熟的方法,目前已经广泛应用于军事、经济、工业、农业、教育、商业和社会科学等许多方面。 8.2.1 基本数学原理 线性规划问题的标准形式是: ????? ??????≥=+++=+++=++++++=0,,,min 21221122222121112 121112211n m n mn m m n n n n n n x x x b x a x a x a b x a x a x a b x a x a x a x c x c x c z 或 ???? ?????=≥===∑∑==n j x m i b x a x c z j n j i j ij n j j j ,,2,1,0,,2,1,min 1 1 写成矩阵形式为: ?? ???≥==O X b AX CX z min 线性规划的标准形式要求使目标函数最小化,约束条件取等式,变量b 非负。不符合这几个条件的线性模型可以转化成标准形式。 MATLAB 采用投影法求解线性规划问题,该方法是单纯形法的变种。 8.2.2 有关函数介绍 在MA TLAB 工具箱中,可用linprog 函数求解线性规划问题。 linprog 函数的调用格式如下: ●x=linprog(f,A,b):求解问题minf'*x ,约束条件为A*x<=b 。 ●x=linprog(f,A,b,Aeq,beq):求解上面的问题,但增加等式约束,即Aeq*x=beq 。若没有不等式约束,则令A=[ ],b=[ ]。 ●x=linprog(f,A,b,Aeq,beq,lb,ub):定义设计x 的下界lb 和上界ub ,使得x 始终在该范围内。若没有等式约束,令Aeq=[ ],beq=[ ]。 ●x=linprog(f,A,b,Aeq,beq,lb,ub,x0):设置初值为x0。该选项只适用于中型问题,默认时大型算法将忽略初值。 ●x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options):用options 指定的优化参数进行最小化。 ●[x,fval]=linprog(…):返回解x 处的目标函数值fval 。 ●[x,lambda,exitflag]=li nprog(…):返回exitflag 值,描述函数计算的退出条件。 ●[x,lambda,exitflag,output]=linprog(…):返回包含优化信息的输出参数output 。 ●[x,fval,exitflag,output,lambda]=linprog(…):将解x 处的拉格朗日乘子返回到lambda 参数中。

(完整word版)用matlab解决线性规划问题的几道题

一、用MATLAB 求解线性规划问题 (1) 编写的M 文件为: f=[-1;-1] A=[1 -2;1 2] b=[4,8] [x,feval]=linprog(f,A,b,[],[],zeros(2,1)) 所求解为:x 1=6,x 2=1;min f=-7 (2) 编写的M 文件为: f=[-4;-3] A=[3 4;3 3;4 2] b=[12;10;8] [x,feval]=linprog(f,A,b,[],[],zeros(1,2)) 所求得的解为:x 1=0.8,x 2=2.4;max f=10.4 (3) (4) 编写的M 文件为: f=[-1;-3;3] Aeq=[1 1 2;-1 2 1] beq=[4;4] [x,feval]=linprog(f,[],[],Aeq,beq,zeros(3,1)) 所求得的结果为:x 1=4/3,x 2=8/3,x 3=0;max f=28/3。 12 121212min 24s.t.28 ,0f x x x x x x x x ì=--????-?镲í?+???? 3??12 1212121243max 3412 ..3310 428 ,0 f x x x x s t x x x x x x ì =+????+????+?í???+????3??123 12312313min 3s.t.211 423 21 0(1,2,3) j f x x x x x x x x x x x x j =--ì????-+?????-++?í??-+=?? ??? ???123 123123max 3s.t.24 24 0(1,2,3) j f x x x x x x x x x x j =+-ì????++=??í-++=???? ????

线性规划问题Matlab求解

用MATLAB优化工具箱解线性规划 命令:x=linprog(c,A,b) 命令:x=linprog(c,A,b,Aeq,beq) 注意:若没有不等式:存在,则令A=[ ],b=[ ]. 若没有等式约束, 则令Aeq=[ ], beq=[ ]. 命令:[1] x=linprog(c,A,b,Aeq,beq, VLB,VUB) [2] x=linprog(c,A,b,Aeq,beq, VLB,VUB, X0) 注意:[1] 若没有等式约束, 则令Aeq=[ ], beq=[ ]. [2]其中X0表示初始点 4、命令:[x,fval]=linprog(…) 返回最优解x及x处的目标函数值fval. 例1 解编写M文件小xxgh1.m如下: c=[-0.4 -0.28 -0.32 -0.72 -0.64 -0.6]; A=[0.01 0.01 0.01 0.03 0.03 0.03;0.02 0 0 0.05 0 0;0 0.02 0 0 0.05 0;0 0 0.03 0 0 0.08]; b=[850;700;100;900]; Aeq=[]; beq=[]; vlb=[0;0;0;0;0;0]; vub=[]; [x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub) 例2 解: 编写M文件xxgh2.m如下: c=[6 3 4]; A=[0 1 0]; b=[50]; Aeq=[1 1 1]; beq=[120]; vlb=[30,0,20]; vub=[]; [x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub 例3 (任务分配问题)某车间有甲、乙两台机床,可用于加工三种工件。 假定这两台车床的可用台时数分别为800和900,三种工件的数量分别为400、 600和500,且已知用三种不同车床加工单位数量不同工件所需的台时数和加工 费用如下表。问怎样分配车床的加工任务,才能既满足加工工件的要求,又使 加工费用最低 解设在甲车床上加工工件1、2、3的数量分别为x1、x2、x3,在乙车床上 加工工件1、2、3的数量分别为x4、x5、x6。可建立以下线性规划模型: 编写M文件xxgh3.m如下: f = [13 9 10 11 12 8]; A = [0.4 1.1 1 0 0 0 0 0 0 0.5 1.2 1.3]; b = [800; 900]; Aeq=[1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1]; beq=[400 600 500]; vlb = zeros(6,1); vub=[];

用MATLAB求解线性规划问题

用MATLAB 求解线性规划问题 这里X 是问题的解向量,f 是由目标函数的系数构成的向量,A 是一个矩阵,b 是一个向量,A ,b 和变量x={x 1,x 2,…,x n }一起,表示了线性规划中不等式约束条件,A ,b 是系数矩阵和右端向量。Aeq 和Beq 表示了线性规划中等式约束条件中的系数矩阵和右端向量。LB 和UB 是约束变量的下界和上界向量,X0是给定的变量的初始值,options 为控制规划过程的参数系列。返回值中fval 是优化结束后得到的目标函数值。exitflag=0表示优化结果已经超过了函数的估计值或者已声明的最大迭代次数;exitflag>0表示优化过程中变量收敛于解X ,exitflag<0表示不收敛。output 有3个分量,iterations 表示优化过程的迭代次数,cgiterations 表示PCG 迭代次数,algorithm 表示优化所采用的运算规则。lambda 有4个分量,ineqlin 是线性不等式约束条件,eqlin 是线性等式约束条件,upper 是变量的上界约束条件,lower 是变量的下界约束条件。它们的返回值分别表示相应的约束条件在约束条件在优化过程中是否有效。 例1:某工厂生产A ,B 两种产品,所用原料均为甲、乙、丙三种:生产一件产品所需原料和所获利 设生产A 产品1x 件,生产B 产品2x 件,z 为所获利润,我们将问题归结为如下的线性规划问题: 12min {(700010000)}x x -+ s.t. 1212128638048300 46220x x x x x x +≤??+≤??+≤? 接着写出Matlab 程序如下: clear f=-[7000,10000]; A=[8,6;4,8;4,6]; b=[380,300,220]; [X,fval]=linprog(f,A,b) 运行结果为: >> Optimization terminated successfully. X =40.0000 10.0000 fval = -3.8000e+005 例2:求解下面的线性规划问题: 123min {546}x x x --- s.t. 12320x x x -+≤ 12332442 x x x ++≤ 123230x x +≤ 10x ≤,20x ≤,30x ≤ 解决上述问题的Matlab 程序为: clear f=-[5,4,6]; A=[1,-2,1;3,2,4;3,2,0]; b=[20,42,30]; LB=[0;0;0]; [X,fval,exitflag,output,lambda]=linprog(f,A,b,[],[],LB) 程序运行的结果为: Optimization terminated successfully. X = 0.0000

线性规划与MATLAB实现

例6-1用M函数文件形式求解第1章例1-2生产计划分配问题 A=[9 4 1 0 0;3 10 0 1 0;4 5 0 0 1]; c=[-7 -14 0 0 0]; b=[360;300 ;200]; [x,mf]=SimpleMthd(A,c,b,[3 4 5]) 单纯形法函数文件SimpleMthd如下 function [x,minf] = SimpleMthd(A,c,b,baseVector) %约束矩阵:A; %目标函数系数向量:c; %约束右端向量:b; %初始基向量:baseVector; %目标函数取最小值时的自变量值:x; %目标函数的最小值:minf sz = size(A); nVia = sz(2); n = sz(1); xx = 1:nVia; nobase = zeros(1,1); m = 1; for i=1:nVia %获取非基本变量下标if(isempty(find(baseVector == xx(i),1))) nobase(m) = i; m = m + 1; else ; end end bCon = 1; M = 0; while bCon nB = A(:,nobase); %非基本变量矩阵 ncb = c(nobase); %非基本变量系数 B = A(:,baseVector); %基本变量矩阵 cb = c(baseVector); %基本变量系数 xb = inv(B)*b; f = cb*xb; w = cb*inv(B); for i=1:length(nobase) sigma(i) = w*nB(:,i)-ncb(i); end [maxs,ind] = max(sigma); %ind为进基本变量下标 if maxs <= 0 %最大值小于零,输出最优解minf = cb*xb; vr = find(c~=0 ,1,'last');

相关文档