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
, и так далее).
lsqlin
| quadprog
| optimwarmstart
| coder.varsize
(MATLAB Coder)