Симплексный алгоритм решения задач оптимального
управления
Автор благодарен Шевченко Г.В. за помощь
оказанную при
создании программного комплекса.
Предполагается что
управляемая система имеет вид dx/dt=f(x)+ Bu,
(1)
x(0)= x0,
где
x= (x1,…, xn) – состояние,
u=u(u1,…,us)-управление.
x(0)- начальное состояние.
Будем считать, что начальное
состояние x(0) и конечный момент времени T заданы.
Задача:
Минимизировать функционал φ(x(t)) на
траекториях системы (1) при дополнительном условии
(2)
r(x(T))= 0,
r=r(r1,…,rm)-заданная вектор-функция терминального ограничения.
Допустимыми управлениями
будем считать кусочно-непрерывные на промежутке [0,T] функции,
удовлетворяющие ограничению
(3) λ1(t)<= u(t) <= λ2(t)
Если минимизируемым
функционалом является конечное время, то задача называется задачей оптимального
быстродействия.
Учёт терминальных ограничений
при численном решении задач осуществляется посредством метода модифицированной
функции Лагранжа. В случае нелинейных систем традиционным способом производится
линеаризация системы вдоль опорной траектории и применяется симплексный
алгоритм для решения линеаризованной задачи. Исходные тексты программ на языке Java, реализующих симплексный алгоритм доступны в виде zip-файла. В файлах contrmdat.txt и contrmd3.txt задаются входные данные для расчётов, в файл contrmres.txt выводятся результаты
расчётов (Имена файлов задаются в модуле contrm.java).
Формат файлов описан в файле Readme.
Благодаря
введению большого числа управляющих параметров программный комплекс может быть
настроен на решение широкого множества различных задач. Однако трудно ожидать
чтобы все они численно решались достаточно эффективно; численное решение каждой
задачи требует конкретного
индивидуального подхода (практического опыта), поэтому могут оказаться не
реализованными некоторые варианты задач.