函数极值及规划问题

  • 格式:doc
  • 大小:400.50 KB
  • 文档页数:32

下载文档原格式

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

第五章 函数极值

MATLAB 提供了很多求极值(或最优值)的命令函数,既可以求无条件的极值,也可求有条件的极值,其中,条件可以是不等式,也可以是等式的,可以是线性的,也可以是非线性的,甚至可以是多个条件,目标函数可以是线性的,也可以是非线性的,总之,MA TLAB 针对不同的类型,采用不同的函数命令去求解,以下将分类型来做些简单的介绍。 5.1线性极值(又称线性规划) 5.1.1线性规划模型

规划问题研究的对象大体可以分为两大类:一类是在现有的人、财、物等资源的条件下,研究如何合理的计划、安排,可使得某一目标达到最大,如产量、利润目标等;另一类是在任务确定后,如何计划、安排,使用最低限度的人、财等资源,去实现该任务,如使成本、费用最小等。这两类问题从本质上说是相同的,即都在一组约束条件下,去实现某一个目标的最优(最大或最小)。线性规划研究的问题要求目标与约束条件函数都是线性的,而目标函数只能是一个。在经济管理问题中,大量问题是线性的,有的也可以转化为线性的,从而使线性规划有极大的应用价值。线性规划模型包含3个要素:

(1)决策变量. 问题中需要求解的那些未知量,一般用n 维向量T

n x x x x ),,,(21 表示。

(2)目标函数. 通常是问题需要优化的那个目标的数学表达式,它是决策变量x 的线性函数。

(3)约束条件. 对决策变量的限制条件,即x 的允许取值范围,它通常是x 的一组

线性不等式或线性等式。

线性规划问题的数学模型一般可表示为: min (max ) f T X

s.t A X≤b

Ae q X =beq lb ≤X≤ub

其中X 为n 维未知向量,f T =[f 1,f 2,…f n ]为目标函数系数向量,小于等于约束系数矩

阵A 为m ×n 矩阵,b 为其右端m 维列向量,Aeq 为等式约束系数矩阵,beq 为等式约束右端常数列向量。lb,ub 为自变量取值上界与下界约束的n 维常数向量。

特别注意:当我们用MA TLAB 软件作优化问题时,所有求maxf 的问题化为求min(-f )来作。约束g i (x)≥0,化为 –g i ≤0来做。

5.1.2.线性规划问题求最优解函数: 调用格式: 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, output]=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为指定优化参数进行最小化。

[x,fval]=linprog(…) 左端fval 返回解x处的目标函数值。

[x,fval,exitflag,output,lambda]=linprog(f,A,b, Aeq,beq,lb,ub,x0) 的输出部分:

exitflag 描述函数计算的退出条件:若为正值,表示目标函数收敛于解x处;若为负值,表示目标函数不收敛;若为零值,表示已经达到函数评价或迭代的最大次数。Output为关于优化的一些信息。Lambda为解x的Lagrange乘子。

【例5.1】求解线性规划问题:

max f=2x1+5x2

s.t ⎪

+

8

2

3

4

2

1

2

1

2

1

x

x

x

x

x

x

先将目标函数转化成最小值问题:min(-f)=- 2x1-5x2具体程序如下:

f=[-2 -5];

A=[1 0;0 1;1 2];

b=[4;3;8];

lb=[0 0];

[x,fval]=linprog(f,A,b,[],[],lb)

f=fval*(-1)

运行结果:x = 2 3

fval = -19.0000

maxf = 19

【例5.2】:minf=5x1-x2+2x3+3x4-8x5

s.t –2x1+x2-x3+x4-3x5≤6

2x1+x2-x3+4x4+x5≤7

0≤x j≤15 j=1,2,3,4,5

编写以下程序:

f=[5 -1 2 3 -8];

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

b=[6;7];

lb=[0 0 0 0 0];

ub=[15 15 15 15 15];

[x,fval]=linprog(f,A,b,[],[],lb,ub)

运行结果:x =

0.0000

0.0000

8.0000

0.0000

15.0000

minf =

-104

【例5.3】:假设某厂计划生产甲、乙两种产品,现库存主要材料有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

将其转换为标准形式:

min f=-70x1-120x2

s.t 9x1+4x2≤3600

4x1+5x2≤2000

3x1+10x2≤3000

x1,x2≥0

相关主题