Нахождение минимума функции max с учетом ограничения в MATLAB

Итак, у меня есть функция, которая принимает максимум 16 различных функций. Я хочу найти минимум этой функции при условии, что эта функция равна другой функции. Вот как выглядит код (H1,...,H16 - все векторы-столбцы):

function f = opt(a,b,c)
F1 = a*mean(H1) + b*var(H1)+ c*skewness(H1);
...*more functions here*...
F15 = a*mean(H15) + b*var(H15)+ c*skewness(H15);
F16 = a*mean(H16) + b*var(H16)+ c*skewness(H16);
FVEC = [F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16];
[ max, max_index ] = max(FVEC);
f = max;
end

Ограничение Я хочу, чтобы указанная выше функция была равна первой в списке:

opt(a,b,c) = a*mean(H1) + b*var(H1)+ c*skewness(H1)

Я думаю, что должен использовать fmincon, но, несмотря на мои неоднократные попытки, у меня, похоже, возникают проблемы, плюс не похоже, что он поддерживает ограничения, зависящие от другой функции (хотя я могу неправильно читать документы). Это правильная функция для использования? Как лучше всего подойти к этой проблеме? Я новичок в MATLAB, поэтому я не знаком с тем, как будет выглядеть типичный подход.


person jackson5    schedule 06.11.2017    source источник
comment
Я не понимаю закрытого голосования? Я понимаю, что это простой вопрос, но если вам нужно, чтобы я добавил дополнительную информацию или что-то в этом роде, пожалуйста, дайте мне знать! Анонимное закрытое голосование не помогает мне понять, почему вы думаете, что это плохой вопрос или не подходит для SO.   -  person jackson5    schedule 06.11.2017


Ответы (1)


Функция max недифференцируема. Большинство решателей ожидают гладких функций (включая fmincon). К счастью, существует простая линейная формулировка:

min y
y >= v(i) for all i

y автоматически принимает наибольшее значение v(i).

Ваше ограничение будет

y = v(1)

В этом случае мы можем даже отказаться от min y.

Это заставит первый набор наблюдений быть максимальным v. Я не уверен, но это может привести к недопустимой модели (если она не может организовать a, b, c таким образом).

person Erwin Kalvelagen    schedule 06.11.2017