![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Хранение данных [D7]
Rembo © (2007-01-14 15:01:00)Привет! Делаю игру (Bantumi, была в мобиле Nokia 3310) и решил попробывать сделать самообучающийся ии таким образом: если человек побеждает компьютер, то ходы человека записываються в файл (базовый ии включает в себя несколько простых проверок: "можно ли походить 2 раза", "можно ли украсть очки у противника" и т.д). В записи в файле представляют собой массив из 14 байт (12 байт - состояние игры, 13-ый - количество очков с которыми выиграл человек, 14 отвечает за сам ход), И столкнулся с проблемой: игровой стол представляет собой массив из 12 чисел 0..25. Всего возможных состояний 26^12, перемножив на 12 байт, получаеться что полный файл будет весить ~ОЧЕНЬ ОЧЕНЬ МНОГО TB. Собственно вопрос: как уменшить размер записи? Есть ли варианты? Или я пошел по неверному пути?
ors_archangel (2007-01-15 02:27:00) [1]Оставляй только сколько-то хороших примеров - остальные - удаляешь, эволюция! - выживает сильнейший.
Сдеалть пакетную запись ходов: некоторое состояние - триггер: цепочка ходов, - не надо будет записывать состояние перед каждым ходом, но затрудняется поиск по примерам, хотя если цепочек много, то не страшно.
Обучать нейросеть, предсказывающую ход в зависимости от состояния на примерах, где человек победил, да и на примерах, где комп победил то же. Размер нейросети ограничить несложно, и она может находить сложные закономерности.
Реорганизовать хранение: вместо отображения состояние -> ход использовать сколько возможно ходов списков, в которых будут храниться состояния: состояния храним в сжатом виде, например сортируем их и почленно сжимаем RLE или ещё как-нибудь, даже zlib может хорошо сжимать: в надежде, что один и тот же ход происходит из похожих позиций, только в случае со сжатием поиск придётся дополнительно усложнять: разжатие там всякое и т.д.
Вообще, обычно (а вообще не знаю) делают функцию оценки позиции и просчитывают свои/чужие ходы в будущее по разным ветвям и выберают лучший путь, т.е. глубокий перебор возможных ходов для поиска максимально выйгрышного состояния - вообще ничего хранить не надо, хотя можно какие-нибудь интересные случаи и сохранить.
Rembo (2007-01-14 19:56:00) [2]Мда, перенесли, а тут тем более никто не ответит!
Rembo (2007-01-14 15:07:00) [3]Вот пришла в голову мысль: вместо того чтоб хранить весь массив 12 байт, делать из него хеш, получаеться 4 байта +2 : 30^12*6= бесконечность =(