Итак, сейчас я занимаюсь проектом по оптимизации траектории. Я понимаю его принцип: минимизируйте затраты на топливо для путешествия или попытайтесь максимизировать вес космического корабля в пункте назначения, и это выдает оптимальную траекторию для этого. Я просто не уверен.. как это сделать на самом деле? Я много читаю о таких вещах, как «праймер-векторы» и методы, основанные на форме, и даже гамильтонианы (которые пугают до чертиков этого бедного инженера), и я просто не уверен, с чего начать конструирование оптимальная траектория?
Есть ли способ объяснить это для чайников или есть книга, чтобы объяснить это для чайников?
Заранее спасибо!
Я ищу аналогичный ответ, поэтому я решил начать его здесь и позволить другим внести свой вклад. Вот что я нашел до сих пор.
Я начну собирать некоторые общие ссылки здесь.
Чтобы спланировать миссию, вам нужно определить некоторые общие ограничения миссии. Если это новая проблема, вам может потребоваться запустить решение, чтобы понять, какие ограничения могут существовать.
Для этого вы можете выбрать конкретную дату начала миссии, когда вы считаете, что траектория может быть выполнима, а также некоторые другие конкретные ограничения (количество доступного топлива, Isp двигателя и т. д.). По словам Окампо (Глава 4 Оптимизация траектории космического корабля , под редакцией Конвея), создавшего программу оптимизации траектории NASA Copernicus , существует четыре основных шага:
Я думаю , что шаги 1-2 — это все, что вам действительно нужно для создания графиков C3 или DV. После того, как вы определите свои общие ограничения (ниже), вы можете выбрать конкретный набор дат миссии и выполнить все шаги.
Если эталонные траектории уже существуют, вы можете пропустить шаги 1-2, создать графики C3/DV, а затем выполнить все четыре шага после того, как вы определили даты отправления и прибытия и т. д.
Стоит отметить, что Пол предоставил действительно полезную информацию о том, как выполняется сама оптимизация, в другом ответе на этот вопрос . Я не буду пытаться улучшить его ответ прямо сейчас.
Куда ты направляешься? Какова минимальная и максимальная продолжительность миссии? Когда самое раннее, что вы могли бы уйти? Последний? Вас интересуют траектории с малой тягой или что-то более гомановское?
Используйте график свиной отбивной для чрезвычайно приблизительных траекторий, соответствующих выбранным границам.
Для Земли-Марса существует веб-инструмент для создания таких файлов . Этот инструмент, кажется, использует наведение по Ламберту, поэтому он выполняет прямую передачу и, вероятно, не сильно поможет с низкоэнергетическими траекториями, включающими помощь гравитации.
В более общем плане у НАСА есть система поиска траекторий (которая предоставляет много информации по этой теме). Как и в случае с вышеупомянутым приложением, и, по-видимому, в целом, «база данных содержит решения для прямых пересадок и простых гравитационных ассистентов на исходящих участках. Для поиска альтернативных траекторий, не указанных в базе данных, могут использоваться более сложные гравитационные маневры и другие стратегии».
Графики для свиных отбивных нередко содержат большие пустые пространства, где не отображается информация о траектории. Например, рассмотрим это из браузера траекторий НАСА:
Возможно, авторы не рассчитали траектории в белой области, потому что знали, что DV будет слишком высоким, или они просто не отображаются, потому что они на порядки выше показанных и искажают цветная полоса. Вывод здесь заключается в том, что график свиной отбивной должен показывать только соответствующие траектории.
Я не видел никаких сюжетов для лунных миссий (пока). Тем не менее, идея, похоже, та же: вы определяете свои ограничения и выбираете класс миссий (например, прямые переходы) для просмотра. Затем вы учитываете либо удельную энергию (C3), либо DV.
Например, рассмотрим эту главу из книги JPL Low-Energy Lunar Transfer Design . Они начинают с рассмотрения трех разных классов миссий: прямая передача, короткие низкоэнергетические, длительные низкоэнергетические. Они изменяют долготу восходящего узла (которая зависит от даты отправления) и показывают, как изменяется дельта-V для лунной вставки для каждого из них.
Итак, в общем, они выяснили ограничения для своих миссий, а затем определили, какие переменные оказывают наибольшее влияние на DV (или C3).
После того, как вы нарисовали графики свинины (или дельта-V), вы можете определить ограничения, которые одновременно отвечают требованиям вашей миссии и обеспечивают наибольшую гибкость (например, длинное окно запуска, наибольшая устойчивость к сбоям и т. д.).
И я пока остановлюсь здесь и вернусь и добавлю больше позже (по мере того, как я узнаю).
В самом широком смысле оптимизация траектории — это просто поиск наилучшего пути (и контрольных значений для создания этого пути), которые удовлетворяют динамике. Динамика в данном случае представляет собой либо орбитальную динамику (например, задачу Кеплера о двух телах с правильными эфемеридами), динамику подъема ракеты, либо баллистическую/подъемную динамику входа в атмосферу. Функцию стоимости можно создать разными способами, в зависимости от того, что вы хотите получить в итоге. Например, вы можете оптимизировать динамику для создания определенного состояния в конце фиксированного интервала времени. Или вы можете свести к минимуму расход топлива в поездке (что максимизирует массу полезной нагрузки). Или вы можете минимизировать время, необходимое для достижения определенного конечного состояния, используя наименьшее количество (дросселируемой/векторной тяги).
Как только вы определите, что представляют собой ваши динамические уравнения и какова ваша «функция стоимости», вы можете перевести это в набор уравнений, которые сможете решить. Этот процесс называется «транскрипцией» в номенклатуре оптимизации траектории. Вообще говоря, есть два способа расшифровать проблему. «Косвенный» метод предполагает, что вы должны сформулировать условия оптимальности сначала аналитически, а затем дискретизировать эти условия за некоторое количество временных шагов N. В результате получится нелинейная система уравнений с переменные, где M — количество переменных для описания состояния в данный момент времени (например, количество дифференциальных уравнений); плюс управляющие переменные, где P — количество элементов управления, применяемых на каждом временном шаге. Например, в задаче с двумя телами в декартовых координатах у вас будет четыре переменных состояния на каждом временном шаге (положение по оси x, скорость по оси x, положение по оси y и скорость по оси y). Регулятор может представлять собой регулируемую тягу, которая всегда направлена в направлении скорости. Таким образом, на каждом временном шаге будет только 1 элемент управления. Часто это может быть утомительно, так как большую часть работы приходится выполнять вручную.
Альтернативный вариант называется «прямой» метод. В этом случае вы должны сначала дискретизировать уравнения, а затем сформулировать условия оптимальности. Таким образом, вместо того, чтобы формулировать условия для бесконечного пространства (косвенный метод), вы формулируете их только для конечномерного пространства (конечное число переменных состояния + управления). Преимущество этого метода состоит в том, что проблема теперь становится нелинейной задачей оптимизации с ограничениями (которую легче программировать напрямую и решать с помощью программных пакетов).
Под эгидой прямых методов существует несколько различных способов дискретизации проблемы. Один из способов называется коллокацией, когда мы заставляем динамику согласовываться в определенные моменты времени (при этом предполагается какая-то схема интерполяции между этими точками, например, линейная или квадратичная интерполяция). Другой подход называется стрельбой, что похоже на метод проб и ошибок, когда несоответствие (также известное как ограничение дефекта) на каждом временном шаге дискретизируется, а также сводится к минимуму. Я не использовал методы стрельбы для оптимизации траектории, но я использовал метод коллокации, поэтому я обращусь к нему напрямую.
Ключевой трюк метода коллокации заключается в том, чтобы знать, как вычислить нелинейные ограничения равенства, используя динамику проблемы. Основная идея заключается в том, что на каждом временном шаге необходимо ограничить прогнозируемое значение из динамики равным истинному значению в конце временного шага. Предположим, мы рассматриваем i-й временной шаг, который имеет переменные состояния и соответственно во времени и . Предположим также, что уравнение динамики можно записать в виде . Если мы проинтегрируем обе части этого уравнения по времени на интервале от к , мы получили
Интеграл можно дискретизировать многими способами. Для простоты возьмем что-то вроде правила трапеций. Тогда мы можем получить
Определим значение, предсказанное динамикой, как Фактическое значение в конце этого временного шага равно . Итак, чтобы наложить динамическое ограничение, мы просто устанавливаем прогнозируемое значение равным истинному значению в конце этого временного интервала. Математически пишем: . Мы пишем это так, потому что большинство пакетов нелинейного программирования требуют, чтобы вы записывали ограничения равенства с RHS, равным нулю.
Это большая часть тяжелой работы. Вам просто нужно создать функцию, которая одновременно вычисляет вектор, содержащий все эти ограничения на каждом временном шаге. Точно так же вам придется написать свою целевую функцию в терминах дискретных переменных , который может включать дискретизированный интеграл по времени и/или функцию конечного состояния.
После того, как у вас есть целевая функция и функция ограничения равенства (обе функции переменных состояния и элементов управления на всех временных шагах), вам также необходимо будет указать нижние и верхние границы для каждой из переменных состояния и управляющих переменных на всех временных шагах. Эти ограничения обычно физически мотивированы, например, масса должна быть положительной, или радиус орбиты не может превышать 2 астрономических единиц и т. д. Кроме того, вам часто приходится предоставлять начальное предположение, удовлетворяющее нижней и верхней границам. Иногда задача оптимизации траектории может быть чувствительна к вашему первоначальному предположению, поэтому хорошей идеей будет выбрать ее как можно ближе к тому, что, по вашему мнению, должно быть истинным решением (например, если у вас есть какая-то физическая интуиция в проблеме, теперь пора им пользоваться).
Когда у вас есть вся эта информация, вы можете просто передать ее решателю нелинейного программирования (например, fmincon Matlab, ipopt и т. д.). Обычно существуют различные методы, которые можно использовать для решения нелинейных задач оптимизации с ограничениями, такие как последовательное квадратичное программирование (SQP), методы активных множеств (ASM) или методы внутренних точек (IP). Из методов, которые я использовал при оптимизации траектории для орбитальной механики, я обнаружил, что методы внутренних точек являются самыми быстрыми и надежными. Независимо от того, какой метод нелинейного программирования вы выберете, убедитесь, что при проверке сходимости проверяются как выполнимость (насколько сильно мы нарушаем ограничения), так и оптимальность первого порядка (насколько мы близки к тому, чтобы оказаться на дне чаши). /долина). Оба значения должны быть небольшими, чтобы считаться «конвергентным» решением.
Прежде чем вы начнете программировать код оптимизации траектории для орбитальной механики, я настоятельно рекомендую попробовать более простую задачу с известным решением. Так называемая проблема релейного управления является хорошим примером одномерной задачи оптимального управления, включающей одномерное движение. В этой задаче нужно найти оптимальное ускорение, необходимое для достижения определенного расстояния за минимальное время, при котором ваша конечная скорость также равна нулю. Это классическая задача с большой физической интуицией (и даже с аналитическим решением). Интуитивно, лучший контроль будет состоять в том, чтобы ускориться как можно быстрее к цели назначения до определенной точки, а затем максимально быстро замедлиться, пока вы едва достигнете точки назначения со скоростью, равной нулю.
Вы можете увидеть, как эта проблема bang-bang может быть расшифрована с использованием метода прямого словосочетания (в комплекте с кодом Matlab) в блоге Sam Pfrommer:
http://sam.pfrommer.us/tutorial-direct-collocation-trajectory-optimization-with-matlab
Для получения дополнительной информации об оптимизации траектории в целом, с более сложными примерами, такими как проблема управления тележкой, я предлагаю прочитать/посмотреть учебник Мэтью Келли по этой теме:
[Это будет черновик ответа, поскольку я узнаю больше и получу больше времени, чтобы заполнить его и отредактировать с помощью символьной математики - сейчас он будет очень грубым, и этот ответ со временем будет меняться]
Основная упрощенная задача
Общая проблема состоит в том, чтобы взять космический корабль из набора начальных условий к набору терминальных условий куда представляет собой непрерывное управление, для которого необходимо решить направление тяги ракеты с учетом функции стоимости быть сведена к минимуму. Функция стоимости обычно представляет собой минимальное время или максимальную массу терминала для задачи времени со свободным концом или максимальную орбитальную энергию для задачи с фиксированным временем. Могут быть другие дискретные элементы управления, такие как время переключения или другие непрерывные элементы управления, если задействовано регулирование, наряду с ограничениями пути и другими сложностями, которые я пока проигнорирую.
Если дать решение
для всех t, тогда проблема сведется к простой задаче с начальными значениями (IVP) со связанной системой обыкновенных различных уравнений (ОДУ), которую можно проинтегрировать вперед с помощью решателя ОДУ, такого как метод Рунге-Кутта-Фельберга (RKF45) или решатель Дорманда-Принса (RKDP) в пакете Matlab ode45
.
Поскольку нам не дано и вместо этого должен решить для этого управления так, чтобы терминальные граничные условия выполнялись, он становится двухточечной краевой задачей (TPBVP).
Косвенный метод
«Косвенный» метод использует вариационное исчисление (CoV) и раздел математики, называемый теорией оптимального управления, в котором используется принцип максимума (или минимума) Понтрягина. Применительно к проблеме оптимизации траекторий ракет это становится теорией праймер-векторов Лоудена, где большая часть математической основы была сделана для инженера.
Косвенный метод обычно использует методы стрельбы (или многократной стрельбы) для интегрирования предположения о начальных условиях вперед во времени до конечного состояния. Остаток всех граничных значений строится, а затем используется инструмент поиска корней, такой как метод Левенберга-Марквардта или метод квази-Ньютона доверительной области (ванильный метод Ньютона-Рафсона будет иметь трудности со сходимостью с этой нелинейной проблемой).
Опуская математическое развитие, задача для ракеты в вакууме с учетом обратного квадрата потенциала центральной силы где конечная масса должна быть максимизирована, функция стоимости представляет собой простую задачу Майера:
[EDIT: нужен комментарий о нормализации] Гамильтониан я буду формулировать как:
[...все еще в процессе...]
Косвенный метод может быть решен с использованием функций fsolve
или lsqnonlin
функций Matlab для поиска корней и ode45
решателя для интеграции IVP и стрельбы. Или bvp4c/bvp5c
можно использовать решатели словосочетаний для интеграции состояния и стоимости, а также для применения внутренних ограничений.
Ограничения косвенного метода:
Преимущества непрямого метода:
Прямой метод
Прямой метод использует некоторые for ортогонального словосочетания и дискретизации для преобразования TPBVP в задачу нелинейного программирования. Это исключает из задачи реберное состояние и уравнения реберного состояния, а также условия трансверсальности. Обычно не существует единственного решения задачи, удовлетворяющего терминальным условиям, но функция стоимости применяется непосредственно для нахождения решения, удовлетворяющего терминальным ограничениям.
[...опущено огромное количество деталей, о которых я пока только узнаю...]
Функция Matlab fmincon
или привязки Matlab, которые ipopt
можно использовать для решения такого рода проблем, SNOPT
являются широко используемым коммерческим пакетом, используемым для решения такого рода проблем, который также имеет привязки Matlab.
К преимуществам прямого метода относятся:
ооо
ооо
Харви Раэль
Дэн Соренсен
Транслунный
ооо
СФ.
Ламонт