当前位置:   article > 正文

MATLAB非线性优化函数总结(一)

matlab非线性优化函数

MATLAB非线性优化函数总结(一)


MATLAB非线性优化函数总结(二).

fminbnd

  • 寻找单变量函数在固定区间上的最小值。 即,在 x 1 < x < x 2 x_1<x<x_2 x1<x<x2范围内,为问题 m i n x f ( x ) min_x f(x) minxf(x)找到一个最小化值;
  • x , x 1 , x 2 x,x_1,x_2 x,x1,x2标量 f ( x ) f(x) f(x)为返回标量的函数;

语法

x = fminbnd(fun,x1,x2)
%返回标量函数在(x1,x2)范围内的局部最小值,用fun描述目标函数
  • 1
  • 2
x = fminbnd(fun,x1,x2,options)
%用options.中指定的优化选项进行最小化,用optimset设置选项。
  • 1
  • 2
x = fmin(problem)
%找到problem的最小值,problem中描述问题的结构。
  • 1
  • 2
[x,fval] = fmin(__)
%对任何输入参数,返回目标函数用fun计算的在x处的值。
  • 1
  • 2
[x,fval,exitflag] = fminbnd(___) 
%返回目标函数用fun计算的在x处的值之外,返回描述退出条件的值exitflag。
  • 1
  • 2
[x,fval,exitflag,output] = fminbnd(___) 
%除以上之外,返回一个包含优化信息的结构输出
  • 1
  • 2

示例

  1. sin(x)函数在0<x<2π范围内的最小值点:
fun = @sin;
x1 = 0;
x2 = 2*pi;
x = fminbnd(fun,x1,x2)
  • 1
  • 2
  • 3
  • 4
  1. 最小化指定的函数。

将函数写成文件,并将文件保存为scalarobjective.m。

function f = scalarobjective(x)
f = 0;
for k = -10:10
    f = f + (k+1)^2*cos(k*x)*exp(-k^2/2);
end
  • 1
  • 2
  • 3
  • 4
  • 5
x = fminbnd(@scalarobjective,1,3)
  • 1

fmincon

  • 寻找有约束多变量函数的最小值;
  • m i n x f ( x ) min_x f(x) minxf(x) such that { c ( x ) ≤ 0 c e q ( x ) = 0 A ⋅ x ≤ b A e q ⋅ x = b e q l b ≤ x ≤ u b \left\{
    c(x)0ceq(x)=0A·xbAeq·x=beqlbxub
    \right.
    c(x)0ceq(x)=0AxbAeqx=beqlbxub

    b b b b e q beq beq为向量, A A A A e q Aeq Aeq为矩阵, c ( x ) c(x) c(x) c e q ( x ) ceq(x) ceq(x)为返回向量的函数, f ( x ) f(x) f(x)为返回标量的函数, f ( x ) f(x) f(x) c ( x ) c(x) c(x) c e q ( x ) ceq(x) ceq(x)都可为非线性函数。

语法

x = fmincon(fun,x0,A,b)
%从x0开始,在线性不等式A*x≤b的条件下找到目标函数的最小化x。
%x0可以是标量、向量或矩阵。
  • 1
  • 2
  • 3
x = fmincon(fun,x0,A,b,Aeq,beq)
%在Aeq*x=beq和A*x≤b的线性等式约束下,使fun最小。
%若不存在不等式,设A=[]和b=[]。
  • 1
  • 2
  • 3
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
%定义变量的下限和上限,x在lb ≤ x ≤ ub的范围内。
%如果不存在等价物,设Aeq=[],beq=[]。
%若x(i)无下界,设lb(i)=-Inf,如果x(i)无上界,设ub(i)=Inf。
  • 1
  • 2
  • 3
  • 4
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
%在nonlcon中定义的非线性不等式或等式约束下进行最小化。
%fmincon优化,在nonlcon中使c(x)≤0,ceq(x)=0。
%若不存在上下界,设置lb = [],ub = []。
  • 1
  • 2
  • 3
  • 4
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
%用options中指定的优化选项来最小化。用optimoptions设置选项。
%若无非线性不等式或等式约束,设置nonlcon = []。
  • 1
  • 2
  • 3
x = fmincon(problem)
%找到problem的最小值,problem中描述了目标问题结构。
  • 1
  • 2
[x,fval] = fmincon(___)
%对任何语法,返回解x处目标函数fun的值。
  • 1
  • 2
[x,fval,exitflag,output] = fmincon(___)
%返回解x处目标函数fun的值之外,返回fmincon退出条件的值exitflag,以及一个包含优化过程信息的结构输出。
  • 1
  • 2
[x,fval,exitflag,output,lambda,grad,hessian] = fmincon(___)
%另外返回
 - lambda,解x处的拉格朗日乘子的结构。
 - grad,在解x处目标函数的梯度。
 - hessian,在解x处目标函数的海塞。
  • 1
  • 2
  • 3
  • 4
  • 5

示例

  1. 线性不等式约束

Rosenbrock函数定义为 f ( x ) = 100 ( x ( 2 ) − x ( 1 ) 2 ) 2 + ( 1 − x ( 1 ) ) 2 f(x)=100(x(2)-x(1)^2)^2+(1-x(1))^2 f(x)=100(x(2)x(1)2)2+(1x(1))2,约束条件 x ( 1 ) + 2 x ( 2 ) ≤ 1 x(1)+2x(2) \le 1 x(1)+2x(2)1
从点 [ − 1 , 2 ] [-1,2] [1,2]开始求解,用 A = [ 1 , 2 ] A=[1,2] A=[1,2] b = 1 b=1 b=1表达约束条件。

fun=@(x)100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
x0 = [-1,2];
A = [1,2];
b = 1;
x = fmincon(fun,x0,A,b)
  • 1
  • 2
  • 3
  • 4
  • 5
  1. 线性不等式约束和等式约束
    Rosenbrock函数定义为 f ( x ) = 100 ( x ( 2 ) − x ( 1 ) 2 ) 2 + ( 1 − x ( 1 ) ) 2 f(x)=100(x(2)-x(1)^2)^2+(1-x(1))^2 f(x)=100(x(2)x(1)2)2+(1x(1))2,约束条件 x ( 1 ) + 2 x ( 2 ) ≤ 1 x(1)+2x(2)\le 1 x(1)+2x(2)1 2 x ( 1 ) + x ( 2 ) = 1 2x(1)+x(2)= 1 2x(1)+x(2)=1
fun = @(x)100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
x0 = [0.5,0];
A = [1,2];
b = 1;
Aeq = [2,1];
beq = 1;
x = fmincon(fun,x0,A,b,Aeq,beq)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/350655
推荐阅读
相关标签
  

闽ICP备14008679号