ПРОПТ
Разработчик(и) | Томлаб Оптимизация Инк. |
---|---|
Стабильная версия | 7,8
/ 16 декабря 2011 г. |
Операционная система | ТОМЛАБ — Поддержка ОС |
Тип | Технические вычисления |
Лицензия | Собственный |
Веб-сайт | Страница продукта ПРОПТ |
ПРОПТ [1] Программное обеспечение MATLAB Optimal Control — это платформа нового поколения для решения задач прикладного оптимального управления (с ОДУ или ДАУ формулировкой ) и оценки параметров .
Платформа была разработана победителем конкурса программирования MATLAB Пером Рутквистом в 2008 году. Самая последняя версия поддерживает двоичные и целочисленные переменные, а также модуль автоматического масштабирования.
Описание
[ редактировать ]PROPT — это комбинированный механизм моделирования , компиляции и решателя, созданный на основе класса моделирования TomSym и предназначенный для генерации очень сложных задач оптимального управления. PROPT использует псевдоспектральный метод коллокации (с точками Гаусса или Чебышева) для решения задач оптимального управления. Это означает, что решение принимает форму Polynomial , DAE и пути и этот полином удовлетворяет ограничениям в точках коллокации.
В целом PROPT имеет следующие основные функции:
- Вычисление постоянных матриц, используемых для дифференцирования и интегрирования полиномов, используемых для аппроксимации решения задачи оптимизации траектории .
- Преобразование источника для преобразования введенных пользователем выражений в код MATLAB для функции стоимости. и функция ограничения которые передаются решателю нелинейного программирования в TOMLAB . Пакет преобразования исходного кода TomSym автоматически генерирует производные первого и второго порядка.
- Функционал для построения и расчета разнообразной информации для решения задачи.
- Автоматическое обнаружение следующего:
- Линейная и квадратичная цель.
- Простые границы, линейные и нелинейные ограничения.
- Неоптимизированные выражения.
- Интегрированная поддержка негладких [2] (гибридные) задачи оптимального управления.
- Модуль для автоматического масштабирования сложных пространственных задач.
- Поддержка двоичных и целочисленных переменных, элементов управления или состояний.
Моделирование
[ редактировать ]Система PROPT использует механизм преобразования символических источников TomSym для моделирования задач оптимального управления. Можно определить независимые переменные, зависимые функции, скаляры и постоянные параметры:
toms tf
toms t
p = tomPhase('p', t, 0, tf, 30);
x0 = {tf == 20};
cbox = {10 <= tf <= 40};
toms z1
cbox = {cbox; 0 <= z1 <= 500};
x0 = {x0; z1 == 0};
ki0 = [1e3; 1e7; 10; 1e-3];
Состояния и элементы управления
[ редактировать ]Состояния и средства контроля различаются только в том смысле, что состояния должны быть непрерывными между фазами.
tomStates x1
x0 = {icollocate({x1 == 0})};
tomControls u1
cbox = {-2 <= collocate(u1) <= 1};
x0 = {x0; collocate(u1 == -0.01)};
Границы, пути, события и интегральные ограничения
[ редактировать ]Ниже показаны различные граничные, траекторные, событийные и интегральные ограничения:
cbnd = initial(x1 == 1); % Starting point for x1
cbnd = final(x1 == 1); % End point for x1
cbnd = final(x2 == 2); % End point for x2
pathc = collocate(x3 >= 0.5); % Path constraint for x3
intc = {integrate(x2) == 1}; % Integral constraint for x2
cbnd = final(x3 >= 0.5); % Final event constraint for x3
cbnd = initial(x1 <= 2.0); % Initial event constraint x1
Пример однофазного оптимального управления
[ редактировать ]Van der Pol Oscillator [3]
Свернуть:
С учетом:
Для решения проблемы с PROPT можно использовать следующий код (с 60 точками коллокации):
toms t
p = tomPhase('p', t, 0, 5, 60);
setPhase(p);
tomStates x1 x2 x3
tomControls u
% Initial guess
x0 = {icollocate({x1 == 0; x2 == 1; x3 == 0})
collocate(u == -0.01)};
% Box constraints
cbox = {-10 <= icollocate(x1) <= 10
-10 <= icollocate(x2) <= 10
-10 <= icollocate(x3) <= 10
-0.3 <= collocate(u) <= 1};
% Boundary constraints
cbnd = initial({x1 == 0; x2 == 1; x3 == 0});
% ODEs and path constraints
ceq = collocate({dot(x1) == (1-x2.^2).*x1-x2+u
dot(x2) == x1; dot(x3) == x1.^2+x2.^2+u.^2});
% Objective
objective = final(x3);
% Solve the problem
options = struct;
options.name = 'Van Der Pol';
solution = ezsolve(objective, {cbox, cbnd, ceq}, x0, options);
Пример многофазного оптимального управления
[ редактировать ]Одномерная ракета [4] со свободным временем окончания и неопределенным фазовым сдвигом
Свернуть:
С учетом:
Проблема решается с помощью PROPT путем создания двух фаз и их подключения:
toms t
toms tCut tp2
p1 = tomPhase('p1', t, 0, tCut, 20);
p2 = tomPhase('p2', t, tCut, tp2, 20);
tf = tCut+tp2;
x1p1 = tomState(p1,'x1p1');
x2p1 = tomState(p1,'x2p1');
x1p2 = tomState(p2,'x1p2');
x2p2 = tomState(p2,'x2p2');
% Initial guess
x0 = {tCut==10
tf==15
icollocate(p1,{x1p1 == 50*tCut/10;x2p1 == 0;})
icollocate(p2,{x1p2 == 50+50*t/100;x2p2 == 0;})};
% Box constraints
cbox = {
1 <= tCut <= tf-0.00001
tf <= 100
0 <= icollocate(p1,x1p1)
0 <= icollocate(p1,x2p1)
0 <= icollocate(p2,x1p2)
0 <= icollocate(p2,x2p2)};
% Boundary constraints
cbnd = {initial(p1,{x1p1 == 0;x2p1 == 0;})
final(p2,x1p2 == 100)};
% ODEs and path constraints
a = 2; g = 1;
ceq = {collocate(p1,{
dot(p1,x1p1) == x2p1
dot(p1,x2p1) == a-g})
collocate(p2,{
dot(p2,x1p2) == x2p2
dot(p2,x2p2) == -g})};
% Objective
objective = tCut;
% Link phase
link = {final(p1,x1p1) == initial(p2,x1p2)
final(p1,x2p1) == initial(p2,x2p2)};
%% Solve the problem
options = struct;
options.name = 'One Dim Rocket';
constr = {cbox, cbnd, ceq, link};
solution = ezsolve(objective, constr, x0, options);
Пример оценки параметров
[ редактировать ]Проблема оценки параметров [5]
Свернуть:
С учетом:
В приведенном ниже коде проблема решена с помощью мелкой сетки (10 точек коллокации). Это решение впоследствии дорабатывается с использованием 40 точек коллокации:
toms t p1 p2
x1meas = [0.264;0.594;0.801;0.959];
tmeas = [1;2;3;5];
% Box constraints
cbox = {-1.5 <= p1 <= 1.5
-1.5 <= p2 <= 1.5};
%% Solve the problem, using a successively larger number collocation points
for n=[10 40]
p = tomPhase('p', t, 0, 6, n);
setPhase(p);
tomStates x1 x2
% Initial guess
if n == 10
x0 = {p1 == 0; p2 == 0};
else
x0 = {p1 == p1opt; p2 == p2opt
icollocate({x1 == x1opt; x2 == x2opt})};
end
% Boundary constraints
cbnd = initial({x1 == p1; x2 == p2});
% ODEs and path constraints
x1err = sum((atPoints(tmeas,x1) - x1meas).^2);
ceq = collocate({dot(x1) == x2; dot(x2) == 1-2*x2-x1});
% Objective
objective = x1err;
%% Solve the problem
options = struct;
options.name = 'Parameter Estimation';
options.solver = 'snopt';
solution = ezsolve(objective, {cbox, cbnd, ceq}, x0, options);
% Optimal x, p for starting point
x1opt = subs(x1, solution);
x2opt = subs(x2, solution);
p1opt = subs(p1, solution);
p2opt = subs(p2, solution);
end
Поддерживаются задачи оптимального управления
[ редактировать ]- Аэродинамическое управление траекторией [6]
- Контроль взрыва [7]
- Химическая инженерия [8]
- Динамические системы [9]
- Общее оптимальное управление
- Масштабное линейное управление [10]
- Управление многофазной системой [11]
- Машиностроительное проектирование [12]
- Недифференцируемое управление [13]
- Оценка параметров динамических систем [14]
- Единый контроль
Ссылки
[ редактировать ]- ^ Рутквист, Пер; М.М. Эдвалл (июнь 2008 г.). PROPT — Программное обеспечение оптимального управления Matlab (PDF) . Пулман, Вашингтон: Tomlab Optimization Inc.
- ^ Банга, младший; Бальса-Канто, Э.; Моулс, CG; Алонсо, А.А. (2003). «Динамическая оптимизация биопроцессов: эффективные и надежные численные стратегии». Журнал биотехнологии.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ «Осциллятор Ван дер Поля — решение Matlab», домашняя страница PROPT, июнь 2008 г.
- ^ «Запуск одномерной ракеты (2 свободного времени)», домашняя страница PROPT , июнь 2008 г.
- ^ «Оценка динамических параметров Matlab с помощью PROPT», домашняя страница PROPT , июнь 2008 г.
- ^ Беттс, Дж. (2007). «SOCS Версия 6.5.0». КОМПАНИЯ БОИНГ.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Лян, Дж.; Мэн, М.; Чен, Ю.; Фуллмер, Р. (2003). «Решение сложных задач оптимального управления с помощью сетевого сервера оптимизации (NEOS)». Инженерный факультет Университета штата Юта, США, Китайский университет Гонконга, Китай.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Карраско, EF; Банга, младший (сентябрь 1998 г.). «ГИБРИДНЫЙ МЕТОД ОПТИМАЛЬНОГО УПРАВЛЕНИЯ ХИМИЧЕСКИМИ ПРОЦЕССАМИ». Уэльский университет, Суонси, Великобритания: Международная конференция UKACC по КОНТРОЛЮ 98.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Василиадис, В.С.; Банга, младший; Бальса-Канто, Э. (1999). «Чувствительность второго порядка общих динамических систем применительно к задачам оптимального управления». Химико-техническая наука . 54 (17): 3851–3860. Бибкод : 1999ЧЭнС..54.3851В . дои : 10.1016/S0009-2509(98)00432-1 .
- ^ Луус, Р. (2002). Итеративное динамическое программирование . Чепмен и Холл/CRC.
- ^ Фабьен, Британская Колумбия (1998). «Java-приложение для решения задач оптимального управления». Стивенс Уэй, а/я 352600 Сиэтл, Вашингтон, 98195, США: Машиностроение, Вашингтонский университет.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) CS1 maint: расположение ( ссылка ) - ^ Дженнингс, Л.С.; Фишер, Мэн (2002). «MISER3: Руководство пользователя Optimal Control Toolbox, бета-версия Matlab 2.0». Недлендс, Вашингтон, 6907, Австралия: факультет математики Университета Западной Австралии.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) CS1 maint: расположение ( ссылка ) - ^ Банга, младший; Сейдер, В.Д. (1996). Флудас, Калифорния; Пардалос, премьер-министр (ред.). Глобальная оптимизация химических процессов с использованием стохастических алгоритмов - современное состояние глобальной оптимизации: вычислительные методы и приложения . Дордрехт, Нидерланды: Kluwer Academic Publishers. стр. 563–583. ISBN 0-7923-3838-3 .
- ^ Долан, Эд; Подробнее, Джей-Джей (январь 2001 г.). «Бенчмаркинг программного обеспечения для оптимизации с помощью COPS». 9700 South Cass Avenue, Аргонн, Иллинойс 60439: АРГОННСКАЯ НАЦИОНАЛЬНАЯ ЛАБОРАТОРИЯ.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) CS1 maint: расположение ( ссылка )