Comments 22
Спрячьте пожалуйста статью под кат. Спасибо за внимание.
Почему? И что такое кат?
Прочитали бы всё-таки правила публикации — не задавали бы таких вопросов.
Большие посты обчно помещаются под habracut (есть такой специальный тег, который вы можете использовать в своей статье что бы спрятать бОльшую часть статьи под кнопкой «Читать дальше»). В результате в списке постов будет видно только начало вашего поста, а кто заинтересуется — тот нажмет кнопку «Читать дальше» и прочитает весь пост.
А что неверно — поправьте, буду умнее в следующий раз (на ум приходят только пару :)
А еще есть такая кнопка «Ответить» под каждым комментарием — пожалуйста пользуйтесь ею что бы ответить кому-то конкретно. Читать комментарии «в один столбик» — глаза вылазят.
Поставил тег после примерно 300-50 символов, нормально сейчас?
Норм.
Вроде бы да, так лучше, спасибо.
Спасибо за совет
Ок, продолжаем ликбез.
Для простого «спасибо» достаточно плюсануть комментарий, нажав на «стрелочку вверх» в его правой части.
Если вам такой способ кажется недостаточно выразительным, можно изложить всю свою признательность хабраюзеру, отправив ему личное сообщение.
Суть в том, что комментарии типа «спасибо» не несут полезного содержания для остальных читателей Хабра.
Чтобы отправить личное сообщение хабраюзеру, нужно открыть страницу профиля адресата (нажав на его имя или юзерпик, которые являются ссылками), и найти на этой странице иконку с конвертом (располагается справа от чисел рейтинга).
Для простого «спасибо» достаточно плюсануть комментарий, нажав на «стрелочку вверх» в его правой части.
Если вам такой способ кажется недостаточно выразительным, можно изложить всю свою признательность хабраюзеру, отправив ему личное сообщение.
Суть в том, что комментарии типа «спасибо» не несут полезного содержания для остальных читателей Хабра.
Чтобы отправить личное сообщение хабраюзеру, нужно открыть страницу профиля адресата (нажав на его имя или юзерпик, которые являются ссылками), и найти на этой странице иконку с конвертом (располагается справа от чисел рейтинга).
:) — выложил материал чисто чтобы кому-то было полезно, а всякуя по-ь выслушивать, ну блин вообще неинтересно
Простите, конечно, но это называется неуважением. Вам не пое-ь говорят, а излагают правила сайта, которые вы, очевидно, не удосужились прочитать. Будете и дальше вести себя столь вызывающе, ваш пост заминусуют и больше вы на Хабр ничего не напишете.
Просто на хабре свои правила — они изложены в письменном виде, доступны всем и касаются оформления статей, комментирования, стиля изложения, даже грамотности :) Соблюдение этих правил, вместе с системой кармы и плюсов за посты, некоторым образом гарантирует что хабр не скатится в хаос «каждый постит хрень и вообще творит что хочет», как многие другие сайты в рунете у которых вроде бы все начиналось хорошо. Если вы пишете сюда — просто соблюдайте их, как и все остальные, только и всего :)
По сути комментарии будут?
Суть Минимакса не раскрыта, на мой взгляд.
«Максимум выгоды при минимуме удачи», «Минимум ущерба при максимально худшем стечении обстоятельств».
Про оптимизацию весов / функции оценки сумбурно.
По оформлению… Не ставьте знаки препинания сразу после тэгов кода и переносите последующий текст на следующую строку явно. То, что представлено в статье сейчас, выглядит как сломавшаяся разметка.
Код не анализировал… за качество оного не скажу ничего.
Суть Минимакса не раскрыта, на мой взгляд.
«Максимум выгоды при минимуме удачи», «Минимум ущерба при максимально худшем стечении обстоятельств».
Про оптимизацию весов / функции оценки сумбурно.
По оформлению… Не ставьте знаки препинания сразу после тэгов кода и переносите последующий текст на следующую строку явно. То, что представлено в статье сейчас, выглядит как сломавшаяся разметка.
Код не анализировал… за качество оного не скажу ничего.
Это результаты без теории можно сказать — плод моих собственных измышлений в минимакс. Но, определенный положительный результат есть! Если у вас есть соображения по поводу увеличения силы игры программы напишите пожалуйста, испробую, изложу результаты.
Я исследую вот прям также методом научного тыка генетические алгоритмы, что не есть хорошо. Без теоретической базы трудно нормальные тесты написать.
В Вашем случае без нормальной теоретической базы даже выбор весов становится чисто случайным (тот же полунаучный тык). Повезет Вам — совпадут веса с конкретным случаем. Вы распространите такие же веса на другие кейсы, а там они не будут работать как надо. И Вы об этом можете и не узнать. Выбор параметров модели очень важен в таких задачах. Скажем, почему ходам соперника больше вес дается, а своему — меньше, и почему сопернику именно столько-то. Все это нужно обосновать, чтобы иметь возможность ошибки детектить (тесты писать).
Кстати, МиниМакс как раз хорошо вписавыется в задачу оптимизации на ГА. Как говорится, «веселее вместе».
В Вашем случае без нормальной теоретической базы даже выбор весов становится чисто случайным (тот же полунаучный тык). Повезет Вам — совпадут веса с конкретным случаем. Вы распространите такие же веса на другие кейсы, а там они не будут работать как надо. И Вы об этом можете и не узнать. Выбор параметров модели очень важен в таких задачах. Скажем, почему ходам соперника больше вес дается, а своему — меньше, и почему сопернику именно столько-то. Все это нужно обосновать, чтобы иметь возможность ошибки детектить (тесты писать).
Кстати, МиниМакс как раз хорошо вписавыется в задачу оптимизации на ГА. Как говорится, «веселее вместе».
Добился абсолютной победы над программой! Благодаря, в том числе, вашим замечаниям: повышение значимости ответа соперника (понял примерно так), т.е. на практике достигается путем умножения результата соперника на константу более единицы, я выбрал (от фонаря) = 10 и алгоритм обыграл программу при ходе первым и при ходе вторым. Теперь функция минимакс выглядит вот так:
Задачу можно считать решенной и переходить к более сложной игре)))
Step game(TicTac *field, int deep, WHO it, TicTac t){
int i=0;
float rait, koeff = 1 - Koeff[it]*deep;
Step s, r;
s.step = -1;
s.rait = -1000.;
if(deep > DEEPMAX){
s.rait = 0.;
return s;
}
for(i=0; i<NSIZE_I*NSIZE_J; i++){
if( validstep(field, i) ){
field[i] = t;
rait = c4getrait(field, t);
if(rait >= WIN){
field[i] = EMPTY;
s.rait = 100.*koeff;
s.step = i;
return s;
} else if(!isstep(field)){
rait = 0.;
} else {
r = game(field, deep+1, it, (t==Tic)?Tac:Tic);
rait-=(CorrectK[it]*r.rait);
}
if(rait > s.rait){
s.rait = rait;
s.step = i;
}
field[i] = EMPTY;
}
}
s.rait = s.rait*koeff;
return s;
}
Задачу можно считать решенной и переходить к более сложной игре)))
Sign up to leave a comment.
Алгоритм минимакс на примере игры «Собери 4 (connect4)»