1
我正在使用Matlab 2015a。如何在Matlab中正確地使用參數進行參數優化?
這裏是我要優化功能:
function result = fig_of_merit(x, a, b, c, d)
result = 1;
end
這是我要如何優化功能:
x1 = [10*10^-6, 120];
x2 = [300*10^-6, 175];
fminbnd(@(x) fig_of_merit(x, 1, 2, 3, 4),x1,x2);
我不斷收到以下錯誤:
Error using * Inner matrix dimensions must agree.
Error in fminbnd (line 291)
x = xf + si * max(abs(d), tol1);
Error in test (line 5)
fminbnd(@(x) fig_of_merit(x, 1, 2, 3, 4),x1,x2);
我的代碼有什麼問題?我做了同樣的優化沒有界限使用功能和一切都很好。
它是與我所用的匿名函數 - 當我減少了矢量x1和x2到標量,它的工作:
fminbnd(@(x) fig_of_merit(x, 1, 2, 3, 4),-4, 5);
它不能使我滿意,因爲我想優化2參數一次。
你也很難優化常數函數:)無論如何,這個問題可能是由'結果=一(尺寸(X))來解決;',我我不確定。 –
然後我得到以下錯誤:*用戶提供的目標函數必須返回一個標量值。*。 – user2738748
對'fminbnd'的幫助說:「FUN接受標量輸入X並返回在X處評估的標量函數值F.」所以看起來像'fminbnd'不允許像其他優化功能一樣優化多個參數。 – drhagen