Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (1): [1]   

> Описание: Нейронная сеть на python в киборе
S_o_k
Отправлено: 20 Декабря, 2020 - 21:01:11
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 9
Дата рег-ции: Июнь 2019  
Репутация: 0




Добрый день, хочется написать бота который мог бы самообучаться в игре в, которой надо взвешивать риски.
Ход игрока - это серия бросков 8-ми кубиков, в течении которых он накапливает очки. После каждого броска игрок выбирает один из выпавших результатов и откладывает в сторону все кубики с ним (например, все пятерки или все звезды). При этом нельзя выбирать значение, кубики с которыми уже были отложены в сторону на предыдущих бросках.
Каждая звезда на кубике приносит 5 очков, и для получения суммы очков необходимо иметь среди отложенных хотя бы одну звезду.
Если у игрока недостаточная сумма или нет звезд, или не может отложить кубики после очередного броска (поскольку все выпавшие значения уже откладывал), его ход кончается провалом.
Пример:
Дается 8 игральных кубиков, но у каждого кубика вместо 6 "*".
Делается бросок всех кубиков, допустим выпало 5 5 5 3 3 2 1 1, дается выбор взять все кубики с одинаковыми выпавшими очками берем три 5. (если остановится проигрыш потому что нет зведы)
кидаем 5 кубиков выпадает * 4 1 2 3 , берем *. (можно остановится сумма очков уже 20)
кидаем 4 кубика выпадает * 5 4 2 берем 4. (можно остановится сумма очков уже 24)
кидаем три кубика выпадает 5 * * (очки сгорели невозможно взять уже отложенные кубики)
Вопрос заключается в следующем, возможна ли такая реализация нейронной сети в киборе для передачи дальнейшего действия игровому боту, нужно ли бросать еще, или какой кубик взять?
 
 Top
stasrus
Отправлено: 20 Декабря, 2020 - 21:11:15
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 62
Дата рег-ции: Сент. 2020  
Репутация: -1




Решение только одно, вызвать вот такую функцию
Zireael ();
 
 Top
Zireael
Отправлено: 21 Декабря, 2020 - 00:53:06
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
кидаем 4 кубика выпадает * 5 4 2 берем 4. (можно остановится сумма очков уже 24)

4 кубика у каждого 6 сторон, значит всего: 6^4 = 1296 возможных вариантов. ^ - это возведение в степень.
Т. к. до этого забрали 5 и *, то надо посчитать сколько комбинаций только из этих двух чисел, потому что они проигрышные, т. е. 5555, 555*, 55*5, 5*55, *555, 55** и т. д. до ****.
2^4 = 16 возможных вариантов. Считаем:
(1296 - 16) / 1296 * 100 = 98,77% вероятность выигрыша.

Учитывать выпадение всех одинаковых чисел имеет смысл только когда кубиков мало, 2 или 3.
Например, при бросании 2 кубиков надо узнать какова вероятность выпадения какой-то цифры на обоих. Для одного кубика это 1 к 6 что составляет 16.66%. Для двух 16.66% / 6 = 2.77%.

Почитайте про комбинаторику и теорию вероятности.
 
 Top
S_o_k
Отправлено: 22 Декабря, 2020 - 07:21:04
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 9
Дата рег-ции: Июнь 2019  
Репутация: 0




Бросать еще раз или остановиться с этим понятно, можно задать риск переменной и сравнивать с ней, в допуске риска или нет. Но вот как принимать решение какую цифру выбирать при первом, и втором бросках. Есть разные варианты например при первом с набором (* 5 4 3 3 2 1 1) логичнее взять две тройки а с набором (* 5 4 3 2 2 1 1) взять одну тройку с дальнейшей "надеждой" на более "удачные" звезды и пятерки.

 Zireael пишет:
Для двух 16.66% / 6 = 2.77%.


будет не 2.77% а 30.5% потому что из 36 вариантов нам нужна хотя бы одна единичка а это набор (1-1, 1-2, 1-3, 1-4, 1-5, 1-6, 2-1, 3-1, 4-1, 5-1, 6-1) 11/36. Уже узнал из статьи про комбинаторику и тервер.
 
 Top
Zireael
Отправлено: 22 Декабря, 2020 - 08:52:37
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
Но вот как принимать решение какую цифру выбирать при первом, и втором бросках.

Тут вообще нет проблем. Считаем сколько в сумме дадут выпавшие 1, записываем результат в массив, потом 2 и т. д. Проходим по массиву в поисках максимальной суммы. Выбираем максимальный результат, разумеется заодно надо проверять не собирали ли уже такую цифру.
 Цитата:
будет не 2.77% а 30.5%

Имелось ввиду шанс выпадения 11, 22, 33 и т. д.
 
 Top
S_o_k
Отправлено: 22 Декабря, 2020 - 10:32:52
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 9
Дата рег-ции: Июнь 2019  
Репутация: 0




Так вот и есть проблема, что при первом броске (* 5 4 3 3 2 2 2) тут взять две тройки, потому что сумма двоек и троек одинакова, а кубиков меньше у троек. ( в такой вариации я понимаю как задать выбор троек) А если выпадет набор (* 5 4 3 1 1 1 1) или (* 5 4 3 2 2 2 1) или (* 5 4 3 2 2 1 1) во всех этих случаях, на мой взгляд лучше выбрать тоже тройки, потому что терять 4 кубика ради 4-ч очков, или три кубика ради 6 или даже 2 ради 4, на взгляд не стоит, так как кол-во кубиков уменьшается на кол-во выбранных.
 
 Top
Zireael
Отправлено: 22 Декабря, 2020 - 11:01:41
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




Считать соотношение суммы очков к количеству кубиков, которые придётся забрать.
К примеру:
3 1 1 1 1
3 очка / 1 кубик = 3
4 очка / 4 кубика = 1
выгоднее забрать 1 кубик с цифрой 3, т. к. коэффициент больше.
3 2 2 2 1
3 очка / 1 кубик = 3
6 очков / 3 кубика = 2
1 очко / 1 кубик = 1
выгоднее забрать 1 кубик с цифрой 3
3 2 2 1 1
3 очка / 1 кубик = 3
4 очка / 2 кубика = 2
2 очка / 2 кубика = 1
выгоднее забрать 1 кубик с цифрой 3

В любом случае придётся дописывать дополнительные условия. Т. к. в такой схеме 4 5 и * будут выгоднее 3, но их оставляем на потом. Надо думать над алгоритмом.
 
 Top
S_o_k
Отправлено: 22 Декабря, 2020 - 12:05:18
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 9
Дата рег-ции: Июнь 2019  
Репутация: 0




Изначально была мысль сделать небольшое смещение в сторону числа кубиков. так же получать коэффициент, но делить не просто на число кубиков, а на число кубиков +1, но это нам помогает только если выбираем между двумя 4, одной 5 и одной *. в таком случае 4 4 (8/3) выгоднее 5 или * (5/2) но все равно в таком случае две тройки проигрывают 5 и *.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 2 (гостей: 2, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by