thedeemon: (office)
[personal profile] thedeemon
Называются ли разработчики космической программы космическими программистами?

В наше темное время, когда NASA закрылось, а Роскосмос вставляет датчики положения вверх ногами, регулярно бороздя космическими кораблями пашни Казахстана и просторы Тихого океана, вся надежда человечества сосредоточена на небольшой группе людей, знакомых с кроссплатформенной игрушкой Kerbal Space Program, а надежда этих людей лежит сегодня на вас: нужно написать программу, которая бы изобретала ракеты, оптимально приспособленные под параметры миссии. Входных параметров всего два: масса полезного груза и Delta-V бюджет миссии (определяемый планируемым маршрутом корабля), программа должна придумать конфигурацию ракеты минимальной массы, способной подняться в космос и доставить груз по назначению.
Подробное описание задачи здесь. Там же ссылка на онлайн-калькулятор, в котором можно проверить свое решение и посмотреть, как идет расчет.

Задача проходит в рамках октябрьского конкурса по функциональному программированию, но с измененными правилами. Побеждает не тот, кто пришлет решение раньше, а тот, чьи ракеты для предложенных миссий окажутся легче, а поиск конфигураций - быстрее. Ответы с найденными конфигурациями, ссылками на исходники и указанием времени работы оставляйте здесь. Комментарии будут скрыты в течении 72 часов. Открытое обсуждение условий на страничке конкурса, ну и тут тоже можно, только могут быть некоторые задержки с открытием таких комментов.



Upd: время вышло, ответы открыты, подводим итоги:

  Mun Kerbol Moho sumlanguage
Nikita Beloglazov 224.325 113.899467.7125 805.9365Clojure
Sanny Sanoff 223.6125 128.975 504.75 857.3375Java
Alex Pashkov222.7875116.1499552890.9374Haskell
kerbal_nut 225.05 115.462499603.30943.8125Python


Похоже, наш победитель - Никита Белоглазов с решением на Clojure!
Если есть вопросы или лучшие идеи по оценке решений, еще не поздно тут обсудить.
Я думаю, окончательные результаты опубликует у себя хозяин конкурса ФП(ФП) [livejournal.com profile] _darkus_.

Финальный сабмишен

Date: 2013-10-13 07:02 pm (UTC)
From: [identity profile] kerbal-nut.livejournal.com
Mun
225.05 7001.99753996
[
    {
        "fuel": "FL-T200 Fuel Tank", 
        "engine": "LV-T30 Liquid Fuel Engine", 
        "central": true, 
        "numSideParts": 2, 
        "numEngines": 1, 
        "height": 3
    }, 
    {
        "fuel": "FL-T800 Fuel Tank", 
        "engine": "LV-T30 Liquid Fuel Engine", 
        "central": true, 
        "numSideParts": 6, 
        "numEngines": 7, 
        "height": 2
    }, 
    {
        "fuel": "Rockomax X200-32 Fuel Tank", 
        "engine": "Rockomax \"Skipper\" Liquid Engine", 
        "central": true, 
        "numSideParts": 4, 
        "numEngines": 5, 
        "height": 1
    }, 
    {
        "fuel": "FL-T200 Fuel Tank", 
        "engine": "Rockomax \"Mainsail\" Liquid Engine", 
        "central": true, 
        "numSideParts": 2, 
        "numEngines": 3, 
        "height": 1
    }
]

Kerbol
115.4625 12015.2296636
[
    {
        "fuel": "FL-T400 Fuel Tank", 
        "engine": "LV-N Atomic Rocket Engine", 
        "central": true, 
        "numSideParts": 0, 
        "numEngines": 1, 
        "height": 3
    }, 
    {
        "fuel": "FL-T400 Fuel Tank", 
        "engine": "LV-T30 Liquid Fuel Engine", 
        "central": false, 
        "numSideParts": 2, 
        "numEngines": 2, 
        "height": 3
    }, 
    {
        "fuel": "Rockomax X200-16 Fuel Tank", 
        "engine": "LV-T30 Liquid Fuel Engine", 
        "central": true, 
        "numSideParts": 6, 
        "numEngines": 7, 
        "height": 1
    }, 
    {
        "fuel": "FL-T100 Fuel Tank", 
        "engine": "Rockomax \"Skipper\" Liquid Engine", 
        "central": true, 
        "numSideParts": 2, 
        "numEngines": 3, 
        "height": 3
    }
]

Moho
603.3 10504.0617543
[
    {
        "fuel": "FL-T800 Fuel Tank", 
        "engine": "LV-N Atomic Rocket Engine", 
        "central": true, 
        "numSideParts": 2, 
        "numEngines": 3, 
        "height": 1
    }, 
    {
        "fuel": "FL-T400 Fuel Tank", 
        "engine": "LV-N Atomic Rocket Engine", 
        "central": true, 
        "numSideParts": 4, 
        "numEngines": 5, 
        "height": 1
    }, 
    {
        "fuel": "Rockomax Jumbo-64 Fuel Tank", 
        "engine": "Rockomax \"Mainsail\" Liquid Engine", 
        "central": true, 
        "numSideParts": 2, 
        "numEngines": 3, 
        "height": 2
    }, 
    {
        "fuel": "Rockomax Jumbo-64 Fuel Tank", 
        "engine": "Rockomax \"Mainsail\" Liquid Engine", 
        "central": true, 
        "numSideParts": 4, 
        "numEngines": 5, 
        "height": 1
    }, 
    {
        "fuel": "FL-T800 Fuel Tank", 
        "engine": "Rockomax \"Mainsail\" Liquid Engine", 
        "central": true, 
        "numSideParts": 6, 
        "numEngines": 7, 
        "height": 2
    }
]


В предположении что тороидалный двигатель в центральной части действительно не нужен и что моя программа правильна, Laythe решений не имеет.

https://github.com/Vlad-Shcherbina/kerbal/blob/23fa93a496b05c4f1f54b59be87c69c572389e03/production/solve_all.sh

Для получения данных конструкций солвер запускался в два процесса с ограничением в 110с.

Первые три миссии я ещё попробую ради интереса запустить ночью в большое число процессов и с большим таймлимитом.

Re: Финальный сабмишен

Date: 2013-10-14 08:33 am (UTC)
From: [identity profile] kerbal-nut.livejournal.com
В моей программе есть ошибки, потому что исчерпывающий, по замыслу, перебор не смог найти Kerbol с массой 112.2125 и Moho с массой 467.7125.

Но вот зато решение для Mun:
222.725 7001.34188801
[
    {
        "fuel": "FL-T200 Fuel Tank", 
        "engine": "LV-T30 Liquid Fuel Engine", 
        "central": true, 
        "numSideParts": 6, 
        "numEngines": 1, 
        "height": 1
    }, 
    {
        "fuel": "FL-T400 Fuel Tank", 
        "engine": "LV-T30 Liquid Fuel Engine", 
        "central": true, 
        "numSideParts": 3, 
        "numEngines": 4, 
        "height": 3
    }, 
    {
        "fuel": "Rockomax Jumbo-64 Fuel Tank", 
        "engine": "Rockomax \"Mainsail\" Liquid Engine", 
        "central": true, 
        "numSideParts": 0, 
        "numEngines": 1, 
        "height": 1
    }, 
    {
        "fuel": "Rockomax Jumbo-64 Fuel Tank", 
        "engine": "Rockomax \"Mainsail\" Liquid Engine", 
        "central": false, 
        "numSideParts": 2, 
        "numEngines": 2, 
        "height": 1
    }, 
    {
        "fuel": "FL-T800 Fuel Tank", 
        "engine": "Rockomax \"Mainsail\" Liquid Engine", 
        "central": true, 
        "numSideParts": 2, 
        "numEngines": 3, 
        "height": 2
    }
]
it took 14797.9s

Re: Финальный сабмишен

Date: 2013-10-14 08:51 am (UTC)
From: [identity profile] thedeemon.livejournal.com
Круто! Похоже на оптимум. Надо будет построить и запустить.

Profile

thedeemon: (Default)
Dmitry Popov

December 2025

S M T W T F S
 12 3456
789101112 13
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 31st, 2026 05:14 am
Powered by Dreamwidth Studios