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' аргументы «имя-значение» в optimwarmstart.
Использовать coder.varsize (Кодер MATLAB) макросы на всех входах решателя, которые являются матрицами (lb, Aeqи так далее).
lsqlin | optimwarmstart | quadprog | coder.varsize (кодер MATLAB)