Matlab优化算法-非线性规划

非线性规划(NLP)

有约束条件的非线性规划

非线性规划_NLP_1.png

例题1

非线性规划_NLP_2.png

% 非线性规划NLP
%如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划问题。
%{
[x,fval,exitflag,output,lambda,grad,hessian]= fmincon('fun',x0,A,b,Aeq,beq,VLB,VUB,'nonlcon',options)
其中,大部分参数同线性规划;
    VLB和UVB分别是变量x的下界和上界;
    "fun'为用M文件定义的目标函数F(x);
“nonlcon'为用M文件定义的非线性向量函数[C(x),Ceq(x)]。
A,b,Aeq,beq定义了线性约束A.x<b,Aeq.x =beq,
如果没有线性约束,则A=[],b=[],Aeq =[],beq =[]%}
function func_1 = fun1(x)
    func_1 = x(1)^2+x(2)^2+8;
end

function [C,Ceq] = fun2(x)
    C = -x(1)^2+x(2);   %matlab标准,不等式通通都是小于号 所以取负号
    Ceq = x(1)+x(2)^2-2;
end

x0 = rand(2,1);
VLB = zeros(2,1);
[x,fval,exitflag,output,lambda,grad,hessian]= fmincon('fun1',x0,[],[],[],[],VLB,[],'fun2')
lingo

非线性规划_NLP_2 Lingo.png

例题2

非线性规划_NLP_3.png

% 非线性规划NLP
%如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划问题。
%{
[x,fval,exitflag,output,lambda,grad,hessian]= fmincon('fun',x0,A,b,Aeq,beq,VLB,VUB,'nonlcon',options)
其中,大部分参数同线性规划;
    VLB和UVB分别是变量x的下界和上界;
    "fun'为用M文件定义的目标函数F(x);
“nonlcon'为用M文件定义的非线性向量函数[C(x),Ceq(x)]。
A,b,Aeq,beq定义了线性约束A.x<b,Aeq.x =beq,
如果没有线性约束,则A=[],b=[],Aeq =[],beq =[]%}
%目标函数

function fun_c = fun_c1(x)
    fun_c = x(1)^2+x(2)^2+x(3)^2+8;  %f(x)= x1^2+x2^2+x3^2+8
end

% 非线性函数
function [fun_c,fun_ceq] = fun_c2(x)
    fun_c = [-x(1)^2+x(2)-x(3)^2 , x(1)+x(2)^2+x(3)^2-20]; %大于号转换小于号 写成符号
    %非线性约束条件 函数表达式 不等式矩阵
    fun_ceq = [-x(1)-x(2)^2+2 , x(2)+2*x(3)^2-3];
    %非线性约束条件 函数表达式 等式矩阵
end

x0_1= rand(3,1);
VLB1 = zeros(3,1);
[x,fval]= fmincon('fun_c1',x0_1,[],[],[],[],VLB1,[],'fun_c2')
例题3

非线性规划_NLP_5.png
非线性规划_NLP_6.png
非线性规划_NLP_7.png

二次规划

若某非线性规划的目标函数为自变量x的二次函数,约束条件又全是线性的,则称这种规划为二次规划。

    min 1/2*(x)'H(x)+(f)'x %‘'’ 单引号表示转置符号
    %二次型换实对称矩阵时,需要把矩阵元素扩大2%eg: f = 2*x1^2-4*x1*x2+4*x2^2-6*x1-3*x2  %只需要看二次型,和交互项
    %实对称矩阵 [2,-2;-2,2] 二次项系数不变化,交互项减半 
    %在调用二次规划函数时,需要把实对称矩阵变成2

二次规划1.png
二次规划2.png

%二次规划(线性代数 二次型)(题目见--优化算法-非线性规划.md)
%{
[x,fval,exitflag,output] = quadprog(H,f,A,b,Aeq,beq,LB,UB,x0,options)
\其中,大部分参数同线性规划;
    LB和VB分别是变量x的下界和上界;
    A和b对应不等式约束Ax<b;
    Aeq和beq对应等式约束Ax=b;
    H %实对称矩阵的2倍
    f %一次项系数
    x0为x的初始值;options为控制参数。
%}
%二次型换实对称矩阵

Hx2 = 2*[2,-2;-2,4]; %实对称矩阵
fx2 = [-6,-3];%一次项系数
Ax2 = [1,1;4,1];%不等式约束条件
bx2 = [3;9];%不等式约束条件

[x,fval,exitflag] = quadprog(Hx2,fx2,Ax2,bx2,[],[],zeros(2,1))

无约束条件的非线性规划

  1. fminbnd 查找单变量函数在定区间上的最小值
    fminbnd.png
x = fminbnd(fun,x1,x2) 返回一个值 x,该值是 fun 中描述的标量值函数在区间 x1 < x < x2 中的局部最小值。
  1. fminunc 求无约束多变量函数的最小值
[x,fval,exitflag,output,lambda,grad,hessian]= fmincon('fun',x0,options)
options参数:
        LargeScale,on或off设置大型中型优化算法;
        HessUpdate,设置中型优化算法的搜索方向的算法。
        'bfgs'(默认)为拟牛顿法的BFGS公式;
        'dfp'为拟牛顿法的DFP公式;
        'steepdesc'为最速下降法;
        LineSearchType,设置中型优化算法的步长一维搜索的两种算法。
        'quadcubic'(默认)为混合的二次和三次多项式插值;
        'cubicpoly'为三次多项式插值。
  1. fminsearch 使用无导数法计算无约束的多变量函数的最小值
    fminsearch.png
x = fminsearch(fun,x0) 在点 x0 处开始并尝试求 fun 中描述的函数的局部最小值 x。
%无约束条件的非线性规划(题目见--优化算法-非线性规划.md)
%绘制图像
f3x = linspace(-pi, pi);
y3x = abs(1./(f3x));
plot(f3x, y3x,'ro');
grid on

x3_0 =1;%初值
x3_1 =-3;
x3_2 =1;
[x1,fval1,exitflag] = fminbnd(@fun3, x3_1, x3_2) %在x3_1~x3_2之间的最值
[x2,fval2,exitflag] = fminunc(@fun3, x3_0)
[x3,fval3,exitflag] = fminsearch(@fun3, x3_0)
函数说明

(1)三个函数可能只输出局部最优解。
(2)三个函数均只对变量为实数的问题进行优化。
(3) fminunc函数要求目标函数必须连续。

例题(3种类型函数求解)

fminpro.png
abs.png

%无约束条件的非线性规划(题目见--优化算法-非线性规划.md)
%绘制图像
f3x = linspace(-pi, pi);
y3x = abs(1./(f3x));
plot(f3x, y3x,'ro');
grid on

x3_0 =1;%初值
x3_1 =-3;
x3_2 =1;
[x1,fval1,exitflag] = fminbnd(@fun3, x3_1, x3_2) %在x3_1~x3_2之间的最值
%fminunc函数优化成功,但解是错误的(fminunc的目标函数必须是连续函数,本例目标函数不连续)
[x2,fval2,exitflag] = fminunc(@fun3, x3_0)
%fminsearch函数优化失败,因为该函数只能求解多变量目标函数。
[x3,fval3,exitflag] = fminsearch(@fun3, x3_0)

fminbnd1.png
fminunc.png
fminsearch2.png

matlab最优化程序包括:无约束一维极值问题、进退法、黄金分割法、斐波那契法、牛顿法基本牛顿法、全局牛顿法、割线法、抛物线法、三次插值法、可接受搜索法、Goidstein法、Wolfe Powell法、单纯形搜索法、Powell法、最速下降法、共轭梯度法、牛顿法、修正牛顿法、拟牛顿法、信赖域法、显式最速下降法、Rosen梯度投影法、罚函数法、外点罚函数法、內点罚函数法、混合罚函数法、乘子法、G-N法、修正G-N法、L-M法、线性规划、单纯形法、修正单纯形法、大M法、变量有界单纯形法、整数规划、割平面法、分支定界法、0-1规划、二次规划、拉格朗曰法、起作用集算法、路径跟踪法、粒子群优化算法、基本粒子群算法、带压缩因子的粒子群算法、权重改进的粒子群算法、线性递减权重法、自适应权重法、随机权重法、变学习因子的粒子群算法、同步变化的学习因子、异步变化的学习因子、二阶粒子群算法、二阶振荡粒子群算法 (matlab optimization process includes Non-binding one-dimensional extremum problems Advance and retreat method Golden Section Fibonacci method of basic Newton s method Newton s method Newton s Law of the global secant method parabola method acceptable to the three interpolation search method Goidstein France Wolfe.Powell France Simplex search method Powell steepest descent method Conjugate gradient method Newton s method Newton s method to amend Quasi-Newton Method trust region method explicitly steepest descent method, Rosen gradient projection method Penalty function method outside the penalty function method within the penalty function method Mixed penalty function multiplier method G-N was amended in G-N method L-M method Of linear programming simplex method, revised simplex method Big M method variables bounded simplex method, Cutting Plane Method integer programming branch and bound method 0-1 programming quadratic programming )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值