Можно ли сертифицировать, что решение является глобальной переменной?

Никакие гарантии

Как можно сказать, определили ли вы местоположение глобального минимума своей целевой функции? Короткий ответ - то, что вы не можете; у вас нет гарантии, что результатом решателя Global Optimization Toolbox является глобальный оптимум. В то время как все решатели Global Optimization Toolbox неоднократно пытаются определить местоположение глобального решения, никакой решатель не использует алгоритм, который может сертифицировать решение как глобальную переменную.

Однако можно использовать стратегии в этом разделе для исследования решений.

Проверяйте, является ли Решением Локальное решение с patternsearch

Прежде чем можно будет определить, является ли подразумеваемое решение глобальной минимальной, первой проверкой, что это - локальный минимум. Для этого запустите patternsearch на проблеме.

Чтобы преобразовать problem, чтобы использовать patternsearch вместо fmincon или fminunc, войти

problem.solver = 'patternsearch';

Кроме того, измените стартовую точку на решение, которое вы только нашли, и очистите опции:

problem.x0 = x;
problem.options = [];

Например, Проверка Соседние Точки (Optimization Toolbox) показывает следующее:

options = optimoptions(@fmincon,'Algorithm','active-set');
ffun = @(x)(x(1)-(x(1)-x(2))^2);
problem = createOptimProblem('fmincon', ...
    'objective',ffun,'x0',[1/2 1/3], ...
    'lb',[0 -1],'ub',[1 1],'options',options);
[x,fval,exitflag] = fmincon(problem)

x =
  1.0e-007 *
         0    0.1614

fval =
 -2.6059e-016

exitflag =
     1

Однако проверка этого подразумеваемого решения с patternsearch показывает, что существует лучшее решение. Запустите patternsearch с решения, о котором сообщают, x:

% set the candidate solution x as the start point
problem.x0 = x;
problem.solver = 'patternsearch';
problem.options = [];
[xp,fvalp,exitflagp] = patternsearch(problem)

Optimization terminated: mesh size less than options.MeshTolerance.

xp =

    1.0000   -1.0000


fvalp =

   -3.0000


exitflagp =

     1

Идентифицируйте ограниченную область, которая содержит глобальное решение

Предположим, что у вас есть сглаженная целевая функция в ограниченной области. Учитывая достаточное количество времени и стартовых точек, MultiStart в конечном счете определяет местоположение глобального решения.

Поэтому, если вы можете, связал область, где глобальное решение может существовать, можно получить определенную степень обеспечения, что MultiStart определяет местоположение глобального решения.

Например, рассмотрите функцию

f=x6+y6+sin(x+y)(x2+y2)потому что(x21+y2)(2+x4+x2y2+y4).

Начальные слагаемые x 6 + y 6 обеспечивают функцию, чтобы стать большими и положительными для больших значений |x | или |y |. Компоненты глобального минимума функции должны быть в границах

– 10 ≤ x, y ≤ 10,

с тех пор 106 намного больше, чем все множители 104, которые происходят в других слагаемых функции.

Можно идентифицировать меньшие границы для этой проблемы; например, глобальный минимум между –2 и 2. Более важно идентифицировать разумные границы, чем это должно идентифицировать лучшие границы.

Используйте MultiStart с большим количеством стартовых точек

Проверять, существует ли лучшее решение вашей проблемы, выполнение MultiStart с дополнительными стартовыми точками. Используйте MultiStart вместо GlobalSearch для этой задачи, потому что GlobalSearch не запускает локальный решатель от всех стартовых точек.

Например, смотрите Пример: Поиск Лучшего Решения.

Похожие темы