Лучшие практики теплого старта

Используйте Теплый Старт в MATLAB

lsqlin и quadprog решатели поддерживают использование теплого начального объекта в качестве расширенной начальной точки. Теплые стартовые объекты хранят специфичные для алгоритма данные из предыдущего решения, чтобы помочь избежать дорогостоящей инициализации между решениями. Использование теплого старта может значительно увеличить эффективность между несколькими вызовами решателя. Чтобы использовать теплый старт с решателем, вы сначала создадите объект теплого начала с помощью optimwarmstart. Задайте начальную точку x0 и опции, созданные с optimoptions, включая настройку Algorithm опция для 'active-set'. Для основных примеров смотрите quadprog Возврат объекта теплого старта и объекта lsqlin Возврат объекта теплого старта. Для более обширного примера смотрите Квадрог Теплого Старта.

Используйте теплый стартовый объект, когда вы решаете последовательность аналогичных задач. Для достижения наилучшей эффективности следуйте этим рекомендациям.

  • Сохраните одинаковое количество переменных. У вас должно быть то же количество переменных от одной задачи до следующей. Если количество переменных меняется, решатели выдают ошибку.

  • Не изменяйте ограничения равенства. Если вы измените матрицы ограничений равенства Aeq или beq, решатель не может использовать теплый старт.

  • Измените несколько строк A матрица. Теплый старт работает наиболее эффективно, когда задача изменяет всего несколько строк A матрица и соответствующие b вектор, представляющий ограничение A*x <= b. Это изменение включает добавление или удаление одного или нескольких ограничений.

  • Измените несколько элементов b вектор. Теплый старт работает наиболее эффективно, когда задача модифицирует только несколько элементов b вектор.

  • Измените несколько связанных ограничений. Теплый старт работает наиболее эффективно, когда задача изменяет только несколько границ путем добавления, удаления или изменения записей в верхних границах или нижних границах. Это изменение включает в себя установку ограничений на Inf или - Inf.

  • Измените целевую функцию. Теплый старт может быть эффективным, когда вы меняете матрицу или вектор, представляющий целевую функцию - H и f массивы для quadprog, или C и d массивы для lsqlin. Однако большие модификации этих массивов могут привести к снижению эффективности, поскольку предыдущее решение может быть далеко от нового решения.

Улучшение эффективности теплого старта в конечном счете зависит от геометрии задачи. Для многих задач преимущества эффективности улучшаются, поскольку между проблемами происходит меньше изменений.

Используйте теплый старт в генерации кода со статическим управлением памятью

В дополнение к руководствам для MATLAB® теплое начало, следуйте этим рекомендациям для генерации кода со статическим управлением памятью:

  • Установите 'MaxLinearEqualities' и 'MaxLinearInequalities' аргументы имя-значение в optimwarmstart.

  • Использовать coder.varsize (MATLAB Coder) макросы на всех входах решателя, которые являются матрицами (lb, Aeq, и так далее).

См. также

| | | (MATLAB CODER)

Похожие темы