Самообучение игровых программ

Сообщение №2411 от Игрек 23 января 2002 г. 20:14
Тема: Самообучение игровых программ

Я особо не люблю комп. игры.
Тут сосед играет в какую-то игру, и говорит, что комп. раз за разом играет сильнее, применяет стратегии, которые против него применяли ранее.

Я еще понимаю самообучающуюся шахм. программу, числовые веса позиций и фигур можно действительно переоценивать на основе сыгранных партий, но чтбы менять стратегию?

Возможно ли это?


Отклики на это сообщение:

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

> Возможно ли это?

Да, возможно. Посмотри в интернете про нейросети...
ключевые слова: "обучение сети".

Хотя здесь (для компьютерной игры) видимо все таки не тот случай...


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

Дайте определение понятия "стратегия".
Вроде вы друг друга понимаете.


Поскольку я сам не играю (да, мне сказали, что это единственная игра выпущенная фирмой Микрософт, не считая "Саперов":)), мне тут трудно судить.

Что такое стратегия? Хороший вопрос. Попробую разобрать на примере шахмат. Программа, например, оценивает позицию как лнейную комбинацию числа открытых линий, числа пешек, рокирован король или нет. Можно менять веса каждого фактора. Но стратегия здесь одна- линейная комбинация.

По моему мнению, программа не может самовольно изменить стратегию. Например, она могла бы рассматривать сумму квадратов величин с некими весами. Но если изначально в программе заложена линейная комбинация, то линейная комбинация будет всегда.


>Но стратегия здесь одна- линейная комбинация.

Теперь, разумеется, вопрос, что такое "линейная комбинация".


Абсолютно верно. Если вы заранее задали вид
F()=a1*f1()+a2*f2(),то ничего нового Вы не получите.
Однако как известно функция может задаваться не только аналитически...


К тому же шахматы не совсем хороший пример, т.к. число игровых комбинаций конечно (счетно если разрешать повторение ходов)...


не может.
Неиграю ни в одну игру.
Считаю это варварским способом растрачивания энергии.
А по поводу мной сказанного - исхожу из интуиции и опыта.


> Абсолютно верно. Если вы заранее задали вид
> F()=a1*f1()+a2*f2(),то ничего нового Вы не получите.
> Однако как известно функция может задаваться не только аналитически...

А целевая функция?

По моему, только аналитически!

Это кстати, интересный, философский вопрос:
О различии в методах задания эмпирической и целевой функции.
Целевую функцию конструирует конструктор, т.е. сам человек!


Я когда-то написал программу для рэндзю (крестики-нолики), в которой не было вообще поиска в глубину, а были только эвристические оценки текущей позиции для себя и для противника. Меняя вид функций (как правило только коэффициенты), я получил шесть принципиально разных "стратегий", т.е. стилей игры.
Дальше, совсем нетрудно оценить стратегию противника, введя какую-нибудь "эвристическую метрику", и придумать простые правила выбора контрстратегии. И никакое "самообучение" не нужно.
В "слабо детерминированных" играх, типа "войнушек" не обязательно выбирать наилучший ход в каждой позиции, чтобы выиграть. Поэтому можно вводить случайные вариации, которые создадут эффект разнообразия стратегий.
Самообучение, вообще, конечно не исключено, но скорее всего это чисто психологический эффект.

> Я особо не люблю комп. игры.
> Тут сосед играет в какую-то игру, и говорит, что комп. раз за разом играет сильнее, применяет стратегии, которые против него применяли ранее.

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

> Возможно ли это?


> Меняя вид функций (как правило только коэффициенты), я получил шесть принципиально разных "стратегий", т.е. стилей игры.

А что, в этой игре нет алгоритма гарантированного поведения (хода) на выигрыш при очередном ходе противника? Ведь Михалыч говорит, что всё сводится к принципу сжатых отображений.


> А что, в этой игре нет алгоритма гарантированного поведения (хода) на выигрыш при очередном ходе противника? Ведь Михалыч говорит, что всё сводится к принципу сжатых отображений.

А разве нет такого алгоритма в шахматах? ;)


> > А что, в этой игре нет алгоритма гарантированного поведения (хода) на выигрыш при очередном ходе противника? Ведь Михалыч говорит, что всё сводится к принципу сжатых отображений.

> А разве нет такого алгоритма в шахматах? ;)

Похоже, что в шахматах есть.
Оказалось, что все сводится к вычислительным ресурсам!


1. Не помню, чтобы говорил про ПСО в применении к шахматам.
2. А вот в вопросе о СУЩЕСТВОВАНИИ выигрышной стратегии и ее РЕАЛИЗАЦИИ, для меня много неясного.
ПРИМЕР. Играем в "двойные шахматы" (два хода подряд).
ТЕОРЕМА. Существует непроигрывающая стратегия за белых.
ДОКАЗАТЕЛЬСТВО. Пусть такой стратегии нет. Тогда белые, играя
1. Кg1-f3, Kf3-g1
передают ход черным.
А дальше, при необходимости, срабатывает правило "трехкратного повторения".

НО!!
А как играть, чтоб выиграть? И как вообще играть дольше трех ходов?


Не знаю, как про шахматы.
Но из той задачки Ana-ы элементарно сделать игру, в которой «оператор» не обыграет машину. Но может совершенствоваться.
А если ввести временной фактор (на скорость реакции машины и оператора), то число уровней можно делать много.
Главное, что у машины есть гарантированная стратегия достижения успеха.
И строится она численно-графически.
Нормальный человек, если захочет обыграть машину, то должен найти и реализовать алгоритм на другой машине (с графическим отображением процесса решения на каждом ходе).
В итоге будут играть друг с другом машины.


Физика в анимациях - Купить диск - Тесты по физике - Графики on-line

Реклама:
Rambler's Top100