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

Используйте горячий запуск в MATLAB

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

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

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

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

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

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

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

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

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

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

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

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

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

Смотрите также

| | | (MATLAB Coder)

Похожие темы