线性规划求最大值或最小值

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

线性规划求最大值或最小值linprog

2011-09-03 18:43:17| 分类:Matlab | 标签:最优值最优解最大值最小值linprog 函数格

|字号大中小订阅式: linprog (f,a,b,a1,b1,xstart,xend)

f:求解最小函数的表达式系数矩阵是m*1的矩阵

a: w不等式条件约束矩阵其均为形式

b:a 对应不等式右边的常数项

a1:=等式条件约束矩阵

b1:a1 对应不等式右边的常数项

xstart:x 的取值范围的最小值的系数矩阵为n*1 的矩阵

xend:x 的取值范围的最大值的系数矩阵为n*1 的矩阵

函数说明: 不存在的项填写[] 即可

函数功能: 线性规划求最优值.

例子1:

求f=3*x1+6*x2+2*x3 的最大值

满足的条件是

3*x1+4*x2+x3 w 2

x1+3*x2+2*x3 w 1

且x1 、x2、x3 均大于等于0

Matlab 求解如下

a =[ 3 4 1

1 3

2 ]

b =[ 2

1 ]

f=[ -3 -6

-2 ] %这里为什么会是负数, 因为Matlab 求的是f 的最小值, 要求最大值则取要求系数的相反数即可x=[ 0 0

0 ]

linprog (f,a,b,[],[],x,[]) %执行的matlab 命令后输出的如下内容. 注意这里的[] 表示那一项不存在. 当然最后那一个[] 也可以不要即linprog(f,a,b,[],[],x)

Optimization terminated.

ans =

0.4000

0.2000

0.000 0%即x1=0.4,x2=0.2,x3=0 为最优解. 带回原式我可以知道f 的最大值=3*0.4+6*0.2=2.4

例子2:

求f=-2*x1-3*x2-x3 的最小值

满足的条件是

x1+x2+x3W 3

x1+4*x2+7*x3+x4=9

且x1、x2、x3、x4均大于等于0

Matlab 求解如下

原题等价于求f=-2*x1-3*x2-x3+0*x4 的最小值

其条件等价于

x1+x2+x3+0*x4W3

x1+4*x2+7*x3+x4=9

则在Matlab 输入如下内容a=[1 1 1 0] b=[3] a1=[1 4 7 1] b1=[9]

x=[ 0

0]

f=[ -2

-3

-1 0]

linprog (f,a,b,a1,b1,x) %执行命令或者输入linprog(f,a,b,a1,b1,x,[])

Optimization terminated.

ans =

1.0000

2.0000

0.0000

0.0000 %说明x1=1,x2=2,x3=0,x4=0 取得最小值

说明:任何线性规划问题都可以转化为上面的问题求解.细节问题请Google线性规划标准形式

1、当目标函数求最大值时,例如求f=a1*x1+a2*x2+ ……+an*xn的最大值时这个时候等价于求

f=-a1*x1-a2*x2- ......... -an*xn 的最小值

2、当约束条件为a1*x1+a2*x2+ ....... +an*xn >b这种形式的时候其约束等价于

a1*x1+a2*x2+ ...... +an*xn -xnn=b 即多了一个xnn(xnn > 0)变量3、当一个变量比如x1是无约束的变量时,其实等价于x1=x2-x3即把一个变量x1分解成2个变量x2与x3之差(x2、x3> 0)把是x1的地方替换为(x2-x3)即可

求解线性规划问题:

J TP

min f r smch t hnt Apq,jf - fw7b jr

线性规划问题

其中,f, x, b, beq, lb, ub为向量,A, Aeq为矩阵。x = linprog(f,A,b) 功能:求解最小

化问题min f*x 条件A*x < b x = linprog(f,A,b,Aeq,beq) 功能:求解最小化问题

min f*x条件A*x < b Aeq*x = beq如果没有不等式就设置 A =[]和b =[];没有等式就设置

Aeq=[],beq=[] x = linprog(f,A,b,Aeq,beq,lb,ub) 功能:求解最小化问题min f*x 条件

A*x w b Aeq*x = beq lb S决策变量有上下限时,如果没有不等式就设置 A =[]和b = [];没有等式就设置Aeq=[],beq=[] x = linprog(f,A,b,Aeq,beq,lb,ub,x0) 功能:求解

最小化问题min f*x 条件A*x w b Aeq*x = beq lb w x , W如果没有不等式就设置 A =[]和

b =[]。设置初始点x0,这个选择项只是对medium-scale算法有效。默认的large-scale算法

和简单的算法忽略任何初始点。x = lin prog(f,A,b,Aeq,beq,lb,ub,x0,optio ns) 功能:

最小化带有参数项的线性规划问题。其中options可以使用optimset来设置。x = linprog(problem) 功能:对problem求最小值,其中problem是一个结构体。通过优化工

具箱来创建,导入到MATLAB工作空间。[x,fval] = linprog(...) 功能:返回目标函

数最优解x,和在x 处的值:fval = f*x. [x,fval,exitflag] = linprog(...) 功能:返回目

标函数最优解x,和在x处的值:fval = f*x,是否存在exitflag标志[x,fval,exitflag,output] =linprog(...) Matlab中文论坛功能:返回目标函数最优解x,和在x处的值:fval = f*x ,

是否存在exitflag 标志,优化解结构体output [x,fval,exitflag,output,lambda] = linprog(...) 功能:返回目标函数最优解x,和在x处的值:fval = f*x,是否存在exitflag标志,优化解结构体output,拉格朗日乘子结构体lambda

应用举例

最小解:f(x) = -5x1 -4x2 -x3,满足:x1 -x2 + x3 w 20 3x1 + 2x2 + 4x3 w 42 3x1 + 2x2 w 30 0 w x1, 0 w x2,首先,w输入系数、条件;f= [-5; -4; -6] ;A = [1 -1 1; 3 2 4 ;3 2 0]; b

=[20; 42; 30]; lb = zeros(3,1);然后,调用线性规划函数;[x,fval,exitflag,output,lambda]=

linprog(f,A,b,[],[],lb); 最后,得到:x = 0.0000 15.0000 3.0000 lambda.ineqlin = 0 1.5000 0.5000 lambda.lower = 1.0000 0 0

相关函数

quadprog, optimtool book.

相关文档
最新文档