Войти
ПроектыФорумКонкурсы

Управление роботом. Миниконкурс. (4 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 1 2 3 4 5 6 7 Следующая »
#45
1:58, 3 янв. 2012

чем-то напоминает defrag
42495

#46
2:32, 3 янв. 2012

susageP
> вот robot.dll тут не надо лучше уж передать ей сам указатель на функцию RTICK
мне не принципиально. если использовать robot.dll, то его же можно подсовывать визуализатору в целях единообразия, хотя да, указатель передавать быстрее.

> и если это не секрет может проще открыть логику расчета физики так проще будет
> обучать сеть особенно если на куде обучение
думаю, так как раз интерес пропадёт. интереснее управлять то, внутренности чего тебе принципиально неизвестны.
Но вот создавать процесс, и делать кучу других плохих вещей, чтобы лишь узнать текущий результат - имхо, зло:

  float Evaluate(float *controls)
  {
    //doing something with controls
    PROCESS_INFORMATION procInfo;
    STARTUPINFOW startInfo = { 0 };
    startInfo.cb = sizeof(startInfo);

    CreateProcess(TEXT("RCheck.exe"), 0, 0, 0, 0, 0, 0, 0, &startInfo, &procInfo);
    WaitForInputIdle(procInfo.hProcess, 100000);

    wchar_t className[1024];
    HWND hWnd = 0;
    hWnd = FindWindow(TEXT("ThunderRT6FormDC"), 0);

    wchar_t wndText[1024];
    int val = 0;
    do
    {
      GetWindowText(hWnd, wndText, 1024);
      Sleep(10);
    }while(swscanf_s(wndText, TEXT("%d"), &val) != 1);
    
    while(!TerminateProcess(procInfo.hProcess, 0));
    return float(val);
  }

#47
3:56, 3 янв. 2012

Классный конкурс, мне нравится, хочу учавствовать, но может быть сделать версию и под линукс?)

#48
3:58, 3 янв. 2012

Suslik
> думаю, так как раз интерес пропадёт. интереснее управлять то, внутренности чего
> тебе принципиально неизвестны.
но для обучения сети неудобно.
на худой конец нужно 2 метода.
void start( int count,robot* arra)  - запустить count- количество роботов, и получить начальное состояние роботов. повторный вызов уделяет предыдущих роботов и создает новых.
void tick(robot* array)  - посчитать итерацию для всех роботов, и получить текущее состояние роботов.

тогда можно будет на GPU считать сразу 1к сетей и вызывать 1 раз физику сразу для всех сетей. ( передача между гпу и спу будет минимальна ).

#49
8:25, 3 янв. 2012

Я, если честно, пока не вижу алгоритма достаточно перспективного для того, чтобы бежать перекладывать на GPU. К тому же никто тебе не мешает обучить робота оффлайн и потом зашить параметры уже обученного в robot.dll.

Вносить изменения, как по мне, нужно лишь те, что могут позволить применить более сильные адаптивные алгоритмы(вместо хардкода), а для этого нужно ввести функцию Evaluate(Robot *initPos, float time, FuncPtr controlFunc) - считает, на сколько сместится робот через время time из начального состояния initPos, используя функцию контроля controlFunc(как раз ту, что мы зашиваем в длл).

#50
10:00, 3 янв. 2012

Если я вам дам dll вместо exe, вы зашьёте её в свою dll и будете методом перебора выбирать лучший вариант :)
Ещё можно поставить на сутки программу искать лучшие варианты, зашить в dll готовые ответы и только воспроизводить их.
На GcUp.ru добились результата 43595.

#51
10:15, 3 янв. 2012

Можно ссылку на длл?

#52
10:35, 3 янв. 2012

Mikle
> Ещё можно поставить на сутки программу искать лучшие варианты
...как?

#53
10:57, 3 янв. 2012

Suslik
> > Ещё можно поставить на сутки программу искать лучшие варианты
> ...как?
Генетический алгоритм

#54
11:14, 3 янв. 2012

Suslik
> ...как?
Если dll будет выдавать позицию после N ходов, то достаточно хоть рэндомно просчитать оптимальные моменты для прыжков, в полёте робот всё равно не управляем. В полёте можно, разве что, вместо того, чтобы лететь "сжавшись", накапливать энергию, раскачивая пружину, чтобы при приземлении сильнее оттолкнуться. Это уже сложнее для рэндома, но кто помешает сделать визуальный редактор и вводить данные вручную? Ходов то всего 3600.
Вообще, этот конкурс привёл к мысли, что в следующем нужно вводить обязательный элемент рэндома (ветер, к примеру), чтобы исключить возможность таких читов.

#55
11:40, 3 янв. 2012

Volodar
> Можно ссылку на длл?
http://gcup.ru/go?http://rghost.ru/35714315

#56
15:27, 3 янв. 2012

leonidov2014
> Генетический алгоритм
вперёд, реализуй.

#57
15:33, 3 янв. 2012

Mikle
> Вообще, этот конкурс привёл к мысли, что в следующем нужно вводить обязательный элемент рэндома (ветер, к примеру), чтобы исключить возможность таких читов.
вообще говоря, я не вижу, чем ручная подгонка хардкодного алгоритма принципиально лучше оффлайн генерации параметров и почему первое в этом конкурсе поощряется а второе - нет.

если вводить элемент рандома, и не дать возможность узнавать, что будет спустя небольшой отрезок времени(вместо расчёта всего временного интервала), то тут 100% придётся писать хардкод-алгоритм, что, по крайней мере по мне, интереса уже не представляет.

#58
16:35, 3 янв. 2012

Mikle
> Volodar
> > Можно ссылку на длл?

Хм. Алгоритм как и мой, судя по поведению робота. Немного другие коэффициенты, судя по всему отталкивания. Писижу, подумаю

Mikle
> Вообще, этот конкурс привёл к мысли, что в следующем нужно вводить обязательный
> элемент рэндома (ветер, к примеру), чтобы исключить возможность таких читов.

Думаю неплохо было бы внести эргономичность. Ограниченное количество энергии, которое можно потратить на толкание/сжимание робота.

#59
18:54, 3 янв. 2012

Apati с GcUp сделал 47852:
http://gcup.ru/go?http://rghost.ru/35723396
Оригинальный приём с перестроением в воздухе, если видит, что приземление будет неудачным.
Suslik
> вообще говоря, я не вижу, чем ручная подгонка хардкодного алгоритма
> принципиально лучше оффлайн генерации параметров и почему первое в этом
> конкурсе поощряется а второе - нет.
В ЭТОМ никаких ограничений. Я беспокоюсь не за то, что вручную будут корректировать алгоритм, а за то, что вместо алгоритма можно будет просто прописать 3600 коэффициентов.
Я бы хотел, если и вводить рэндом, то очень небольшой, чтобы чисто физическим методом строить прогноз было возможно, но не сильно на много ходов.
Так же, как просчитывая физику реального механизма, ты всегда имеешь допуск на погрешность.
Volodar
> Думаю неплохо было бы внести эргономичность. Ограниченное количество энергии,
> которое можно потратить на толкание/сжимание робота.
Например пройти расстояние 10000, минимально потратив энергию? Мне было бы интересно, но боюсь, что эта задача далеко не такая наглядная, она требует понимания физики, и у конкурса будет меньше участников.

Страницы: 1 2 3 4 5 6 7 Следующая »
ПроектыФорумКонкурсы

Тема в архиве.