Симплексный алгоритм решения задач оптимального управления

Автор благодарен Шевченко Г.В. за помощь оказанную при

создании программного комплекса.

 

Предполагается что управляемая система имеет вид  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.

Благодаря введению большого числа управляющих параметров программный комплекс может быть настроен на решение широкого множества различных задач. Однако трудно ожидать чтобы все они численно решались достаточно эффективно; численное решение каждой задачи  требует конкретного индивидуального подхода (практического опыта), поэтому могут оказаться не реализованными некоторые варианты задач.

 

 

На главную страницу

 

Хостинг от uCoz