3.非线性规划


目标函数或约束条件中包含非线性函数
实例:投资决策问题

非线性规划模型

MATLAB解法

[x,fval]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
  • x:决策向量取值
  • fval:目标函数取值
  • fun:用M文件定义的待求函数
  • x0:x的初始值
  • A,b:定义了线性不等式约束
  • Aeq,beq:定义了线性等式约束
  • lb,ub:x向量的下界和上界
function f=fun1(x);
f=sum(x.^2)+8;
function [g,h]=fun2(x);
g=[-x(1)^2+x(2)-x(3)^2
    x(1)+x(2)^2+x(3)^3-20];%非线性不等式约束
h=[-x(1)-x(2)^2+2
    x(2)+2*x(3)^3-3];%非线性等式约束,要把等式一边变为零,方便求解
clc,clear
[x,y]=fmincon('fun1',rand(3,1),[],[],[],[],zeros(3,1),[],'fun2')

上面这个例子似乎跑不通,不知道怎么回事,(╯‵□′)╯︵┻━┻

无约束问题的MATLAB解法

求多元非线性函数的极值

符号解

  1. 求偏导,解方程,求驻点
  2. 求哈希矩阵
  3. 哈希矩阵:正定–该点处取极小值;负定–该点处取极大值;不定阵–不是极值点

数值解 直接用MATLAB工具箱

  1. fminunc
    [x,fval]=fminunc(fun,x0,options)
  • x:极小值点
  • fval:极小值
  • fun:M函数
  • x0:x的初始值
  • options:优化参数
  1. fminsearch
    [x,fval]=fminsearch(fun,x0,options)
    参数含义同上
    这两个工具求的都是极小值,但是只要把f(x)变成-f(x),也就可以求出极大值了。

函数零点和方程组的解

  • solve函数
  • fsolve函数

约束极值问题(规划问题)

二次规划

目标函数是自变量x的二次函数,约束条件全是线性的。

  • quadprog
    [x,fval]=quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options)
  • H:实对称矩阵
    其他参数含义同上。

罚函数法–序列无约束最小化技术

有约束----(加入罚函数)---->无约束

MATLAB解法

  1. fminbnd 单变量x
    [x,fval]=fminbnd(fun,x1,x2,options)
  • x:极小值点
  • fval:极小值
  • x1,x2:x的下上限
  1. fseminf 多变量
    [x,fval]=fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub)
  • ntheta:半无穷约束的个数
  • seminfcon:函数,用于定义非线性不等式约束、非线性等式约束、半无穷约束的函数
  1. fminimax
    [x,fval]=fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
    类似fmincon
  2. 利用梯度求解

!直接用MATLAB工具箱optimtool!

在这里插入图片描述
这么好的工具居然要在未来版本被remove了,不能给小白留条活路吗/(ㄒoㄒ)/~~

飞行管理问题

前三章总结

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值