Я использую 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);
Что случилось с моим кодом? Я сделал то же самое для оптимизации без ограничений, используя функцию fminsearch, и все было в порядке.
Это что-то делать с анонимной функции я использовал - когда я уменьшил векторы x1 и x2 для скаляров, он работал:
fminbnd(@(x) fig_of_merit(x, 1, 2, 3, 4),-4, 5);
Он не удовлетворяет меня, потому что я хочу, чтобы оптимизировать 2 параметры сразу.
Вы будете иметь трудное время, оптимизируя постоянную функцию :) Во всяком случае, эта проблема может быть решена с помощью результата = те (размер (х)) ';' я Не уверен. –
Затем я получил следующую ошибку: * Пользовательская целевая функция должна возвращать скалярное значение. *. – user2738748
Справка для 'fminbnd' say" FUN принимает скалярный вход X и возвращает значение скалярной функции F, оцениваемое на X. " Таким образом, выражение 'fminbnd' не позволяет одновременно оптимизировать несколько параметров, как и другие функции оптимизации. – drhagen