У меня есть функция, которая дает мне вероятность, которую я хочу максимизировать. Проблема в том, что мне нужно дать 4 параметра, которые мне нужно оценить. У меня есть эта функция:Matlab maximize function
[likelihood, z0, z1, z2, z3]= myfun(g, g1, g2, x1, g3, x2, x3)
что в выходе дает правдоподобие, как я могу его максимизировать? Я знаю все g
, но я не знаю x
, и я должен оценить их с максимизацией вероятности. Более того, я не знаю z
.
Предполагаю, что мне следует выполнить fminsearch, но я не смог найти документацию с оценкой параметров, подобную этой.
Правильно - входы делать строго не должны быть скалярными выстраивались в 1D массив; они могут быть расположены в матрице, но поиск будет пытаться оптимизировать каждый элемент в матрице. Поскольку в этом случае существует простое число значений для оптимизации, массив 1 на 7 является вашим единственным вариантом. Вы могли бы упорядочить 7 значений немного более кратко: 'ss = fminsearch (@ (ss) -kalcvf (y, lead, a, reshape (ss (1: 4), 2,2), b, H, diag (ss (5: 7)), z0, vz0), нули (1,7)). – Will
Если у вас есть Инструментарий оптимизации, то 'fmincon' предлагает типы ограничений, которые вы ищете. У меня нет инструментария, но похоже, что ваш пример будет выглядеть примерно так: 'fmincon (@ (ss) -kalcvf (y, lead, a, reshape (ss (1: 4), 2,2), b, H, diag (ss (5: 7)), z0, vz0), нули (7,1), [[-eye (2); eye (2)] нули (4,5)], [0; 0; 1; 1]) '. Если у вас его нет, существуют различные стратегии, которые вы можете использовать с неограниченным поиском, которые обсуждаются онлайн. Если вы используете специально созданную функцию или нет, помните, что поиск нелинейной функции не гарантирует оптимальный или даже хороший ответ на свой счет. – Will
. Вы получаете эту ошибку, потому что количество элементов, которые вы извлекаете из 'params' не соответствует размеру матриц, в которые вы их преобразуете. Чтобы изменить формулу «H» на матрицу размером 9 на 2, вам нужно 18 элементов, но 'params (5:23)' имеет 19. То же самое для 'reshape (params (24: 145), 11,11)', у вас есть слишком много. Но чтобы ответить на ваш второй вопрос, 143 параметра почти наверняка слишком много, чтобы получить хороший результат в разумные временные рамки. Если хороший результат вообще возможен с безусловным поиском, возможно, есть значительно более эффективные способы получения того же результата. – Will