MATLAB非线性规划问题

发布 2019-07-07 08:58:00 阅读 5167

实例1 表面积为36平方米的最大长方体体积。

建立数学模型:

设x、y、z分别为长方体的三个棱长,f为长方体体积。

max f = x y (36-2 x y)/2 (x+y)

实例2 投资决策问题。

某公司准备用5000万元用于a、b两个项目的投资,设x1、x2分别表示配给项目a、b的投资。预计项目a、b的年收益分别为20%和16%。同时,投资后总的风险损失将随着总投资和单位投资的增加而增加,已知总的风险损失为2x12+x22+(x1+x2)2.

问应如何分配资金,才能使期望的收益最大,同时使风险损失为最小。

建立数学模型:

max f=20x1+16x2-λ[2x12+x22+(x1+x2)2]

x1+x2≤5000

x 1≥0,x2≥0

目标函数中的λ≥0是权重系数。

由以上实例去掉实际背景,其目标函数与约束条件至少有一处是非线性的,称其为非线性问题。

非线性规划问题可分为无约束问题和有约束问题。实例1为无约束问题,实例2为有约束问题。

求解无约束最优化问题的方法主要有两类:直接搜索法(search method)和梯度法(gradient method),单变量用fminbnd,fminsearch,fminunc;多变量用fminsearch,fminnuc

1.fminunc函数。

调用格式: x=fminunc(fun,x0)

x=fminunc(fun,x0,options)

x=fminunc(fun,x0,options,p1,p2)

[x,fval]=fminunc(…)

[x,fval, exitflag]=fminunc(…)

[x,fval, exitflag,output]=fminunc(…)

x,fval, exitflag,output,grad]=fminunc(…)

x,fval, exitflag,output,grad,hessian]=fminunc(…)

说明:fun为需最小化的目标函数,x0为给定的搜索的初始点。options指定优化参数。

返回的x为最优解向量;fval为x处的目标函数值;exitflag描述函数的输出条件;output返回优化信息;grad返回目标函数在x处的梯度。hessian返回在x处目标函数的hessian矩阵信息。

例1 : 求

程序:通过绘图确定一个初始点:

x,y]=meshgrid(-10:.5:10);

z= 8*x-4*y +x.^2+3*y.^2;

surf(x,y,z)

选初始点:x0=(0,0)

x0=[0,0];

x,fval,exitflag]=fminunc(‘8*x(1)-4*x(2) +x(1)^2+3*x(2)^2‘,x0)

结果:x =

fval =

exitflag =

例2:程序:

取初始点:x0=(1,1)

x0=[1,1];

x,fval,exitflag]=fminunc(‘4*x(1)^2+5*x(1)*x(2)+2*x(2)^2‘,x0)

结果: x =

1.0e-007 *

fval =

2.7239e-016

exitflag =

2. minsearch函数。

调用格式: x=fminsearch(fun,x0)

x=fminsearch(fun,x0,options)

x=fminsearch(fun,x0,options,p1,p2)

[x,fval]=fminsearch(…)

[x,fval, exitflag]=fminsearch(…)

[x,fval, exitflag,output]=fminsearch(…)

x,fval, exitflag,output,grad]=fminsearch(…)

x,fval, exitflag,output,grad,hessian]=fminsearch(…)

说明:参数及返回变量同上一函数。对求解二次以上的问题,fminsearch函数比fminunc函数有效。

3. fminbnd函数。

调用格式: [x,fval]=fminbnd(fun,x1,x2,options)

x=fminbnd(…)

例5 求min e-x+x2,搜索区间为(0,1)

x,fval]=fminbnd('exp(-x)+x.^2',0,1)x =

fval =

4. 多元非线性最小二乘问题:

非线线性最小二乘问题的数学模型为:

其中l为常数。

调用格式: x=lsqnonlin(fun,x0)

x=lsqnonlin(fun,x0,lb,ub)

x=lsqnonlin(fun,x0,options)

x=lsqnonlin(fun,x0,options,p1,p2)

[x,resnorm]=lsqnonlin(…)

[x,resnorm, residual,exitflag]=lsqnonlin(…)

[x,resnorm, residual , exitflag,output]=lsqnonlin(…)

x,resnorm, residual,exitflag, output,lambda]=lsqnonlin(…)

x,resnorm, r esidual,exitflag, output,lambda,jacobian]=lsqnonlin(…)

说明:x返回解向量;resnorm返回x处残差的平方范数值:sum(fun(x).

^2);residual返回x处的残差值fun(x);lambda返回包含x处拉格朗日乘子的结构参数;jacobian返回解x处的fun函数的雅可比矩阵。

lsqnonlin默认时选择大型优化算法。lsqnonlin通过将设置为’off’来作中型优化算法。其采用一维搜索法。

例4.求 minf=4(x2-x1)2+(x2-4)2 ,选择初始点x0(1,1)

程序:f ='4*(x(2)-x(1))^2+(x(2)-4)^2'

x,reshorm]=lsqnonlin(f,[1,1])

结果: x =

reshorm =5.0037e-009

结果 : x =

resnorm =

数学模型: min f(x)

gi (x) ≤0 i=1,…,m

gj (x) =0 j=m+1,…,n

xl≤x≤xu

其中:f(x)为多元实值函数,g(x)为向量值函数,在有约束非线性规划问题中,通常要将该问题转换为更简单的子问题,这些子问题可以求并作为迭代过程的基础。其基于k-t方程解的方法。

它的k-t方程可表达为:

方程第一行描述了目标函数和约束条件在解处梯度的取消。由于梯度取消,需要用拉格朗日乘子λi来平衡目标函数与约束梯度间大小的差异。

调用格式: x=fmincon(f,x0,a,b)

x=fmincon(f,x0,a,b,aeq,beq)

x=fmincon(f,x0,a,b,aeq,beq,lb,ub)

x=fmincon(f,x0,a,b,aeq,beq,lb,ub,nonlcon)

x=fmincon(f,x0,a,b,aeq,beq,lb,ub,nonlcon,options)

[x,fval]=fmincon(…)

[x, fval, exitflag]=fmincon(…)

[x, fval, exitflag, output]=fmincon(…)

[x, fval, exitflag, output, lambda]=fmincon(…)

说明:x=fmincon(f,x0,a,b)返回值x为最优解向量。其中:x0为初始点。a,b为不等式约束的系数矩阵和右端列向量。

x=fmincon(f,x0,a,b,aeq,beq) 作有等式约束的问题。若没有不等式约束,则令a=[ b=[

x=fmincon(f, x0,a,b,aeq,beq,lb,ub, nonlcon ,options) 中lb ,ub为变量 x的下界和上界;nonlcon=@fun,由m文件给定非线性不等式约束c (x) ≤0和等式约束g(x)=0;options为指定优化参数进行最小化。

matlab中非线性规划的数学模型写成以下形式。

其中是标量函数,是相应维数的矩阵和向量,是非线性向量函数。

matlab中的命令是。

x=fmincon(fun,x0,a,b,aeq,beq,lb,ub,nonlcon,options)

它的返回值是向量,其中fun是用m文件定义的函数;x0是的初始值;a,b,aeq,beq定义了线性约束,如果没有等式约束,则a=b=aeq=beq=lb和ub是变量的下界和上界,如果上界和下界没有约束,则lb=ub=如果无下界,则lb=-inf,如果无上界,则ub=inf;nonlcon是用m文件定义的非线性向量函数;options定义了优化参数,可以使用matlab缺省的参数设置。

例2 求下列非线性规划问题。

)编写m文件。

function f=fun1(x);

f=x(1)^2+x(2)^2+8;

和m文件。function [g,h]=fun2(x);

g=-x(1)^2+x(2);

h=-x(1)-x(2)^2+2; %等式约束。

)在matlab的命令窗口依次输入。

options=optimset;

x,y]=fmincon('fun1',rand(2,1zeros(2,1),[

fun2', options)

第6章非线性规划

前面几章,我们论述了线性规划及其扩展问题,这些问题的约束条件和目标函数都是关于决策变量的一次函数。虽然大量的实际问题可以简化为线性规划及其扩展问题来求解,但是还有相当多的问题很难用线性函数加以描述。如果目标函数或约束条件中包含有非线性函数,就称这样的规划问题为非线性规划问题。由于人们对实际问题解的精...

第一章非线性规划理论 1

第一节非线性优化规划模型及其解的概念,第二节凸函数与凸规划,第三节下降迭代算法。第四节一维搜索方法。第一节非线性优化规划模型及其解的概念。线性规划的目标函数和约束条件都是其自变量的线性函数,如果目标函数或约束条件中含有自变量的非线性函数,则这样的规划问题就是非线性规划。有些实际问题可以表示成线性规划...

第一章非线性规划理论 2

第五节无约束非线性规划常用解法。第六节约束非线性规划的最优性条件。第七节约束非线性规划的常用解法。第五节无约束非线性规划常用解法。无约束极值问题可以表述为。在求解上述问题时常用迭代法,迭代法大体上可以分为两类 一类称为解析法,它会用到函数的一阶或二阶导数 另一类称为直接法,它主要在迭代过程中使用函数...

高考题分类线性规划

线性规划。1.安徽11 若满足约束条件 则的取值范围为。解析 的取值范围为。约束条件对应边际及内的区域 则。2.北京2 设不等式组,表示平面区域为d,在区域d内随机取一个点,则此点到坐标原点的距离大于2的概率是。a b c d 解析 题目中表示的区域如图正方形所示,而动点d可以存在的位置为正方形面积...

第4章线性规划初步

在日常生活中我们经常会遇到这样的问题 如何合理安排有限的人力 物力 财力等资源,使得这些资源的效能能够充分地发挥,以获取最佳的经济效益。线性规划就是辅助人们寻求解决这些问题的一种数学方法。在本章的学习中,我们将把一些简单的实际问题归结为线性规划的问题,通过学习解决这些问题的思想和方法,对线性规划的建...