⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 example4_8.m

📁 This complete matlab for neural network
💻 M
字号:
%第一步:写一个m文件 brownvv.m 计算目标函数值、梯度以及海色矩阵值。
%brownvv.m 是计算目标函数文件,它需传递给优化函数fmincon。
%type brownvv
%因为我们使用brownfgh计算目标函数值,梯度和海色矩阵,你需要在使用optimset命
%令时使用GradObj 和海色矩阵参数。

%第二步:定义一个函数hmfleq1,它利用在ibrownvv计算的矩阵Hinfo和V,计算海
%色矩阵乘积W。
W = H*Y = (Hinfo - V*V')*Y.
%此函数的形式为:
W = hmfleq1(Hinfo,Y,p1,p2...)
%第一个参数即为函数返回的第三个参数,第二个参数为矩阵Y。
%因为函数fmincon使用参数Y去计算海色矩阵的乘积,Y是一个n行矩阵,n即为
%此问题的维数。Y的列数是可变的。最后,任何附加的参数都会传递给函数hmfleq1,
%于是hmfleq1接受了相同的参数例如矩阵V。

function W = hmfleq1(Hinfo,Y,V);
W = Hinfo*Y - V*(V'*Y);

%第三步:使用命令fmincon 解决此问题。
%从文件中取得V, Aeq, beq的值。
%使用命令 optimset 设置GradObj 和Hessian参数为 'on' ,设定HessMult
%参数为函数句柄,指向函数 hmfleq1。令目标函数和矩阵V为优化函数的参数,计算最优结
%果。

% 得到 V, Aeq, beq值
load fleq1 
% 问题维数
n = 1000; 
mtxmpy = @hmfleq1; % Function handle to function hmfleq1
xstart = -ones(n,1); 
xstart(2:2:n,1) = ones(length(2:2:n),1);
options = optimset('GradObj','on','Hessian','on',...
'HessMult',mtxmpy,'Display','iter');
[x,fval,exitflag,output] = fmincon(@brownvv,xstart,[],[],Aeq,beq,[],[],[], ... options,V);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -