Chat:Ru/2020-09-06
QuantumQQ: после золотой лиги еще что-то есть?
gsomix: QuantumQQ, легендарная. Она без босса.
QuantumQQ: в гоночках 9ый сча, без щитов и без защитника, тупа на скорости и дрифте.
QuantumQQ: дальше прямо кодить надо, лень:)
MadKnight: QuantumQQ я даже скорость не менял, чисто на дрифте и изменении координаты target вышел в легу
QuantumQQ: Так я о том же, но дрифт у тебе похоже по лучше :))
MadKnight: QuantumQQ я ещё прикидываю возьму ли я чек если начну ехать к след чеку + я еду чуть вбок чтобы начать дрифтовать раньше
QuantumQQ: сча щиты допишу, и попробую :))
MadKnight: мне ещё большой буст в ranks дало BOOST одной из машинок в первый ход
QuantumQQ: это сразу сделал, иначе толкались друг с другом
QuantumQQ: о! с щитами на 4ое пригнул, немного осталось :)
MadKnight: последние несколько мест - самые трудные
QuantumQQ: посмотрел гонки на легендарном... это тут у нас детский сад штаны на лямках :)
vrabosh: как красиво константы обьявлять в питоне?
vrabosh: большие буквы мне чтото не нравятся.. с_dsfd тоже чтото не то..
vrabosh: ash_Move - может так? кточто_Чтоделать... если после подчера большая буква то это константа
BorisZ: не надо тратить мысленную энергию, есть пеп8, там сказано константы заглавными буквами, всем кто читает будет понятно что константа
BorisZ: и тебе самому в том числе
vrabosh: константа самый важный элемент в коде? когда ямотрю в код она первым делом бросается в глаза потомучто большая
BorisZ: не знаю, не возьмусь судить что важное (
vrabosh: пеп8 это лучее дизайнерское решение или это просто правила для программистов чтобы другим было удобней читать?
ilgiocatore: она должна бросаться в глаза, но не из-за того, что она "важнее", а чтобы визуально её отличить от других переменных
vrabosh: вот чита код и оно всегда бросается в глаза..
BorisZ: не думай говорю ж, есть гайдлайн, следуй ему и все, через пару дней привыкнешь, человек ко всему привыкает )
vrabosh: но отличить надо что это конст или нет. поэтмоу и думаю как лучше..
vrabosh: есть другие дизайнерские решеия кроме пеп8?
vrabosh: мне там не все нравится.. хотя я его досконально не изучил
vrabosh: а так половина что описывают они, я и до этого использовал.. сам пришел к этому
735487: лучше использовать что то стандартное потому что если пойдешь куда то работать то полюбому прийдется соблюдать принятые там гайдлайны
BorisZ: наверное есть, может быть в крпных конторах каких-то, хз, но думаю что процентов 95 - либо пеп8 либо что-то на его основе
vrabosh: когда работаешь на когото, непроблема их правила соблюдать.. там обучно тебе дают код.. и я делю так как до меня прогер делал без своего
vrabosh: работа это работа, творчество это творчетсво
BorisZ: просто когда его придумывали то тысячу умных людей сломали миллион копий и что-то родили, наверное у них есть основания для этого
BorisZ: надо использовать их работу, тем более говорю ж - через пару дней привыкнешь хоть к чему
BorisZ: у меня стоит автоворматирование в редакторе - black, он все делает по пеп8 сам, ну кроме имен, но там есть какие-то нюансы в переносах - не вникал даже
BorisZ: установил расширение - и все, оно само парится про пробелы, отступы и прочую фигню, не надо голову забивать
vrabosh: есть функция готовая в питоне фибоначи?
BorisZ: я не знаю, погугли, но вроде самому просто сделать массив заранее, да и быстрее наверное
BorisZ: там максимум вроде 30 яомби или около того на одной карте
vrabosh: как расчитвается координата где зомби будет на след ход?
vrabosh: а то я только знаю формулу расчета растаяния)
gsomix: vrabosh, а в чем вопрос?
> Each turn, every zombie will target the closest human, including Ash, and step 400 units towards them.
vrabosh: как узнать координата какая будет на след ход?
vrabosh: Есть точка A(x,y) и точка B(x,y) на ней лежит точка С(x,y) известно растояние между B и С как узнать C(x,y), точки А и Б известны
gsomix: vrabosh, прибавляй вектор направления до ближайшего человека помноженный на 400.
vrabosh: как эти векторы прибавлять?)
gsomix: Покомпонентно. :)
x += directionToHumanX*400 y += directionToHumanY*400
gsomix: Вектор направления должен быть единичным.
gsomix: *единичной длины
gsomix: Нужно только еще посмотреть, что там с округлениями.
vrabosh: я думаю не так просто
gsomix: vrabosh, подожди, если у тебя есть собственный вариант, то зачем спрашивать? :)
vrabosh: вот я на бумажки проделал, не работает.. не туда он станет
gsomix: Ты бы показал, что делал тогда.
vrabosh: А(0,0) Б(4,8) клеток на бумажке
vrabosh: растояние от А до Б - 5клеток.. по формуле которую я знаю, как растояние определять
vrabosh: значит путь от а до б = 5
vrabosh: упс тупанул..
vrabosh: или нет.. полуается 5 по икс прибавля, и по y тогда он будет в точки (5.5)
vrabosh: лан пойду сам разбиратся
gsomix: А причем здесь клетки? У тебя пространство непрерывное с евклидовым расстоянием.
gsomix: Плюс округления.
gsomix: Расстояние от точки А(0, 0) до Б(4, 8) равно 4*sqrt(5)/
gsomix: Блин, глупые смайлы. :)
gsomix: Такие вещи удобнее в дискорде.
ilgiocatore: sqrt((x1 - x2)^2 + (y1 - y2)^2)
vrabosh: gsomix как узнать чему равно направление хумана?
vrabosh: это его родные точки? х и y?
gsomix: vrabosh, вектор направления от зомби до человека?
gsomix: Если зомби в точке A(x1, y1), а человек в точке B(x2, y2), то направление:
D(x2 - x1 / distAB, y2 - y1 / distAB)
vrabosh: кароче надо геометрию смотреть.. до 9класса, а то я чувствую я не те вопросы здаю
gsomix: distAB -- расстояние от зомби до человека.
gsomix: В этом случае направление будет вектором единичной длины.
vrabosh: вот еслиб ты полностью формулу дал.. с перемеными.. что куда мне вставлять
gsomix: vrabosh, это непедагогично. :)
gsomix: Тут же цель научиться чем-нибудь. Да и других игр много, без векторов и непрерывного пространства.
ilgiocatore: чтобы посчитать следующую точку зомби вообще не нужно знать расстояние между зомби и человеком
ilgiocatore: ну точнее не нужно хранить это расстояние)
vrabosh: ilgiocatore можешь подсказать формулу?
YurkovAS: а что там с зомби? как не нужно знать расстояние
vrabosh: вот х,y чела известно, x,y зомби, он идет к чему на 400 единиц
vrabosh: посто чему след х и y будет равен и я понду дальше делать ГА)
vrabosh: а то придется на неделю уйти в геометрию
YurkovAS: он идет к ближайшему челу или к играку
gsomix: vrabosh, а ты куда-то торопишься? :)
gsomix: Возьми игру без геометрии и делай ГА.
vrabosh: какую? это вроде самая простая
vrabosh: в других задействованы другие игроки
ilgiocatore: http://chat.codingame.com/pastebin/2d669627-51b4-4f7b-9a3a-2ecc5f3bf0bd
vrabosh: ilgiocatore спасбо хороший человек)
vrabosh: интересно. а сократить эту формулу можно?)
BorisZ: только надо еще учесть, что если до человека меньше 400 точек, то зомби только до человека доходит
YurkovAS: можно - ни чего не делать)
BorisZ: дальше не проскакивает, надо проверять сначала расстояние
BorisZ: If the zombie is less than 400 units away, the human is killed and the zombie moves onto their coordinate.
gsomix: ilgiocatore, подожди, тебя сейчас еще код попросят написать. :)
ilgiocatore: gsomix да я просто объединил в одно сообщение то, что ты выше писал
vrabosh: определение растояние дорогоая штука
vrabosh: всетаки надо изучать геометрию, чтоб я мог оптимизацию делать
YurkovAS: для меня там сложная симуляция - до сих пор глючит иногда.
gsomix: vrabosh, для этого не надо изучать геометрию. Можно один раз посчитать расстояние от человека до зомби, а потом вычитать из него пройденное расстояние за ход.
gsomix: YurkovAS, округления?
YurkovAS: да, x, y, nx, ny глячат иногда в тестах. и при сабмите тоже падает (или убивают хз)
vrabosh: gsomix это да, но когда он за мной бежать будет.. тогда пересчет надо делать
gsomix: vrabosh, конечно.
gsomix: А, ну все равно определять ближайших. :)
gsomix: Можно какое-нибудь разбиение пространства сделать, если это имеет хоть какой-то смысл в этой задаче.
BorisZ: можно запоминать ближайшего хумана для каждого зомби, а потом сравнивать только до Эша расстояние
YurkovAS: BorisZ +, так же сделано
BorisZ: и пересчитывать только когда хуман умер
BorisZ: можно наверное доже все точки пути хранить до ближайшего
BorisZ: есть простор для оптимизаций короче)
gsomix: Угу, но я бы начал с бенчмарков. Это может быть не самым узкий местом. :)
gsomix: YurkovAS, BorisZ, а у вас ГА на этой задаче? Или какой-то другой алгоритм поиска?
BorisZ: если оптимизация простая то может быть быстрее ее запилить и сравнить - увеличилось количество сим или нет
BorisZ: у меня просто ГА, причем ничего не оптимизировано кроме кеша зомби-ближайший хуман
YurkovAS: gsomix у меня МС, с ГА на 8 ходов + 8 ходов евристикой было на 120к меньше.
YurkovAS: vrabosh игру попроще для ГА, можно еще эту глянуть https://www.codingame.com/ide/puzzle/search-race
YurkovAS: простой аналог гоночек. для меня было просто, но уже делал гоночки до этого по статья магуса и готовым стартерам.
735487: YurkovAS: ты когда перестанешь ЭА называть ГА ))
YurkovAS: а как ЭА расшифровывается?
735487: эволюционный алгоритм. это когда ты хранишь 1 лучший и его мутируешь
YurkovAS: спасибо
735487: ГА все таки чуток посложнее
YurkovAS: сейчас как раз экспериментирую с поколениями, в search-race. пока что хуже ЭА, но экспериментирую дальше.
735487: а я в серчрейс не могу научить залетать на всех порах на последний чек )) все время рулит к следующему типа ))
BorisZ: у мен есть подозрение что в ГА если непрерывное поле без препятствий, то скрещивание не дает профита никакого
YurkovAS: а, ну у меня есть похожее улучшение
BorisZ: по крайней мере в паре игр уже делал и мутации и скрещивание, потом мутации выкидывал, без них лучше была
BorisZ: может и пул тоже не нужен, достаточно одной хромосомы, то что amurushkin говорит что это ЭА
BorisZ: правильно я понял ведь amurushkin? ЭА - одна хромосома и только мутации?
YurkovAS: BorisZ а ты выводил все эти поколения? вывел и очень удивился.
735487: BorisZ: только не хромосома одна а кандидат один. хромосомы это же действия
vrabosh: а как называется когда я сенсоры настраиваю или логику какую придумываю и под нее уже подбираю коэфициенты?
BorisZ: YurkovAS финальный счет выводил, у каждого нового максимума - это делал
BorisZ: а точки все равно нечитаемы, чего их выводить )
BorisZ: там помню что меня удивило что решение почти всегда находится очень рано, допустив 20к сим, а максимум уже на 1 тыс, остальное в молоко
BorisZ: не всегда конечно, но очень часто
735487: попробуй делать больше мутаций
BorisZ: логично блин, как я сам не додумался )
BorisZ: как-то можно сделать переменное число, сначала по 1, потом если долго нет улучшений то увеличивать
vrabosh: а кстат, вы говорили про то, что можно без растояния к челу узнавать координат. как это? запишу сразу.. а то понял, это часто буду применять.
vrabosh: мне кажется тут формула попроще для питона будет.. этож я вначале узнал угол куда он идет, сохранил его и потом чтото перемножаю и получаю координаты. а угол то не изменяется пока не подойду к этому зомби., а сколько шагов ему до чела, я заранее вычислю
BorisZ: с переменным количеством мутаций с 260к до 350к поднялся, amurushkin - голова)
YurkovAS: :thumbsup:
YurkovAS: BorisZ у тебя на ограниченное кол-во ходов ГА?
735487: мне когда то это тоже подсказали ))
BorisZ: на 26 сейчас
YurkovAS: понял, спасибо!
BorisZ: прикинул что за столько 17 тест должен проходиться, где больше всего зомби
YurkovAS: в search-race все поколения становятся одинаковыми. добавление уникальности улучшает результат
YurkovAS: Hoard - да, за него можно набрать 287520 у меня в тестах набирает, а при сабмите нет
BorisZ: у меня 100 с копейками только (
YurkovAS: как-то разок при сабмите набрал 280к, но упал на другом. общий скор был 420к
YurkovAS: вот и думаю, что га должен быть лучше
BorisZ: медленная сима, давно писал, она на векторах, да и вобще много что можно улучшить сейчас
BorisZ: тоже стали тесты падать постоянно, с 1 мутацией всегда 100% было
vrabosh: блин, всетаки мне надо знать как по вектору вычислять координаты.. да и вообще поинмать как с векторами работать
BorisZ: для зомби не обязательно векторы, тут нет скорости и инерции, можно просто манипуляциями с точками
vrabosh: Ясенем лучше по направлению сходить на 1000 шагов, и потом координаты его вычислить
vrabosh: чем рандомно кидаться координатами.. или хз.. наверно разницы нет
BorisZ: кидали же формулу тут как посчитать если из а в б идешь но можешь за ход пройти только на расстояние фиксированное
vrabosh: два раза приходится считать
vrabosh: дорого
BorisZ: два раза что считать?
vrabosh: у меня есть коорд Ясеня 0,0 я хочу на 10 градусов вперед походить, на 1000 метров, как узнать координаты?
BorisZ: ну если через градусы то косинус это икс а синус это игрек
BorisZ: умноженное на длину
BorisZ: x = cos(10) * 1000; y = sin(10) * 1000
BorisZ: это если ты в качестве хода выбираешь именно угол и длину - полярные координаты то есть
vrabosh: да тебе в преподы надо идти, почему это не кто не говорит)
vrabosh: я с этими знаниями могу уже в гоночи идти)
BorisZ: у меня в качестве случайной цели просто точка в квадрате с центром где эш стоит
BorisZ: сторона квадрата = длина хода * 2
BorisZ: мне так проще показалось, но можешь попробовать и с углом
YurkovAS: http://chat.codingame.com/pastebin/996c4cf5-7abd-48b4-ba1d-60b4176d2d8f
vrabosh: хотя не сходится math.cos(45)*2.83, (2**2+2**2)**0.5 - вот проверил на теорем пифагора
vrabosh: ксинус должен давать 2 ответ
YurkovAS: надо градусы переводить в радианы
vrabosh: YurkovAS а почему ты не большими буквами константы обзываешь?) спасиб..
YurkovAS: да это же не важно, когда как их обзываю
vrabosh: просто недавно дискусировали, в пеп8 большими.. а я вот думаю как мне обзывать
YurkovAS: чем мне нравится КГ - можно гавнокодить как душе угодно :smile:
vrabosh: думаю первая буква мал_Большая
vrabosh: так точка в квадрате если по диагонали может уйти за приделы 1000
YurkovAS: http://chat.codingame.com/pastebin/cf7a830d-38d6-4f07-8a02-275dbad17457
vrabosh: мне надо координата от хумана которая будет через 1000 метров
vrabosh: а хатя чо я парюсь, для начало можно просто сделать
vrabosh: (+-500 or 0,+-500 or 0) и будет норм
YurkovAS: это когда по прямой идет, а когда под углом - то тебе выше написали 2 способа: через угол и синусы или нижний.
vrabosh: всетаки по углам лучше ходиь
vrabosh: если я хочу ити на 2.2 то atan2(2,2)?
YurkovAS: atan2(dy, dx)
vrabosh: math.cos(math.atan2(2,2))*2 - не получается коорд 2.2 я с 0.0 иду
YurkovAS: dy - разница и в том порядке, как писал
vrabosh: ну вот я стою на 0 и хочу на 45 градусов сходить 1000
vrabosh: что куда писать?
YurkovAS: http://chat.codingame.com/pastebin/996c4cf5-7abd-48b4-ba1d-60b4176d2d8f
YurkovAS: за место h - подставь 2, 2 за место z - 0, 0 ну и скорость поменяй
YurkovAS: ну все правильно получается у тебя было
vrabosh: получается 1.41
vrabosh: а все прально. эт я все с клеточками туплю)
YurkovAS: все правильно получается. по диагонали же идет, так и будет
YurkovAS: если бы в 2, 0 - тогда по х=2, по у=0 т.к. скорость 2 не нарушится
vrabosh: впринципе потом углы можно атановые спрятать в массив..
YurkovAS: через углы заметно медленнее работает.
vrabosh: хз, у меня сама функция dsqr в 2 раза дольше..
YurkovAS: да, не понятно, из твоего примера с 0,0 и 2, 2 и скоростью 2 ожидаешь что будет координата 1, 1
vrabosh: норм все делает.. 1.4 должна быть
YurkovAS: но нет, если сделать прамоугольный треугольник с а=1 и б=1, то гипотенуза будет корень из 2-х. т.е. растояние меньше 2-ки
vrabosh: я щаз от вас формулы эти поузнаю. мне потом геометрию будет легче изучать. она прикольней изучать когда уже чтото знаешь и попробовал на практике
YurkovAS: ага, тоже все не могу себя заставить разобраться
vrabosh: если у меня получется сделать через ГА, да чтоб он простовыигрывал, я буду оч рад
vrabosh: я потихоньку учу, начал с 6 класса, уже 7 прошел.. потом как нить начну 8 класс
vrabosh: но самое интересное я смотрю на 9 класс отложили
vrabosh: впринципе мне кажется, тут олимпиадники 8 классов могут уже тащить в легенду.
YurkovAS: тоже так думаю, что если знать хорошо школьную программу, то будет проще тут задачки решать. да и не только тут
vrabosh: а подругому както можно это число узнать math.atan2 , не задавая координат?
vrabosh: просто тупо по градусу.
YurkovAS: atan2 и определяет градус между точками
vrabosh: 0.78 - вот это число 45 градусов
YurkovAS: угол между точками
vrabosh: как узнать какое число 1 градус?
vrabosh: мне для косинуса синуса
vrabosh: яж там не могу 45 или 1 подставлять
YurkovAS: а, как перевести из градусов в радианы
vrabosh: щаз загуглю)
YurkovAS: радианы = градусы * ПИ / 180 градусы = радианы * 180 / ПИ
vrabosh: во нашел, щаз небольшими шажками и буду шарить
vrabosh: сколько вы раз пытаетешь особей сделать, чтобы найти того, кто хотябы выиграет?
vrabosh: либо я гдето ошибку сделал, но на 5к рандомно с ходом на 1000 метров, 35 ходов, не один не побеждает
YurkovAS: ох, у меня такой статистики нет. поставь на первый ход 1сек задержку
vrabosh: ты рандомно каждый ход генеришь?
vrabosh: точнее полностью рандомно или какието правила есть?
vrabosh: типа он должен рандомно двигатся но чуть в сторону зомби или еще как нить
YurkovAS: странно, проверил, на карте Hoard находит первый выйгрыш с 3-4 попытки
YurkovAS: у меня сделано так: выбираем рандомный ход (9 ходов: по 45 град и стоять на месте) и т.д. пока партия не закончится: либо убили всех людей или убили всех зомби
YurkovAS: а счет как в игре, сохраняем лучший к себе
gsomix: Школьные знания могут помочь только симуляцию написать. :)
gsomix: Этого совсем недостаточно для легенды.
vrabosh: там где 2 зомби уже находит чтото
vrabosh: попробуй там где 1 зомби
YurkovAS: в Simple с ~450 раза
vrabosh: ты полностью рандомно ходишь? не направляешь его?
YurkovAS: нет
YurkovAS: полностью рандомно
735487: vrabosh: ты лучшую последовательность запоминаешь? ее мутируешь?
YurkovAS: какие есть эффективные алгоритмы скрещиваний поколений?
vrabosh: норм, тупану чуть в коде..
vrabosh: я еще пока не мутиру.. симуляцию пишу и создаю особей.. пока смотрю а этот код и понимаю, что он оч медлено будет работать.
Uljahn: а зачем поколений, если ты можешь топ лучших особей из предыдущего забирать целиком?
vrabosh: надо хотябы как нить сделать. а то хочется и скорость и сделать) и получается непонять что
vrabosh: пока просто рандомные ходы делаю..
gsomix: Я бы сначала делал понятную версию, а потом быструю. :)
vrabosh: и те которые выигрывают или не проигрывают за 20ходов, то их потом плонирую скрещивать
Uljahn: мутировать проще
YurkovAS: Uljahn разве не надо их скрешивать + мутировать?
YurkovAS: если не скрещивать, тогда держать топ лучших и уникальных?
YurkovAS: щас проверю
Uljahn: зависит от стратегии селекции
YurkovAS: рандомная селекция
Uljahn: есть элитистская стратегия и турнирная, там вроде возможен перенос без изменения
YurkovAS: это скрещивания? или селекция такая?
Uljahn: селекция
YurkovAS: надо наверное еще почитать. а то как-то не очень в общем. но я в гонках пытаюсь ЭА обогнать. совсем небольшой прирост получился и то при 100 поколениях
Uljahn: минус переноса в том, что га может застрять в локальном оптимуме
YurkovAS: ну они очень быстро становятся одинаковыми. пришлось сделать уникальными по скору
vrabosh: ух ты 5к особей по 35 ходов делает..
735487: вроде бы обычно берут лучших. их часть мутируют а часть скрещивают. и нетронутых тоже оставляют. можно еще добавить часть рандомом. и из них опять выбирать лучших
BorisZ: YurkovAS чет мне кажется что 9 точек это радикально слишком, он у тебя получается ходит только по узлам сильно разряженной сетки
BorisZ: даже на пальцах можно прикинуть - надо попасть примерно в точку на расстоянии полтора хода, ты никак туда не шагнешь таким макаром
YurkovAS: BorisZ возможно. ну за 3 хода же?
BorisZ: может поздно будет уже )
735487: а сильно много действий есть шанс не найти решение
BorisZ: то есть какая-то часть хороших решений в принципе ненаходима тогда
YurkovAS: BorisZ 465к :thumbsup:
735487: YurkovAS: вот тебе еще новый вид мутации. добавляй к координатам +-число
735487: может покроет случаи о которых Борис говорит
YurkovAS: и скорости еще менять. еще раз потом поиграюсь с углами и скоростями
BorisZ: ему же можно в качестве цели вообще любую точку давать, хоть на другом конце поля
735487: какие скорости?
YurkovAS: скорость чела - стрелка.
735487: а там есть такое?
YurkovAS: да
YurkovAS: ну или не скорость, он же ходит на макс расстояние. можно короче пройти, там максимальное ограничение
Uljahn: Automaton2000: если скорость есть, то можно запилить -3Vel
Automaton2000: ну а что ты хочешь
gsomix: Automaton2000, если есть скорость, то можно проинтегрировать!
Automaton2000: вот с этого и надо было начинать
gsomix: Заметил интересный эффект. Чем больше читаю, как кто-то решает задачу, тем меньше хочется ее решать.
gsomix: Надо идти спать. Доброй ночи. :)
tutubalin: А если читаешь, как кто-то не может решить задачу?
gsomix: tutubalin, думаешь, эффект будет обратный? Нужно провести эксперимент. :upside_down:
vrabosh: ~10 - 15% выигрышных особей.. с них это гдето под 20 будет. с них можно чтото найти будет? тольковое?
vrabosh: это я пока на 2 зомби проверил
vrabosh: пока до полного рабочего сотояния даже без ГА доведу, чекнуть
vrabosh: 1% ошибся
BorisZ: vrabosh я бы на твоем месте не заморачивался с пока с ГА и с особями, надо симу отладить на простом случайном поиске или эволюционном как амурушкин говорил
vrabosh: что значит эволюционым?
735487: одно решение и его мутируешь рандомно
735487: оставляешь если получилось лучше
YurkovAS: BorisZ у тебя в ГА есть скрещивания и селекции по формулам (не рандом)?
vrabosh: а понял, т.е. свое решение делаю рандомно?
735487: еще раз в 50 итераций можно полный рандом еще добавлять
vrabosh: я пока хочу чистый рандом сделать
BorisZ: YurkovAS скрещивание есть, но я его отключил, с ним заметно хуже работает
vrabosh: потом когда буду ГА делать, одно решение свое буду кидать.. которое сейчас.
735487: чистый рандом не найдет. нужно лучшее решение пытаться еще улучшить тем же рандомом
vrabosh: и вот как раз свое решение буду улучшать другими хоть както рабочими
BorisZ: http://chat.codingame.com/pastebin/02a0e35e-cf5c-4889-88e2-9b4342353d93
BorisZ: примерно так эволюционный если я правильно понял
YurkovAS: BorisZ у меня тоже без скрешиваний стало лучше. селекция пока рандомная лучше.
vrabosh: тогда как вы обычным способом ищите?
Uljahn: что за обычный способ?
vrabosh: я вроде так делал, искал растояние аша до ближайшенго хумана + растояние шарера до ближайшего зомби.. и минимальное растояние и щел к этому зомби
Uljahn: я составлял список людей, которых точно успеваю спасти, и шёл к ближайшему, вроде
Uljahn: ещё читал, что лучше идти не к хуману, а к середине расстояния между ним и ближайшим зомби
vrabosh: ну вот у меня примерно также.. мы с тобой на одних местах
Uljahn: вообще, на питоне все эти MC, ГА и ЭА онлайн мало смысла имеют, не хватит времени для сходимости
vrabosh: может есть из стандартного, чтото получще?
vrabosh: да тут просто хотябы научитсья делать
vrabosh: если я на питоне не смогу сделать, то на Си подавно
Uljahn: на питоне может не найти ни одного решения, а на плюсах найдёт десяток
Uljahn: из-за разницы в производительности
Uljahn: так же и MCTS на питоне даёт очень неточные оценки, так как роллаутов мало
Uljahn: если хочешь учить, то лучше в офлайне
vrabosh: ну хотябы у себя на компе я могу провить
Uljahn: да
vrabosh: ну вот.. яж чисто чтобы изучить. сделать.. а там глядишь и мотивация появится на Си переписать
Uljahn: никто тебе не сможет запретить попробовать изучить или написать прогу :)
735487: BorisZ: примерно только только я например мутирую всегда лучший заново
BorisZ: amurushkin да, это я не правильно написал - надо bestSteps передавать всегда в функцию
vrabosh: вот я 50к вариантов запстил на 2 зомби у себя в оф, нашло 2к выигрышных... и не одного максимального по очкам.. либо возмжно я опять гдето тупанул с просчетами
735487: не надо искать наверное прямо до конца. ищи N глубину. у тебя каждый ход заново можно считать
BorisZ: YurkovAS а селекция у меня 1 лучшая + сколько-то случайных
tutubalin: vrabosh что значит ни одного максимального по очкам?
BorisZ: нашел лучшую, своп с 1 местом, хвост удалил
YurkovAS: BorisZ рандомно из top N лучших?
YurkovAS: только с 1 местом чтоли сравниваешь? а если в середину или любое другое место?
BorisZ: не то чтоб рандомно, какие будут на позициях с 2 и до отсечки такие и останутся
BorisZ: неправильно наверное это (
BorisZ: нагенерил пул, допустим 5 штук, потом добавил 5 мутаций каждой - получилось 10, потом посчитал, лучшую поставил в начало, последние 5 удалил
BorisZ: они там по ходу и будут висеть дофига времени, надо случайные брать или еще как-то хз
YurkovAS: о, у меня по другому беру одну их пула, мутирую и если норм, вставляю на новое место, остальные сдвигаю.
YurkovAS: ну в общем, прогресс есть, улучшил машинку.
YurkovAS: смог обогнать ЭА
vrabosh: идея пришла
vrabosh: можно вручную на тестах лучшие варианты раставить. и их уже рандомить для сабмина
vrabosh: т.е. +- вектора координаты не сильно менять.
vrabosh: tutubalin ну вот на вором тесте можно получить 50 очков, а мои рандомные ходы 20 получают
Uljahn: в офлайне?
vrabosh: da
Uljahn: у тебя полный рандом или дискретные ходы? времени сколько даёшь?
vrabosh: 500 те которые выигрвыают и еще 1500 которые не проиграли за 20ходов.
vrabosh: 50к особей на 20 ходов
vrabosh: надо будет сейча перевести это в игру, посмотреть как оно в реале выглядит
vrabosh: ух ты, даже тупо с глючным рандомом рейтинг поднялся чуть.
vrabosh: там где дофига зомби, он вообще успел сделать 40 особей по 20 ходов.
vrabosh: на питоне как я понял, надо разные гипотезы делать, а потом их еще поскрещивать и мутации добавить, тогда может чтото получится.. а на чистый рандом не везде можно расчитывать.