matlab——非线性规划

非线性规划的定义

如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划问题。

非线性规划目前还没有适于各种问题的一般算法,各个方法都有自己特定的适用范围。

除了常数项每项的次数都是一次的就是线性函数,如果出现平方和开方就是非线性函数。

非线性规划的Matlab解法

       Matlab中非线性规划的数学模型写成以下形式:
m i n f ( x ) , s . t . { A ⋅ x ≤ b , A e q ⋅ x = b e q , c ( x ) ≤ 0 , c e q ( x ) = 0 , l b ≤ x ≤ u b 。 \qquad\qquad\qquad\qquad\qquad minf(x),\\ \qquad\qquad\qquad\qquad s.t.\begin{cases}A\cdot x\leq b,\\ Aeq\cdot x=beq,\\ c(x)\leq 0,\\ ceq(x)=0,\\ lb\leq x\leq ub。\end{cases} minf(x)s.t.AxbAeqx=beqc(x)0ceq(x)=0lbxub

式中: c ( x ) , c e q ( x ) c(x),ceq(x) c(x),ceq(x)为非线性向量函数。
Matlab中的命令是

[ x , f v a l ] = f m i n c o n ( f u n , x 0 , A , b , A e q , b e q , l b , u b , n o n l c o n , o p t i o n s ) [x,fval]=fmincon(fun,x_0,A,b,Aeq,beq,lb,ub,nonlcon,options) [x,fval]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)


如果没有线性约束,则填入"[ ]"就行。

f u n fun fun是用M文件定义的函数 f ( x ) ; f(x); f(x) n o n l c o n nonlcon nonlcon是用M文件定义的非线性向量函数 c ( x ) , c e q ( x ) ; o p t i o n s c(x),ceq(x);options c(x),ceq(x)options定义了优化参数,可以使用Matlab默认的参数设置。

      求下列非线性规划:

m i n f ( x ) = x 1 2 + x 2 2 + x 3 2 + 8 , s . t . { x 1 2 − x 2 + x 3 2 ≥ 0 , x 1 + x 2 2 + x 3 3 ≤ 20 , − x 1 − x 2 2 + 2 = 0 , x 2 + 2 x 3 2 = 3 , x 1 , x 2 , x 3 ≥ 0 。 \qquad\qquad\qquad\qquad\qquad minf(x)=x_1^2+x_2^2+x_3^2+8,\\ \qquad\qquad\qquad\qquad\qquad \\ \qquad\qquad\qquad\qquad\qquad s.t.\begin{cases} x_1^2-x_2+x_3^2\geq0,\\ x_1+x_2^2+x_3^3\leq20,\\ -x_1-x_2^2+2=0,\\ x_2+2x_3^2=3,\\ x_1,x_2,x_3\geq0。\end{cases} minf(x)=x12+x22+x32+8s.t.x12x2+x320x1+x22+x3320x1x22+2=0x2+2x32=3x1,x2,x30

      (1)编写M函数fun1.m定义目标函数:

function f=fun1(x);
f=sum(x.^2)+8;%x是向量,里面已经包含了x1,x2,x3,矩阵用.^是将各元素平方。

(2)编写M函数fun2.m定义非线性约束条件:

function [g,h]=fun2(x);
g=[-x(1)^2+x(2)-x(3)^2
	x(1)+x(2)^2+x(3)^3-20];%非线性不等式约束  这里第一个式子变号了,因为Matlab标准型要用≤的不等式
h=[-x(1)-x(2)^2+2
	x(2)+2*x(3)^2-3];%非线性等式约束

(3)编写主程序文件如下:

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

求得当 x 1 x_1 x1=0.5522, x 2 x_2 x2=1.2033, x 3 x_3 x3=0.9478时,最小值 y y y=10.6511。

(rand函数的问题后面一起说)

无约束问题的Matlab解法

无约束问题的符号解

      求多元函数 f ( x , y ) = x 3 − y 3 + 3 x 2 + 3 y 2 − 9 x f(x,y)=x^3-y^3+3x^2+3y^2-9x f(x

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值