?? example4_8.m
字號:
%第一步:寫一個m文件 brownvv.m 計算目標(biāo)函數(shù)值、梯度以及海色矩陣值。
%brownvv.m 是計算目標(biāo)函數(shù)文件,它需傳遞給優(yōu)化函數(shù)fmincon。
%type brownvv
%因為我們使用brownfgh計算目標(biāo)函數(shù)值,梯度和海色矩陣,你需要在使用optimset命
%令時使用GradObj 和海色矩陣參數(shù)。
%第二步:定義一個函數(shù)hmfleq1,它利用在ibrownvv計算的矩陣Hinfo和V,計算海
%色矩陣乘積W。
W = H*Y = (Hinfo - V*V')*Y.
%此函數(shù)的形式為:
W = hmfleq1(Hinfo,Y,p1,p2...)
%第一個參數(shù)即為函數(shù)返回的第三個參數(shù),第二個參數(shù)為矩陣Y。
%因為函數(shù)fmincon使用參數(shù)Y去計算海色矩陣的乘積,Y是一個n行矩陣,n即為
%此問題的維數(shù)。Y的列數(shù)是可變的。最后,任何附加的參數(shù)都會傳遞給函數(shù)hmfleq1,
%于是hmfleq1接受了相同的參數(shù)例如矩陣V。
function W = hmfleq1(Hinfo,Y,V);
W = Hinfo*Y - V*(V'*Y);
%第三步:使用命令fmincon 解決此問題。
%從文件中取得V, Aeq, beq的值。
%使用命令 optimset 設(shè)置GradObj 和Hessian參數(shù)為 'on' ,設(shè)定HessMult
%參數(shù)為函數(shù)句柄,指向函數(shù) hmfleq1。令目標(biāo)函數(shù)和矩陣V為優(yōu)化函數(shù)的參數(shù),計算最優(yōu)結(jié)
%果。
% 得到 V, Aeq, beq值
load fleq1
% 問題維數(shù)
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);
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -