Я использую fmincon
для решения
min f(x)
s.t. c(x) >= 0, lb <= x <= ub
, где c(x)
- нелинейное неравенство.Я начинаю с точки x_0
, которая удовлетворяет ограничениям неравенства и ограничениям ящика.Поиск дает точку, которая неосуществима.Мне интересно, есть ли возможность отслеживать точки, исследуемые fmincon
, которые возможны, и из них возвращать ту, которая минимизирует f(x)
?
Одно из решений, которое я нашел, - это сохранить файл storage.mat
и в функции f(x)
записать
load('storage')
x_store = [x_store , x];
save('storage','x_store ')
и ex post найти в x_store
точку, которая удовлетворяетограничения и минимизирует f(x)
.Одна из проблем этого метода заключается в том, что я не могу вызвать fmincon
параллельно и выполнить мультистарт.
Другое решение заключается в использовании функции вывода .Это, однако, сохраняет не все вызовы f(x)
, а только вызовы итерации.