PROPT - PROPT

В PROPT[1] MATLAB Оптимальный контроль Программное обеспечение - платформа нового поколения для решения прикладного оптимального управления (с ODE или же DAE формулировка) и оценка параметров проблемы.

Платформа была разработана победителем конкурса MATLAB Programming Contest, Пер Рутквист в 2008 году. Самая последняя версия поддерживает двоичные и целочисленные переменные, а также модуль автоматического масштабирования.

Описание

ПРОПТ - это комбинированный моделирование, сборник и движок решателя, построенный на TomSym класс моделирования для генерации сложных задач оптимального управления. PROPT использует псевдоспектральный Метод коллокации (с точками Гаусса или Чебышева) для решения задач оптимального управления. Это означает, что решение имеет вид Полиномиальный, и этот многочлен удовлетворяет ДАУ и пути ограничения в точках коллокации.

Обычно PROPT выполняет следующие основные функции:

  • Вычисление константы матрицы используется для дифференциация и интеграция полиномов, используемых для аппроксимации решения Оптимизация траектории проблема.
  • Преобразование исходного кода в поставку пользователем выражения в код MATLAB для функции стоимости и функция ограничения которые передаются Нелинейное программирование решатель в ТОМЛАБ. Пакет преобразования исходного кода TomSym автоматически генерирует производные первого и второго порядка.
  • Функциональность для построения и вычисления разнообразной информации для решения проблемы.
  • Автоматическое обнаружение следующего:
    • Линейный и квадратичный объектив.
    • Простые границы, линейные и нелинейные ограничения.
    • Неоптимизированные выражения.
  • Интегрированная поддержка негладкий[2] (гибридные) задачи оптимального управления.
  • Модуль для автоматического масштабирования сложной космической задачи.
  • Поддержка двоичных и целочисленных переменных, элементов управления или состояний.

Моделирование

Система PROPT использует механизм преобразования символьного источника TomSym для моделирования задач оптимального управления. Можно определить независимый переменные, зависимые функции, скаляры и постоянные параметры:

 томы tf томы т п = tomPhase('п', т, 0, tf, 30); x0 = {tf == 20}; cbox = {10 <= tf <= 40}; томы 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 <= совмещать(u1) <= 1}; x0 = {x0; совмещать(u1 == -0.01)};

Границы, пути, события и интегральные ограничения

Ниже показаны различные ограничения, ограничивающие границы, пути, события и интегральные ограничения:

 cbnd = исходный(x1 == 1);       % Начальная точка для x1 cbnd = окончательный(x1 == 1);         % Конечная точка для x1 cbnd = окончательный(x2 == 2);         % Конечная точка для x2 pathc = совмещать(x3 >= 0.5);  % Ограничение пути для x3 intc  = {интегрировать (x2) == 1};  % Интегральное ограничение для x2 cbnd = окончательный(x3 >= 0.5);       % Окончательное ограничение события для x3 cbnd = исходный(x1 <= 2.0);     % Начальное ограничение события x1

Пример оптимального однофазного управления

Осциллятор Ван дер Поля [3]

Свести к минимуму:

При условии:

Для решения проблемы с PROPT можно использовать следующий код (с 60 точками сопоставления):

томы тп = tomPhase('п', т, 0, 5, 60);setPhase(п);TomStates х1 х2 х3tomControls ты% Первоначальное предположениеx0 = {icollocate({x1 == 0; x2 == 1; x3 == 0})    совмещать(ты == -0.01)};Ограничения% Boxcbox = {-10  <= icollocate(x1) <= 10    -10  <= icollocate(x2) <= 10    -10  <= icollocate(x3) <= 10    -0.3 <= совмещать(ты)   <= 1};% Граничные ограниченияcbnd = исходный({x1 == 0; x2 == 1; x3 == 0});% ODE и ограничения путиceq = совмещать({точка(x1) == (1-x2.^2).*x1-x2+ты    точка(x2) == x1; точка(x3) == x1.^2+x2.^2+ты.^2});% Цельцель = окончательный(x3);% Решать проблемуопции = структура;опции.имя = 'Ван дер Поль';решение = Ezsolve(цель, {cbox, cbnd, ceq}, x0, опции);

Пример многофазного оптимального управления

Одномерная ракета [4] со свободным временем окончания и неопределенным фазовым сдвигом

Свести к минимуму:

При условии:

Проблема решается с помощью PROPT путем создания двух фаз и их соединения:

томы ттомы tCut tp2p1 = tomPhase('p1', т, 0, tCut, 20);p2 = tomPhase('p2', т, tCut, tp2, 20);tf = tCut+tp2;x1p1 = TomState(p1,'x1p1');x2p1 = TomState(p1,'x2p1');x1p2 = TomState(p2,'x1p2');x2p2 = TomState(p2,'x2p2');% Первоначальное предположениеx0 = {tCut==10    tf==15    icollocate(p1,{x1p1 == 50*tCut/10;x2p1 == 0;})    icollocate(p2,{x1p2 == 50+50*т/100;x2p2 == 0;})};Ограничения% Boxcbox = {    1  <= tCut <= tf-0.00001    tf <= 100    0  <= icollocate (p1, x1p1)    0  <= icollocate (p1, x2p1)    0  <= icollocate (p2, x1p2)    0  <= icollocate (p2, x2p2)};% Граничные ограниченияcbnd = {исходный(p1,{x1p1 == 0;x2p1 == 0;})    окончательный(p2,x1p2 == 100)};% ODE и ограничения путиа = 2; грамм = 1;ceq = {совмещать(p1,{    точка(p1,x1p1) == x2p1    точка(p1,x2p1) == а-грамм})    совмещать(p2,{    точка(p2,x1p2) == x2p2    точка(p2,x2p2) == -грамм})};% Цельцель = tCut;% Фаза связисвязь = {окончательный(p1,x1p1) == исходный(p2,x1p2)    окончательный(p1,x2p1) == исходный(p2,x2p2)};%% Решать проблемуопции = структура;опции.имя = 'Одна тусклая ракета';constr = {cbox, cbnd, ceq, связь};решение = Ezsolve(цель, constr, x0, опции);

Пример оценки параметра

Задача оценки параметров [5]

Свести к минимуму:

При условии:

В приведенном ниже коде проблема решена с помощью мелкой сетки (10 точек коллокации). Это решение впоследствии дорабатывается с использованием 40 точек сопоставления:

томы t p1 p2x1meas = [0.264;0.594;0.801;0.959];время  = [1;2;3;5];Ограничения% Boxcbox = {-1.5 <= p1 <= 1.5    -1.5 <= p2 <= 1.5};%% Решите проблему, последовательно увеличивая количество точек сопоставленияза п=[10 40]    п = tomPhase('п', т, 0, 6, п);    setPhase(п);    TomStates х1 х2    % Первоначальное предположение    если п == 10        x0 = {p1 == 0; p2 == 0};    ещеx0 = {p1 == p1opt; p2 == p2opt            icollocate({x1 == x1opt; x2 == x2opt})};    конец% Граничные ограничения    cbnd = исходный({x1 == p1; x2 == p2});    % ODE и ограничения пути    x1err = сумма((atPoints(время,x1) - x1meas).^2);    ceq = совмещать({точка(x1) == x2; точка(x2) == 1-2*x2-x1});    % Цель    цель = x1err;    %% Решать проблему    опции = структура;    опции.имя   = 'Оценка параметров';    опции.решатель = 'snopt';    решение = Ezsolve(цель, {cbox, cbnd, ceq}, x0, опции);    % Оптимальный x, p для начальной точки    x1opt = подводные лодки(x1, решение);    x2opt = подводные лодки(x2, решение);    p1opt = подводные лодки(p1, решение);    p2opt = подводные лодки(p2, решение);конец

Поддерживаются задачи оптимального управления

Рекомендации

  1. ^ Рутквист, Пер; М. М. Эдвалл (июнь 2008 г.). PROPT - программное обеспечение для оптимального управления Matlab (PDF). 1260 SE Bishop Blvd Ste E, Pullman, WA 99163, USA: Tomlab Optimization Inc.CS1 maint: location (связь)
  2. ^ Banga, J. R .; Balsa-Canto, E .; Moles, C. G .; Алонсо, А. А. (2003). «Динамическая оптимизация биопроцессов: эффективные и надежные численные стратегии». Журнал биотехнологии. Цитировать журнал требует | журнал = (помощь)
  3. ^ "Осциллятор Ван дер Поля - решение Matlab", PROPT Домашняя страница Июнь 2008 г.
  4. ^ "Запуск одномерной ракеты (2 свободного времени)", PROPT Домашняя страница Июнь 2008 г.
  5. ^ "Оценка динамических параметров Matlab с помощью PROPT", PROPT Домашняя страница Июнь 2008 г.
  6. ^ Беттс, Дж. (2007). «Версия 6.5.0 SOCS». КОМПАНИЯ BOEING. Цитировать журнал требует | журнал = (помощь)
  7. ^ Liang, J .; Meng, M .; Chen, Y .; Фуллмер, Р. (2003). «Решение сложных проблем оптимального управления с помощью сервера оптимизации с поддержкой сети (NEOS)». Школа инженерии, Государственный университет Юты США, Чайненский университет Гонконга, Китай. Цитировать журнал требует | журнал = (помощь)
  8. ^ Карраско, Э. Ф .; Банга, Дж. Р. (сентябрь 1998 г.). «ГИБРИДНЫЙ МЕТОД ОПТИМАЛЬНОГО КОНТРОЛЯ ХИМИЧЕСКИХ ПРОЦЕССОВ». Университет Уэльса, Суонси, Великобритания: Международная конференция UKACC по CONTROL 98. Цитировать журнал требует | журнал = (помощь)
  9. ^ Вассилиадис, В. С .; Banga, J. R .; Бальса-Канто, Э. (1999). «Чувствительность второго порядка общих динамических систем с приложением к задачам оптимального управления». 54. Химическая инженерия: 3851–3860. Цитировать журнал требует | журнал = (помощь)
  10. ^ Луус, Р. (2002). Итеративное динамическое программирование. Чепмен и Холл / CRC.
  11. ^ Фабьен, Б.С. (1998). «Java-приложение для решения задач оптимального управления». Stevens Way, Box 352600 Seattle, WA 98195, США: Машиностроение, Вашингтонский университет. Цитировать журнал требует | журнал = (помощь)CS1 maint: location (связь)
  12. ^ Дженнингс, Л. С .; Фишер, М. Э. (2002). "MISER3: Руководство пользователя Optimal Control Toolbox, Matlab Beta Version 2.0". Nedlands, WA 6907, Австралия: математический факультет Университета Западной Австралии. Цитировать журнал требует | журнал = (помощь)CS1 maint: location (связь)
  13. ^ Banga, J. R .; Зейдер, В. Д. (1996). Floudas, C.A .; Пардалос, П. М. (ред.). Глобальная оптимизация химических процессов с использованием стохастических алгоритмов - состояние дел в глобальной оптимизации: вычислительные методы и приложения. Дордрехт, Нидерланды: Kluwer Academic Publishers. С. 563–583. ISBN  0-7923-3838-3.
  14. ^ Dolan, E.D .; Мор, Дж. Дж. (Январь 2001 г.). «Тестирование оптимизационного программного обеспечения с помощью COPS». 9700 Саут-Касс-авеню, Аргонн, Иллинойс 60439: НАЦИОНАЛЬНАЯ ЛАБОРАТОРИЯ АРГОННЫ. Цитировать журнал требует | журнал = (помощь)CS1 maint: location (связь)

внешняя ссылка

  • ТОМЛАБ - Разработчик и дистрибьютор программного обеспечения.
  • TomSym - Механизм преобразования исходного кода, используемый в программном обеспечении.
  • PROPT - Домашняя страница PROPT.
  • СНОПТ - Решатель по умолчанию, используемый в PROPT.