赞
踩
x = fminsearch(fun,x0)
x = fminsearch(fun,x0,options)
x = fminsearch(problem)
[x,fval] = fminsearch(___)
%对任何之前输入的语法,在fval中返回解x处的目标函数fun的值。
[x,fval,exitflag] = fminsearch(___)
%返回描述退出条件的值exitflag。
[x,fval,exitflag,output] = fminsearch(___)
%返回带有优化过程信息的结构输出。
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(x2−x12)2+(1−x1)2
该函数在点x = [1,1]处被最小化,最小值为0。设置起始点为x0 = [-1.2,1],用fminsearch将Rosenbrock的函数最小化。
fun = @(x)100*(x(2) - x(1)^2)^2 + (1 - x(1))^2;
x0 = [-1.2,1];
x = fminsearch(fun,x0,options)
x = fminunc(fun,x0)
x = fminunc(fun,x0,options)
x = fminunc(problem)
[x,fval] = fminunc(___)
[x,fval,exitflag,output] = fminunc(___)
[x,fval,exitflag,output,grad,hessian] = fminunc(___)
最小化函数 f ( x ) = 3 x 1 2 + 2 x 1 x 2 + x 2 2 − 4 x 1 + 5 x 2 f(x)=3x_1^2+2x_1x_2+x_2^2-4x_1+5x_2 f(x)=3x12+2x1x2+x22−4x1+5x2
fun = @(x)3*x(1)^2 + 2*x(1)*x(2) + x(2)^2 - 4*x(1) + 5*x(2);
x0 = [1,1];
[x,fval] = fminunc(fun,x0)
options = optimoptions('fminunc','Algorithm','trust-region','SpecifyObjectiveGradient',true);
%创建选项来使用目标函数的梯度。将算法设置为'trust-region'。
x0 = [-1,2]; #初始点为[-1,2]
fun = @rosenbrockwithgrad;
x = fminunc(fun,x0,options)
%找到局部最小值。
%优化完成,因为梯度小于优化容忍度的值。
%创建rosenbrockwithgrad函数,包含梯度作为第二输出。
function [f,g] = rosenbrockwithgrad(x)
% Calculate objective f
f = 100*(x(2) - x(1)^2)^2 + (1-x(1))^2;
if nargout > 1 % gradient required
g = [-400*(x(2)-x(1)^2)*x(1) - 2*(1-x(1));
200*(x(2)-x(1)^2)];
end
end
x = fseminf(fun,x0,ntheta,seminfcon) %从x0开始,在seminfcon中定义的ntheta半无限约束下找到函数fun的最小值。 x = fseminf(fun,x0,ntheta,seminfcon,A,b) %加入线性不等式约束A*x≤b。 x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq) %加入线性等式约束Aeq*x=beq。 x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub) %给x加上界和下界,满足lb ≤ x ≤ ub x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub,options) %指定优化选项 x = fseminf(problem) [x,fval] = fseminf(___) [x,fval,exitflag,output] = fseminf(___) [x,fval,exitflag,output,lambda] = fseminf(___)
objfun = @(x)(x-1)^2; x0 = 0.2; %初始点x0=0.2 ntheta = 1; %指明有一个半无限约束 x = fseminf(objfun,x0,ntheta,@seminfcon) %调用fseminf解决问题 function [c, ceq, K1, s] = seminfcon(x,s) %无有限非线性不等式和等式约束 c = []; ceq = []; % 样本集 if isnan(s) %有限样本区间 s = [0.01 0]; end t = 0:s(1):1; %评估半无限的约束条件 K1 = (x - 0.5) - (t - 0.5).^2; end
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。