%syms s t;
%f=(t+3)^2+(t-2*s)^2;
%[xm,minf]=minTruA(f,[0 0],0.1,0.3,0.7,[t s])
%Optimization terminated: no negative curvature detected in current
% trust region model and first order optimality measure < OPTIONS.TolFun.
%Optimization terminated: relative function value changing by
% less than OPTIONS.TolFun.
%Optimization terminated: no negative curvature detected in current
% trust region model and first order optimality measure < OPTIONS.TolFun.
%Optimization terminated: no negative curvature detected in current
% trust region model and first order optimality measure < OPTIONS.TolFun.
%Optimization terminated: relative function value changing by
% less than OPTIONS.TolFun.
%Optimization terminated: relative function value changing by
%less than OPTIONS.TolFun.
%xm =
%
% -3.0000
% -1.5000
%
%
%minf =
%
% 1.9722e-031
function [x,minf]=minTruA(f,x0,r0,mu,yita,var,eps)
%目标函数:f;
%初始点:x0;
%初始信赖域半径:r0;
%初始参数:mu
%初始参数:yita
%自变量向量:var;
%精度:eps;
%目标函数取最小值的自变量值:x;
%目标函数的最小值:minf
if nargin==6
eps=1.0e-6;
end
tol=1;
x0=transpose(x0);
r=r0;
while tol>eps
gradf=jacobian(f,var);
jacf=jacobian(gradf,var);%雅可比矩阵
fx=Funval(f,var,x0);
v=Funval(gradf,var,x0);
pv=Funval(jacf,var,x0);
tol=norm(v);
H=double(pv);%二次规划 中的二次项矩阵
c=transpose(v);%二次规划 中的一次项矩阵
lb=-r*ones(length(var),1);%r为信赖域半径,自变量下界约束
ub=r*ones(length(var),1);%自变量上界约束
[y,fy]=quadprog(H,c,[],[],[],[],lb,ub);%求解二次规划
fx_n=Funval(gradf,var,x0+y);
p=(fx-fx_n)/(-fy);
if p<= mu %修改信赖域半径
r=0.5*r;
else
x0=x0+y;
if p>=yita
r=2*r;
end
end
end
x=x0;
minf=Funval(f,var,x);
format short;
- 1
- 2
- 3
- 4
前往页