[英]Constrain optimization in MATLAB for cost function which have extra parameter passing to it
我是一位不熟悉MATLAB的電氣工程師。 我的問題是,當我調用“ fmincon”命令時,如何傳遞用於計算成本函數的其他變量。 首先,我首先創建一個成本函數名稱“ Sum_Square_error.m”,以根據估計的輸出(使用神經網絡進行估計的輸出)和實際輸出計算平方和誤差。在此函數中,我將使用訓練好的火車網絡的權重乘以收縮系數矩陣(c),並將其稱為“ modify_input_weight”。 然后我用Modify_input_weight評估神經網絡,從而得到估計輸出。 之后,我得到平方和錯誤。 我的目標是通過使用收縮系數矩陣(c)來調整神經網絡的權重,以將Sum_square_error最小化。
我已經閱讀了“ fmincon”功能參考。 我可以通過三種方法傳遞額外的參數:1.匿名函數2.嵌套函數3.全局變量對於這種問題,哪種方法最合適。 我試圖像這樣使用匿名函數
------------------------------------------- Sum_Square_error.m ---- -------------------------------------------------- -f = @(c)Sum_Square_error(c,input_weight,X_test,Y_test);
for i=1:10
modify_input_weight(:,i) = c(i,1)*input_weight(:,i);
end
net.IW{1,1}= modify_input_weight;
y = net(X_test);
e = gsubtract(Y_test,y);
f = sum(e)^2;
結束
--------------------------------------------------主程序------------------------------------------------ ----------
A = ones(1,10);
b = s;
lb = zeros(1,10);
[c,fval] = fmincon(@Sum_Square_error,c0,A,b,[],[],lb,[]);
但是在我嘗試運行此程序后,它顯示了許多錯誤消息。 有人可以幫我傳遞“ c,input_weight,X_test,Y_test”來優化此成本函數。
在Sum_Square_error.m
您Sum_Square_error.m
聲明匿名函數使其成為常規函數,因此請更改
f = @(c) Sum_Square_error(c,input_weight,X_test,Y_test);
至
function f = Sum_Square_error(c,input_weight,X_test,Y_test)
現在在您的主體中,當您說@fun時,您實際上需要顯式地傳遞參數
fmincon(@Sum_Square_error(c,input_Weight,X_test,Y_test),c0,A,b,[],[],lb,[]);
在這里用實際數據替換c,input_Weight,X_test,Y_test
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.