predictor/README.md
2020-03-22 10:48:29 +03:00

65 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Электронная гадалка
[![CircleCI](https://circleci.com/gh/anwinged/predictor/tree/master.svg?style=svg)](https://circleci.com/gh/anwinged/predictor/tree/master)
[Демоверсия][demo]
Алгоритм, который противостоит человеку, и на основе ходов пытается предсказать
следующих ход человека.
Игрок загадывает один из двух вариантов, а робот пытается его угадать.
Если программе удалось угадать, то игрок теряет очко.
Если программа не смогла предсказать выбор человека, то игрок зарабатывает очко.
Алгоритм реализован на основе [описания][algorithm]. В процессе реализации алгоритм слегка изменился.
В отличие от описания, здесь можно дополнительно указать количество вариантов.
С двумя вариантами будет игра "Чет - нечет", а с тремя - "Камень, ножницы, бумага".
Интересно то, что программу сложно обыграть. Игрок пытается обставить робота, но все равно
делает свои ходы не случайно. Именно эта "неслучайность" позволяет быстро приспосабливаться и эффективно
противостоять игроку.
Более подробно о гадалке и алгоритме можно прочитать на сайте [ltwood][about].
## Использование
```javascript
import Predictor from "predictor";
// Создание гадалки
const predictor = new Predictor(config);
// Передача значения, которое выбрал пользователь,
// и получение предсказание для этого значения
const prediction = predictor.pass(1);
// Получение текущего счета
const score = predictor.score;
// Получение количества сделанных ходов
const sc = predictor.stepCount();
```
### Конфигурация
- `config.base` - количество вариантов хода. Число большее 2.
Чем больше вариантов, тем больше ходов алгоритм тратит на приспособление к ходам человека.
- `config.daemons` - настройка списка демонов.
- `config.daemons.human` - количество анализируемых ходов человека,
- `config.daemons.robot` - количество анализируемых ходов робота,
- `config.daemons.epsilon` - вес вознаграждения правильного ответа.
- `config.supervisor_epsilon` - вес вознаграждения демона за правильный ответ.
## Сборка
tools/build-docker
tools/npm run build
## Тестирование
tools/npm run test
[algorithm]: https://sites.google.com/site/ltwood/projects/heshby/algorithm
[demo]: https://vakhrushev.me/articles/2019-05-01-predictor/
[about]: https://sites.google.com/site/ltwood/projects/heshby