簡體   English   中英

MATLAB中針對成本函數的約束優化,其中傳遞了額外的參數

[英]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.mSum_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM