Оптимизация сложных систем
Оптимизация ищет допустимое решение с лучшим значением критерия. Для сложной системы сначала важно выбрать правильную границу: ускорение одного компонента может ухудшить весь поток.
Постановка
Нужно определить:
- переменные, которыми можно управлять;
- целевые показатели;
- жёсткие ограничения;
- неопределённые параметры;
- горизонт времени;
- базовый вариант.
Методы
- аналитическая оптимизация — когда модель достаточно проста;
- математическое программирование — для явной цели и ограничений;
- имитация — если поведение задаётся событиями и распределениями;
- поиск по экспериментам — если есть безопасный стенд;
- эвристика — если точный поиск непрактичен, а границы риска известны;
- декомпозиция — оптимизация подсистем с последующей координацией.
Подробная карта методов: Математические методы оптимизации задач в исследовании операций.
Многокритериальная оптимизация
При целях единственного «лучшего по всему» решения обычно нет.
Парето-оптимальное решение нельзя улучшить по одному критерию, не ухудшив хотя бы другой. Набор таких решений образует фронт Парето.
дешевле <--------- компромисс ---------> надёжнееСпособы выбрать точку:
- свёртка критериев с заранее согласованными весами;
- основной критерий плюс ограничения по остальным;
- лексикографический порядок;
- выбор из фронта Парето владельцем решения.
Локальная и системная цель
Если каждая команда минимизирует загрузку своего компонента, она может увеличить сетевые вызовы и общую задержку. Поэтому локальные критерии должны выводиться из системного результата.
Надёжность результата
После поиска оптимума меняю входные параметры в допустимых пределах. Если небольшая ошибка прогноза радикально меняет решение, нужен более робастный вариант, даже если его номинальный результат чуть хуже.
Самопроверка
- Что означает Парето-оптимальность?
- Почему оптимум модели может быть плохим решением?
- В каких случаях лучше основной критерий с ограничениями, чем сумма весов?