Всем привет!Выкладываю первый вариант своей программы для подборки оптимальной, или по крайней мере очень близкой к оптимальной, конфигураций ракет. Подобный проект уже существует, в виде
онлайн-калькулятора. Однако меня эта программа далеко не во всем устраивает, поэтому я решил написать свой вариант.
Главные отличия и особенности:1.
Принцип работы. Не знаю точно, как работает онлайновый Optimal Rocket Calculator, но насколько я смог разобраться - он клепает случайные конфигурации ракет и выбирает из них подходящие под заданные условия. В результате, если заданная задача достаточно сложна, например, взлет с Ив, он может довольно долго перебирать неподходящие варианты и очень долго искать решение.
Алгоритм моей программы использует перебор вариантов по нескольким параметрам (число горизонтальных ступеней, кратность симметрии горизонтальных ступеней и различные вариации распределения DV по ступеням). При каждом наборе параметров он находит одну и только одну наиболее подходящую по заданные условия конфигурацию ракеты. После перебора всех конфигураций ракет, алгоритм выдает наилучшую. Причем алгоритм достаточно быстро это делает, большинство трудных задач он решает за 1-2 минуты, по крайней мере на моем компьютере.
2.
Критерий оптимизации. У GaryCourt, автора Optimal Rocket Calculator, на выбор предлагается 3 оптимальных критерия. Вы можете оптимизировать ракету или по массе, или по цене, или по количеству деталей. В моей программе можно выбрать те же самые 3 критерия или любую их комбинацию, указав коэффициенты важности каждого критерия.
3.
Управляемый вектор тяги. В моем калькуляторе вы можете задать вашей ракете необходимый минимальный управляемый вектор тяги. Таким образом все ваши ступени будут иметь TVC не ниже заданного. Плюс можно задать максимально допустимую массу ракеты, которой TVC не требуется. Но об этом ниже.
4.
Недостатки. К сожалению пока программа работает только с жидкотопливными двигателями, надеюсь допилить твердотопливные и ионные виды двигателей в скором будущем. Думаю, что есть и другие недостатки, надеюсь, что вы мне о них напишите :)
Ах да, будьте осторожны, я пока не допилил обработку ввода недопустимых значений, ибо уже вечер воскресенья и не успеваю.
ПараметрыОптимизировать по: Тут можно указать коэффициенты важности параметров ракеты. Например, если указать для цены коэффициент 1, а для остальных критериев 0, программа найдет оптимальную конфигурацию ракеты по цене. Если указать все критерии по единице, то программа будет подбирать оптимальную ракету по всем критериям сразу. (Например, если будет 2 ракеты с одной массой и первая стоит 100000 и имеет 50 деталей, а вторая стоит 200000 и имеет 25 деталей, то они будут считаться программой одинаково хорошими).
Стоит отметить, что при выборе оптимальной ракеты имеет значение только соотношение коэффициентов между собой. Например при коэффициентах 1 4 1 и 0.5 2 0.5 будет отображаться один и тот же результат. (Программа рассчитывает средне взвешенное геометрическое по всем параметрам с весами-коэффициентами и выбирает наилучший, то есть умножает между собой параметры в степени коэффициентов, а потом извлекает корень степени суммы всех коэффициентов
)
Полезная нагрузка. Модули, капсулы, научные приборы и т.д. Весь пассивный груз, который нужно доставить до конечной цели.
Требуемое dv. Запас DV, необходимый ракете ля выполнения задачи.
Местная гравитация. Задается, если вам необходимо взлетать или садиться на какое-либо тело. К этому параметру привязывается TWR.
TWR минимальный и максимальный. Минимальный TWR определяет значение TWR, ниже которого тяга ракеты опуститься в процессе полета не должна. Максимальный TWR пока не несет никакой полезной нагрузки, так как у жидкотопливных двигателей можно уменьшать тягу. Эта цифра будет иметь значение, когда я прилеплю к своей программе расчет твердотопливных ступеней.
TWR и гравитацию можно указывать и для расчета межпланетных перелетов для ограничения времени прожига ступеней. Это может пригодиться, чтобы задать минимальную тягу. Например, если ракете нужно для перелета dv = 3000 м/с и задать гравитацию = 1 и TWR = 2, то ракета будет лететь с ускорением не ниже 2 м/с2. Таким образом время работы ступени будет ограничено 3000/2 = 1500сЧисло горизонтальных ступеней, минимальное и максимальное. Можно указать значение от 1 и выше. Определяет сколько в ракете будет горизонтальных ступеней до вертикального перехода вниз. Если указать 1, то все ступени будут вертикальными. Программа переберет все варианты между минимальным и максимальным значениями и выберет наилучший.
Горизонтальные ступени по-умолчанию всегда соединяются топливными шлангами, возможно позже я сделаю галочку, что можно было их убрать, но как по мне, в этом нет смысла.
Горизонтальная симметрия, минимум и максимум.Определяет симметрию горизонтальных ступеней 2х, 3х,..., 8х (5х и 7х исключены). Минималное значение - 2, максимальное - 8. Программа выбирает наилучший вариант.
Предельный размер центральной/радиальной связки. Если стоит значение больше 1, то программа будет предлагать (если в этом есть необходимость) связки одинаковых баков с двигателями без разъединителя. Например, 7 морковок с Mainsaial-ами. Программа предлагает связки баков только в том случае, если не хватает TWR или DV.
Минимальный угол управляемой тяги и Управляемая масса. Если данный параметр указан, ракета будет комплектоваться такими двигателями, чтобы на каждой ступени средний по мощности двигателей TVC не падал ниже указанного.
Управляемая масса - это масса, которая будет управляться с помощью SAS или RCS без помощи TVC.
Разъединитель после полезной нагрузки. Если галочка стоит, то к последней ступени добавляется вертикальный разъединитель, в противном случае последний бак с двигателем остаются крафтом.
Атмосферные характеристики двигателей. Если данный пункт отмечен, то расчет двигателей будет идти по их импульсу при атмосферном давлении, в противном случае - в вакууме.
Первая ступень горизонтальная. Если указано, то от полезной нагрузки первые баки с двигателями будут сбоку, в противном случае - снизу.
Тяга, импульс и TVC предыдущих ступеней. Указываются, если предполагается, что двигатели предыдущих ступеней будут работать вместе с данной ракетой.
Метод поиска. Равномерное распределение DV - ракеты разбивается на ступени с DV каждой ступени, не ниже указанного
Экспоненциальное распределение DV - Первая ступень будет иметь DV не ниже указанного, минимальное DV каждой следующей будет ниже в указанное количество раз.
Перебор всех вариантов - автоматически перебираются различные варианты распределения DV по ступеням и выбирается наилучший.
[attachment=11619]
Вложения:
Вам запрещено скачивать вложения.
Сообщение отредактировал 25 августа 2014 - 17:45