Решение тестового задания RBK.Money
В древней Гильдии состоят 60 торговцев. Каждый год они заключают друг с другом сделки. Ежегодно каждый торговец заключает сделки со всеми остальными членами Гильдии, от 5 до 10 сделок между каждой парой торговцев.
При свершении сделки у каждого из торговцев есть 2 варианта поведения: либо честно сотрудничать и выполнять все свои обязательства, либо сжульничать. От этого выбора зависит размер их прибыли:
- в том случае, если оба проводят сделку честно, оба зарабатывают по 4 золотых;
- если один торговец сжульничает, а другой продолжит честно сотрудничать, то жулик получит 5 золотых, а честный торогвец - всего 1;
- если оба сжульничают, то каждый получит только по 2 золотых.
Мерило успеха в Гильдии - прибыль, которую торговец заработал за последний год. В конце каждого года 20% самых неуспешных торговцев с позором исключают из Гильдии, а их место занимает ровно столько же новых, которые копируют поведение 20% самых успешных членов Гильдии.
Торговцы хранят коммерческую тайну, не распускают слухов и ничего не рассказывают другим о свершённых сделках.
У торговцев существуют следующие стандартные стратегии поведения:
Название | Описание |
---|---|
альтруист | Всегда сотрудничает. |
кидала | Всегда жульничает. |
хитрец | Начинает с сотрудничества, потом повторяет ход оппонента. |
непредсказуемый | Поступает случайным образом. |
злопамятный | Начинает с сотрудничества и продолжает сотрудничать, пока против него не сжульничают. После этого сам начинает постоянно жульничать. |
ушлый | Всегда начинает с последовательности ходов: сотрудничество, жульничество, сотрудничество, сотрудничество. Далее, если к пятому ходу его хоть раз обманули, то играет как кидала, если нет, то как хитрец. |
В процессе сделки для каждого торговца существует 5% вероятность ошибиться и принять неправильное решение: сжульничать вместо того, чтобы сотрудничать, или наоборот.
Изначально в Гильдии состоит равное число торговцев, выступающих приверженцами каждой из перечисленных стратегий.
В рамках моего решения задачи, была создана новая стратегия поведения: Статистик.
Модель поведения статистик опирается на данные, собранные в процессе торговли.
Статистик запоминает результаты всех сделок и основываясь на них вычисляет долю сделок, в которых его не обманули.
Исходя из этой доли, он вычисляет ожидаемый доход в зависимости от того, будет ли он сотрудничать или обманывать и принимает свое решение в пользу наиболее выгодного варианта.
Также статистик не очень доверчивый, и поэтому после каждой сделки закладывает небольшое добавочное значение, что его обманут в следующий раз, это помогает модели быстрее приспособится к переходу в ситуацию, когда честные торговцы отсеиваются и остаются преимущественно кидалы, хитрецы и мстительные торговцы.
- При всех дробных расчётах используется округление вниз.
- Наиболее выгодными стратегиями поведения оказались стратегии кидалы, мстительного и хитреца.
- Исходя из этих данных, мною была создана новая стратегия статистик, которая показала свою эффективность в существующих условиях. Описание стратегии доступно выше.