Имя: Пароль:
LIFE
 
OFF: Стратегии эволюционной игры "Кооперируюсь/Отказываюсь" ("Парадокс заключенных")
0 FarFar
 
23.10.13
13:28
1. Вот мой алгоритм 40% (2)
2. Лень думать 40% (2)
3. А зачем это надо? 20% (1)
Всего мнений: 5

Добрый день!

На днях закончил читать книгу "Эгоистичный ген" (автор - известный ученый и популяризатор науки Докинз).
В одной главе: http://www.rulit.net/books/egoistichnyj-gen-read-45448-89.html
описано компьютерное моделирование множества матчей разных стратегий этой игры. Разные стратегии набирали разное количество очков.
Как пишет Докинз, успешность-неуспешность стратегии сильно зависит от начальных условий, в которые она попала (разное количество других стратегий в популяции).
Захотелось также промоделировать этот чемпионат. Какие стратегии Вы можете предложить?
Некоторые у Докинза описаны:
- "всегда отказываюсь"
- "всегда кооперируюсь"
- "случайная" (антистратегия, то есть абсолютно случайные ходы)
- "око за око"
- "око за два ока"

Я также придумал свою, но для полноценного чемпионата нужно хотя бы десяток. В книге описано, что в первом чемпионате участвовало 15, во втором - 63. В третьем (где "выигрыш" выплачивался не в баллах, а в количестве копий стратегии на следующую итерацию) - те же 63.

Третий чемпионат наиболее интересен, как мне кажется.
1 Зойч
 
23.10.13
13:29
что за игра, вкарце
2 Лефмихалыч
 
23.10.13
13:31
уберботанство какое-то без смысла и пощады

Лень думать
3 FarFar
 
23.10.13
13:31
Мой алгоритм: "Лучшие практики"
Смотрим количество баллов, набранных всеми стратегиями.
Для каждой стратегии высчитываем коэффициент успешности.
Далее, смотрим, какой ход делала каждая копия стратегии на предыдущем кону (кооперировала или отказывалась), т.е. 0 или 1, умножаем на коэффициент успешности стратегии. Потом полученное совокупное значение по всем копиям стратегии делим на число копий. В ответе получаем некое дробное число между 0 и 1, и округляем его. Например, если 0.33 - значит играем "Отказываюсь". Если 0.79 - "Кооперируюсь"

Вот мой алгоритм
4 FarFar
 
23.10.13
13:33
(2) В своем первонaчaльном, человеческом, вaриaнте этa игрa состоит в следующем. Имеется "бaнкомет", который судит игру и выплaчивaет выигрыши двум игрокaм. Допустим, что я игрaю против вaс (хотя, кaк мы увидим, "против" - это кaк рaз то, чего нaм не следует делaть). Нa рукaх у кaждого игрокa только по две кaрты с нaдписями Кооперируюсь и Откaзывaюсь. Кaждый из нaс выбирaет одну из двух своих кaрт и клaдет ее нa стол рубaшкой вверх, с тем чтобы ни один из игроков не знaл, кaк пошел другой; собственно говоря, обa они ходят одновременно. Дaлее игроки нaпряженно ожидaют, покa бaнкомет перевернет кaрты. Нaпряженность связaнa с тем, что выигрыш зaвисит не только от собственного ходa (кaждый игрок знaет, кaкую кaрту положил он сaм), но и от ходa противникa (что остaется неизвестным, покa бaнкомет не перевернет кaрты).

Поскольку в игре учaствуют 2x2 кaрты, то имеется четыре возможных исходa (из увaжения к северо-aмерикaнскому происхождению игры выигрыши приводятся в доллaрaх):

Исход I. Мы обa сыгрaли КООПЕРИРУЮСЬ. Бaнкомет выплaчивaет кaждому из нaс по 300 доллaров. Этa почтеннaя суммa нaзывaется "Нaгрaдa зa взaимное кооперировaние".

Исход II. Мы обa сыгрaли ОТКАЗЫВАЮСЬ. Бaнкомет штрaфует кaждого из нaс нa 10 доллaров. Это нaзывaется "Нaкaзaние зa взaимный откaз".

Исход III. Вы сыгрaли КООПЕРИРУЮСЬ, a я ОТКАЗЫВАЮСЬ. Бaнкомет выплaчивaет мне 500 доллaров (Плaтa зa риск) и штрaфует вaс (Простaкa) нa 100 доллaров.

Исход IV. Вы сыгрaли ОТКАЗЫВАЮСЬ, a я КООПЕРИРУЮСЬ. Бaнкомет выплaчивaет вaм зa риск 500 доллaров и штрaфует меня (Простaкa) нa 100 доллaров.


В Чемпионатах использовалась несколько другая шкала призов/штрафов:

взaимное Кооперировaние - 3 очкa; Риск - 5 очков; Нaкaзaние зa взaимный откaз - 1 очко (эквивaлент небольшого штрaфa в игре, описaнной рaнее); Штрaф Простaку - 0 очков (эквивaлент большого штрaфa в игре, описaнной рaнее).
5 shamannk
 
23.10.13
13:33
WOT лучше!
6 FarFar
 
23.10.13
13:34
(4) это к (1), извиняюсь
7 FarFar
 
23.10.13
13:38
(1) Например, достаточно успешной оказалась простая стратегия "Око за око". Она в первый свой ход играет "Кооперируюсь", а в дальнейшем - повторяет предыдущий ход второго игрока.
8 Lama12
 
23.10.13
13:58
(0) по ссылке 404 Not Found
9 Lama12
 
23.10.13
14:02
Прикольно.
http://www.rulit.net/
Данный ресурс заблокирован в исполнение требований закона
"Об информации, информационных технологиях и защите информации".
10 FarFar
 
23.10.13
14:20
(8), (9) Странно, у меня открывается нормально.
Можешь тогда просто скачать книгу, она выложена в инете.
Глава 12 "Добрые пaрни финишируют первыми"
11 Loyt
 
23.10.13
14:26
(7) Если второй игрок будет всегда отказываться, проиграешь.
12 FarFar
 
23.10.13
14:29
(11) Какой смысл ты вкладываешь в слово "Проиграешь"?
Проиграешь второму игроку? Тогда да. Если для тебя важнее всего - не дать второму игроку набрать больше себя, то надо всегда отказываться. Такие стратегии Докинз назвал "завистливые".
Но, во-первых, можно назвать целью - набрать много очков, т.е. "жить за счет банкомата". И тогда стратегия "всегда отказываюсь" - будет не очень конкурентной.
Во-вторых, в рамках чемпионата стратегий много, и они "обойдут" твою стратегию, даже если она не дает каждой другой обыграть себя. Они будут кооперироваться друг с другом и набирать очки, пока ты их набираешь мало.
13 antgrom
 
23.10.13
14:46
(5) Кстати да. Вот такая стратегия : в твоей команде нубы , с первых секунд игры один из них крикнул "рашим по центру" , все кроме тебя погнали напрямик по центру.
Твоя наилучшая стратегия чтобы выиграть игру ?
14 Lama12
 
23.10.13
14:47
Играл в такую игру на тренингах около 15 лет назад (может и больше).
С небольшими изменениями :)

В жизни все так же.
Оптимальная тактика для каждого будет соответствовать его поведению в жизни.

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

Если упростить до безобразия, то задача сводится к количеству доверия. Сколько раз можно доверять партнеру.

Естественно в жизни еще есть куча факторов. Но в подобных играх их редко учитывают.
15 Lama12
 
23.10.13
14:47
(13) Заныкаться в дальний угол.
16 ЧеловекДуши
 
23.10.13
14:48
КтоВсеЭтиЛюДи? :)

А зачем это надо?
17 ЧеловекДуши
 
23.10.13
14:49
(14) А мне напоминает схему МММ, ты ему, он тебе, ты еще двоих, и у тебя и у первого доход, как бы все довольны, кроме последних :)
18 FarFar
 
23.10.13
14:50
(13), (15) Если в твоей команде нубы (играют "кооперируюсь"), а ты один такой хитрый обманщик ("отказываюсь"), то будешь жить в шоколаде. И давать большое потомство в следующих итерациях (набирать баллов). Но поэтому доля "обманщиков" в популяции будет расти, и они все чаще будут сталкиваться друг с другом, пытаясь взаимно обмануть.
19 Lama12
 
23.10.13
14:52
(18) Ну так :)
И ныкаться будут кооперируясь.
Это нормально.
Так и происходит.
20 FarFar
 
23.10.13
14:53
(17) Нет!
Это игра из типа "Игр с ненулевой суммой" (термин теории игр) http://www.rulit.net/books/egoistichnyj-gen-read-45448-96.html
, потому что тут присутствует неисчерпаемый банкомат, который оплачивает взаимный выигрыш двух "скооперировавшихся" игроков.
21 FarFar
 
23.10.13
14:53
(19) В итоге будет так: после крика "рашим по центру" вся команда разбежалась по разным углам, где ее противник поодиночке расстрелял.
22 Lama12
 
23.10.13
14:55
(21) Да, и такое бывает.
К сожалению - часто :)
23 Зойч
 
23.10.13
14:55
(18) пока на свете живы дураки, обманом жить нам стало быть с руки
24 ЧеловекДуши
 
23.10.13
14:59
(20) В сущности МММ тоже так то игра ;)
25 Gantosha
 
23.10.13
15:00
а еще есть эксперименты, которые показывают , что некоторые не только иррациональны, но и просто отказываются "думать" в той моделе которую им предлагают. Т.е. берется две группы людей одной объясняется эффект взаимодействия , а другой нет .. так вот некоторая часть людей всегда  выбирает не оптимальную стратегию , что в свою очередь приводит к занятости у социологов и т.п.
26 Loyt
 
23.10.13
15:01
(24) МММ - игра с нулевой суммой.
27 Loyt
 
23.10.13
15:02
(25) Во многих случаях рациональная стратегия не приводит к оптимальному результату.
28 FarFar
 
23.10.13
15:02
Вот по теме ссылка: wiki:Дилемма_заключённого

Читайте подраздел "Повторяющаяся дилемма заключенного"
29 Gantosha
 
23.10.13
15:03
и вообще у людей с рациональностью все хорошо, пока им кто-то не объяснить то что они раньше не знали и они не поймут (локально), что раньше жили не правильно. Почему всегда можно поражаться прозорливости подонков.
30 FarFar
 
23.10.13
15:04
(28)

В книге «Эволюция кооперации» (1984) Роберт Аксельрод исследовал расширение сценария ДЗ, которое он назвал повторяющаяся дилемма заключённого (ПДЗ). В ней участники делают выбор снова раз за разом и помнят предыдущие результаты. Аксельрод пригласил академических коллег со всего мира, чтобы разработать компьютерные стратегии, чтобы соревноваться в чемпионате по ПДЗ. Программы, вошедшие в него, различались по алгоритмической сложности, начальной враждебности, способности к прощению и так далее.
Аксельрод открыл, что если игра повторялась долго среди множества игроков, каждый с разными стратегиями, «жадные» стратегии давали плохие результаты в долгосрочном периоде, тогда как более «альтруистические» стратегии работали лучше, с точки зрения собственного интереса. Он использовал это, чтобы показать возможный механизм эволюции альтруистического поведения из механизмов, которые изначально чисто эгоистические, через естественный отбор.
Лучшей детерминистской стратегией оказалась «Око за око» (англ. Tit for Tat), которую разработал и выставил на чемпионат Анатолий Рапопорт. Она была простейшей из всех участвовавших программ, состояла всего из 4 строк кода на языке Бейсик. Стратегия проста: сотрудничать на первой итерации игры, после этого игрок делает то же самое, что делал оппонент на предыдущем шаге. Чуть лучше работает стратегия «Око за око с прощением». Когда оппонент предаёт, на следующем шаге игрок иногда, вне зависимости от предыдущего шага, сотрудничает с небольшой вероятностью (1-5 %). Это позволяет случайным образом выйти из цикла взаимного предательства. Она лучше всего работает, когда в игру вводится недопонимание — когда решение одного игрока сообщается другому с ошибкой.
Анализируя стратегии, набравшие лучшие результаты, Аксельрод назвал несколько условий, необходимых, чтобы стратегия получила высокий результат:
Добрая
Важнейшее условие — стратегия должна быть «доброй», то есть не предавать, пока этого не сделает оппонент. Почти все стратегии-лидеры были добрыми. Поэтому чисто эгоистичная стратегия по чисто эгоистическим причинам не будет первой «бить» соперника.
Мстительная
Успешная стратегия не должна быть слепым оптимистом. Она должна всегда мстить. Пример немстительной стратегии — всегда сотрудничать. Это очень плохой выбор, поскольку «подлые» стратегии воспользуются этим.
Прощающая
Другое важное качество успешных стратегий — уметь прощать. Отомстив, они должны вернуться к сотрудничеству, если оппонент не продолжает предавать. Это предотвращает бесконечное мщение друг другу и максимизирует выигрыш.
Не завистливая
Последнее качество — не быть завистливым, то есть не пытаться набрать больше очков, чем оппонент.
Таким образом, Аксельрод пришёл к утопично звучащему выводу, что эгоистичные индивиды во имя их же эгоистического блага будут стремиться быть добрыми, прощающими и не завистливыми.
31 Пенза58
 
23.10.13
15:04
(18) Вот представь себе простую модель: очередь.

Можно стоять в очереди, а можно пролезть без очереди.

И вот:
> Но поэтому доля "обманщиков" в популяции будет расти,

В конце концов, все будут тупо толпиться.

И стратегия обманщиков станет не продуктивной и общая скорость прохождения снизится.

З.Ы. http://anticache.img0.joyreactor.cc/pics/post/Комиксы-buttersafe-волки-овцы-761480.jpeg
32 FarFar
 
23.10.13
15:06
(31) Именно так.
33 Пенза58
 
23.10.13
15:09
(0) А почему вообще вспоминают про какого-то Докинза?

У нас же есть Чернышевский: "Теория разумного эгоизма Чернышевского («жизнь во имя другого») есть не что иное, как этическое выражение необходимости объединения и взаимопомощи, взаимоподдержки людей в труде. Героев Чернышевского объединяет одно великое «дело» - дело служения своему народу. Поэтому источником счастья этих людей является успех того дела, которое составляет смысл и радость жизни каждого из них. Мысль о другом, забота о друге, основанная на общности интересов в едином стремлении, в единой борьбе, - вот что определяет моральные принципы героев Чернышевского."  (С)
34 Loyt
 
23.10.13
15:11
(33) Может быть потому, что речь про науку, а не литературу?
35 Зойч
 
23.10.13
15:12
(33) этому и строгое мат обоснование есть.
Гуглим Джон Нэш. И даже кино про него есть "Игры разума"
36 Gantosha
 
23.10.13
15:13
вот эта книга лучше описывает реальность .. http://www.docme.ru/doc/74250/shelling-t.-strategiya-konflikta
37 antgrom
 
23.10.13
15:13
(15) ,(18) неправильно

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

Т.е. если происходит событие - его надо использовать.
38 antgrom
 
23.10.13
15:16
39 Принт
 
23.10.13
15:32
(35) Шизиков почитаем?)
40 FarFar
 
23.10.13
15:33
(39) Гений - он и с шизой гений.
41 Зойч
 
23.10.13
15:34
(39) Гениальность всегда граничит и иногда переходит психические нормы
42 Зойч
 
23.10.13
15:34
(39) Хотя если бы он не был шизиком кино бы про него не сняли
43 Loyt
 
23.10.13
15:35
(39) У математиков бывает. Профессиональный риск. :)
44 Lama12
 
23.10.13
15:37
Кстати, одна из основных проблем Анархии, в горизонте предвидения.
Если каждый индивид общества будет знать как другой индивид будет действовать основываясь на его действиях, то все убудт действовать в интересах всего общества.
45 FarFar
 
23.10.13
15:40
(44) Вчера переписывался с девушкой, социологом из Польши.
Она говорит, что европейские малые городки - не для славянского менталитета. Там даже богатые люди, которые могут позволить купить себе три лексуса, будут покупать бюджетный автомобиль, чтобы не огорчать соседей таким проявлением богатства. То есть, все эти бюргеры играют "кооперируюсь".
46 Loyt
 
23.10.13
15:40
(44) Ога, а гарантии где? Без гарантии во многих случаях будут приниматься именно эгоистические стратегии.
47 Принт
 
23.10.13
15:41
(44) обоснуй?
48 Питерский_
Никола
 
23.10.13
15:41
(47) Рекурсия.
49 Зойч
 
23.10.13
15:42
(45) у нас в деревне тоже не принято среди нищих крестьян покупать лексусы. Сожгут ведь нах
50 antgrom
 
23.10.13
15:42
(45)  почему вы считаете , что у славян в менталитете - выпендриваться перед соседями?
Наша семья например ни перед соседями по лестничной клетке ни перед соседями по даче не выпендривалась никогда.
51 FarFar
 
23.10.13
15:43
(50) хммм.... нечем?
52 Принт
 
23.10.13
15:43
(48) и что?
53 antgrom
 
23.10.13
15:44
(51) ок , но соседи тоже не выпендриваются.
54 antgrom
 
23.10.13
15:45
(51) и вы не ответили на мой вопрос.
55 Gantosha
 
23.10.13
15:46
польский социолог звучит драматично .. польская девушка куда интереснее.
56 jsmith82
 
23.10.13
15:46
...

Лень думать
57 Lama12
 
23.10.13
15:46
(47) Ты взаимодействуешь с человеком. Знаешь на перед как он будет действовать если ты с ним поступишь так или эдак. Он знает как ты будешь действовать исходя из результатов его действий.
В результате, все будут думая о своей выгоде, угождать обществу. Множеству индивидов. В результате получаем идеальное общество, и идеальный строй - анархию.
58 antgrom
 
23.10.13
15:47
драматичности добавляет то что поляки - тоже славяне.
59 Принт
 
23.10.13
15:49
(57) В результате все действия будут обусловлены только внешними относительно системы индивидов факторами, исключая предположения. Эгоизм останется на сцене.
60 Gantosha
 
23.10.13
15:50
(57) выгода есть величина субъективная. И то что у здорового человека сутра есть хорошо, вечером может быть плохо и наоборот.
61 antgrom
 
23.10.13
15:51
что мы всё о играх далёких от реальности ?

Вот реальная игра :
ветка на мисте
интересная тема
в разговоре участвуют :
несколько форумчан считающих себя ( или другие их так считают ) либералами ,
несколько форумчан считающих себя ( или другие их так считают ) патриотами ,
массовка.

Определить для начала : цель каждого собеседника - к чему он стремится в разговоре и зачем его поддерживает ?
62 Зойч
 
23.10.13
15:52
(57) и почему это ПРОБЛЕМА анархии?
63 Зойч
 
23.10.13
15:52
(61) в этой ветке?
64 Gantosha
 
23.10.13
15:52
(61) и патриоты-модераторы)
65 FarFar
 
23.10.13
15:53
(55) Речь шла о непольских городках ))
66 Lama12
 
23.10.13
15:53
(59) В том-то и фокус. Что эгоизм начинает действовать на благо общества.
(60) Напоминаю - у этих лиц имеется 100% возможность предсказания будущего.
67 Зойч
 
23.10.13
15:53
(65) Речь наверно про новых русских славян ))
68 antgrom
 
23.10.13
15:54
(63) не , можно соседнюю взять , про Онищенко.
69 Lama12
 
23.10.13
15:54
(62) Потому что в остальных формах общества, цель общества достигается не за счет эгоизма.
В анархии, цель может быть достигнута только за счет эгоизма.
70 Loyt
 
23.10.13
15:55
(57) Дык ты нифига не знаешь наперёд, ни миелофона, ни машины времени бесплатно не выдали. Из неверной посылки получаются неверные выводы.
71 Принт
 
23.10.13
15:55
(66) Благо? Общество или расцветёт, или погибнет.
72 Lama12
 
23.10.13
15:55
(70) ;) В этом и проблема.
73 FarFar
 
23.10.13
15:55
(61)

Давай ближе к реальности (в теме ветки).

1С-ники выкладывают свои разработки в интернет, и отвечают на форуме на профессиональные вопросы лично даже незнакомых людей. Казалось бы почему? Но изучив Докинза и результаты чемпионата стратегий Аксельрода - понимаем что это КООПЕРИРУЮСЬ в условиях игры с ненулевой суммой (так как присутствует БАНКОМАТ с нескончаемой суммой денег - заказчик-работодатель).
74 Gantosha
 
23.10.13
15:56
(65) но, заметь , вы почему то стали обсуждать количество машин .. а не например права беженцев цыган во франции .. почему то с цыганами фрнацузы кооперироваться не хотят .. хотя все из евросоюза. Пусть лучше эту тему пилит.
75 Loyt
 
23.10.13
15:56
(69) Зашибись, назвать альтруизм эгоизмом - вот и обоснование. :)
76 antgrom
 
23.10.13
15:57
(73) не-не-не.

Есть такие вещи как известность  , слава , тщеславие , узнаваемость.

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

Может быть тренировка - т.е. саморазвитие.
77 Lama12
 
23.10.13
15:58
(75) :) Вопрос оценки.
78 Loyt
 
23.10.13
16:00
(77) Ога, противоположные понятия смешать в одно - вопрос оценки. Вопрос игры словами это.
79 FarFar
 
23.10.13
16:00
(74) в ссылке из (0) про это тоже написано. Что "допропорядочные" и "кооперирующиеся" стратегии могут выжить и впоследствии благоденствовать, даже в мире, где преобладают "хитрецы". Фича в том, что они могут "жить обособленно", и получать большие выигрыши, играя преимущественно друг с другом, а не с обманщиками.

Вот так и бюргеры. С собой и знакомыми - кооперируются. С цыганами - играть не хотят.
80 Gantosha
 
23.10.13
16:04
(66) ну, анархия то это просто форма в которой отсутствует координатор .. т.е. считается что люди могут достигать совместных достижений не прибегая к помощи государства. Но откуда вывод о том что каждый член общества начнет действовать к выгоде другого члена ? Только потому что он от сотрудничества получает больше ? Ну например немцы сотрудничали с гитлером (нагнем всех не немцев).. но русские с ним в этом вопросе сотрудничать не хотели. Так или иначе верх могла одержать только одна из сторон .. и как вот обществу понять надо ли сотрудничать с кем то даже если он наперед тебе рассказывает о своих планах.
81 Зойч
 
23.10.13
16:04
(73) скучно просто
82 Зойч
 
23.10.13
16:05
мало кто помогает ради. я помог сегодня - мне помогут завтра
83 Loyt
 
23.10.13
16:05
(79) Тут внутреннее противоречие. Они не могут одновременно играть преимущественно с хитрецами и преимущественно между собой.
84 NS
 
23.10.13
16:06
(0) Докинз не в курсе работ Нэша? Хотя книгу я читал, правда давно, понравилась.
85 FarFar
 
23.10.13
16:10
(84) Докинз эту главу писал на основе исследований Аксельрода. А тот уж наверняка с трудами Нэша знаком.
86 FarFar
 
23.10.13
16:11
(83) Поясни. Я твою фразу не понял.
87 Lama12
 
23.10.13
16:13
(78) Не понял. Как это противоположные?
Альтруизм - бескорыстная забота о других.
Эгоист (с учетом прогнозирования будущего) будет вынужден, для заботы о себе, заботиться о других. Причем тут забота получается корыстная, т.к. он знает что его деяния, вернутся к нему.
88 Loyt
 
23.10.13
16:14
(86) Ну у тебя в (79) в мире вроде как преобладают хитрецы, а добропорядочные всё равно играют преимущественно между собой. Это как так?
89 Зойч
 
23.10.13
16:16
(87) сотрудничать не значит заботиться, а всего лишь не кидать
90 Gantosha
 
23.10.13
16:16
(83) лучше бы ты спросил у нее о ценностях европейцев и начал бы оттуда , ..а не почему у нас люди покупают по 3 автомобиля и выставляют их на показ. Вдруг может оказаться , что просто в структуре ценностей есть такие , издержки на которые существенно превышают стоимость этих автомобилей и это как бы важнее и достижение этих ценностей уже гарантирует , что не будет свербить в одном месте от желания купить еще одну тачку. (кстати дорогих тачек в германии продается все равно больше чем в россии .. так что расти социолога дальше )
91 Зойч
 
23.10.13
16:17
как изменится стратегия, если кидок будет не -100/500, а -300/300?
92 FarFar
 
23.10.13
16:19
(88) Да, Докинз описывает такой мир:

http://www.rulit.net/books/egoistichnyj-gen-read-45448-95.html

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

Кaк это может произойти? Можно было бы ответить: "Случaйно". Однaко слово "случaйность" просто скрывaет нaше незнaние. Оно ознaчaет: "Определяется кaкими-то покa неизвестными или точно не устaновленными фaкторaми". У нaс есть возможность ответить чуть лучше. Мы можем попытaться предстaвить себе, кaк прaктически некоему меньшинству индивидуумов, использующих стрaтегию Око зa око, удaется увеличиться в числе и достигнуть критической мaссы. Это рaвносильно поискaм возможных путей, которыми индивидуумы Око зa око могли бы обрaзовывaть достaточно большие скопления, чтобы всем вместе выигрывaть зa счет бaнкометa.

Тaкое нaпрaвление предстaвляется перспективным, но вместе с тем довольно неопределенным. Кaк именно могли бы сходные друг с другом индивидуумы собирaться вместе, обрaзуя локaльные скопления? Очевиднaя причинa обрaзовaния тaких скоплений в природе - генетическaя близость, родство. Животные большинствa видов обычно живут поблизости от своих родных и двоюродных брaтьев и сестер, a не от кaких-то случaйных членов дaнной популяции. Это необязaтельно бывaет обусловлено их собственным выбором, a aвтомaтически вытекaет из присущей популяции "вязкости". Вязкость ознaчaет любую нaблюдaемую у индивидуумов тенденцию продолжaть жить вблизи того местa, где они родились.
93 Зойч
 
23.10.13
16:21
Все эти описания для анархических структур. Но даже у животных это не так
94 Кай066
 
23.10.13
16:22
Написано же, что стратегия кооперирования (и око за ока) действует только когда индивидов с такой стратегией больше 50 %. А когда в обществе 80 % нелогичных и нерациональных индивидов (а попросту мутаков)
95 FarFar
 
23.10.13
16:22
(92)
...
Поэтому, если дaже этa стрaтегия редко встречaется в популяции в целом, онa может быть широко рaспрострaненa локaльно. Нa некоем локaльном учaстке индивидуумы, использующие стрaтегию Око зa око, могут встречaться друг с другом достaточно чaсто, чтобы взaимное кооперировaние обеспечивaло им процветaние, несмотря нa то, что по рaсчетaм, исходящим из одной только глобaльной чaстоты в популяции в целом, может получиться, что их чaстотa ниже критической.
96 Кай066
 
23.10.13
16:22
токое общество наберёт меньше баллов
97 FarFar
 
23.10.13
16:24
(94) Поправка: нигде не написано про 50%. Рубежный коэффициент не обязательно 0.5
В некоторых других моделях, например: "Голуби-Ястребы" (чуть другая, но похожая игра) - там весьма дробный коэффициент равновесия. Например, на 5 голубей - 7 ястребов.
98 Кай066
 
23.10.13
16:24
К тому же в реальном обществе у нес не Повторяющаяся модель: нае..л оппонента и пошёл дальше
99 FarFar
 
23.10.13
16:25
(98) На чемпионате из (0) - там такие же условия. Программы не знали, второй игрок - обманывал до этого других, или нет.
100 Loyt
 
23.10.13
16:26
(87) Если знать будущее, можно разработать эгоистическую стратегию, нагибающую альтруистические. И нагибать для личной выгоды. Причём даже если все стратегии со временем переродятся в эгоистичные, те, кто стали эгоистами первыми окажутся в прибыли на общем уровне.
101 FarFar
 
23.10.13
16:28
(100) Вот программисты и старались придумать хитропопо-обманывающие стратегии. Но по результатам чемпионатов (с многими итерациями) - хитропопые "недобросовестные" стратегии все-равно равно или поздно вымирали:

В конце концов по прошествии примерно 1000 поколений дaльнейшие изменения обстaновки прекрaтились. Былa достигнутa стaбильность. До этого блaгосостояние рaзличных стрaтегий возрaстaло и пaдaло, точно тaк же, кaк при компьютерном моделировaнии стрaтегий Плутов, Простaков и Злопaмятных. Некоторые стрaтегии пошли нa убыль с сaмого нaчaлa, a к 200-му поколению большaя их чaсть вымерлa. Однa или две из непорядочных стрaтегий стaли встречaться все чaще, однaко их процветaние, кaк и у Простaкa в моей модели, было недолгим. Единственнaя непорядочнaя стрaтегия, сохрaнившaяся по прошествии 200 поколений, былa стрaтегия под нaзвaнием Хaррингтон. Выигрыши этой стрaтегии резко возрaстaли нa протяжении первых 150 поколений, a зaтем довольно медленно снижaлись, и стрaтегия прaктически вымерлa к 1000-му поколению. Стрaтегия Хaррингтон былa успешной в течение некоторого времени по той же причине, что и моя оригинaльнaя стрaтегия Плут. Онa эксплуaтировaлa придурков вроде стрaтегии Око зa двa окa, покa они еще существовaли. Зaтем, после того кaк эти придурки были доведены до вымирaния, стрaтегия Хaррингтон, лишившись легкой добычи, последовaлa зa ними. Аренa окaзaлaсь свободной для тaких добропорядочных, но дерзких стрaтегий, кaк Око зa око.
102 Кай066
 
23.10.13
16:28
(97) Если в одноходовой игре в любом случае доминирует стратегия предать, то в многоходовой оптимальная стратегия зависит от поведения других участников. К примеру, если среди населения все друг друга обманывают, а один ведёт себя по принципу «око за око», он оказывается в небольшом проигрыше из-за потери на первом ходе. В такой популяции оптимальная стратегия — всегда предавать. Если же число исповедующих принцип «око за око» больше, то результат уже зависит от их доли в обществе.
зависит от доли в обществе, т.е. от структуры общества, т.е. не в каждом обществе стратегия актуальна
103 Loyt
 
23.10.13
16:29
(99) Нет, не такие же. Представь, что победитель, "око за око", играет с каждой программой только одну игру. То есть всегда кооперируется. В зависимости от количества программ, начинающих игру с отказа, он вполне может жёстко вдуть.
104 FarFar
 
23.10.13
16:30
(103) Соревнование из одной игры с каждого с каждым представляет мало интереса.
105 Gantosha
 
23.10.13
16:30
так люди не живут вечно и самое главное не обязаны следовать однотипной стратегии.
106 Loyt
 
23.10.13
16:31
(101) Дык в мире идёт игра с нулевой суммой.
107 FarFar
 
23.10.13
16:31
(106) Нет, в мире игра идет не с нулевой суммой.
108 Loyt
 
23.10.13
16:31
(104) Ога, зато лучше иллюстрирует пример (98)
109 FarFar
 
23.10.13
16:32
(107) Мы можем либо с тобой скооперироваться и вдвоем поймать одного оленя: "я пугаю - ты в засаде", либо не кооперироваться и помереть с голоду. Природа = банкомат
110 Gantosha
 
23.10.13
16:33
в мире можно играть в игры с отрицательной суммой .. кстати вот я тут кинул ссылку, там как раз про это ..и математика там не работает совсем.
111 Loyt
 
23.10.13
16:33
(107) В определённом приближении. То есть, скажем, богатство - оно относительное, только на фоне более низкого уровня богатства других.
112 FarFar
 
23.10.13
16:35
(108) В мире простаков (одноходном) - обманывать выгодно. Но в дальнейшем, из-за успеха обманщиков - мир перестает быть миром простаков, а обманщики жестко страдают, когда взаимно отказываются. У Докинза одна из предыдущих глав про "Голуби - Ястребы", что наступает порог, когда экономически эффективнее становится быть голубем, а не ястребом, просто потому, что ястребы слишком сильно теряют от взаимодействия (драк) друг с другом.
113 Пенза58
 
23.10.13
16:37
(57) > Он знает как ты будешь действовать исходя из результатов его действий.

> В результате, все будут думая о своей выгоде, угождать обществу.

Это при условии, что все действуют рационально.

Люди однако далеко не всегда поступают, только когда очень тщательно подумав.
114 Loyt
 
23.10.13
16:37
(112) Ога. Дык и происходит скатывание в потенциальную яму.
115 NS
 
23.10.13
16:38
(104) В соревновании каждого с каждым победит оптимальная стратегия, которая для этой игры элементарно высчитывается чуть-ли не в уме.
116 FarFar
 
23.10.13
16:38
(111) А в природе на "относительность" богатства (относительно одного соседа) никому нет дела (из-за многочисленных конкурирующих видов). Важнее иметь богатство абсолютное, чтобы число особей твоей популяции было достаточно большим, чтобы быть сохраниться как при соревновании с соседями или хищниками, или при потерях при стихийных бедствиях.
117 Loyt
 
23.10.13
16:39
(116) А при чём тут природа, если речь шла про общество и индивидуальные стратегии. Эгоисту плевать на абсолютное богатство общества, важнее личное относительное богатство.
118 FarFar
 
23.10.13
16:41
(117) Игра имитирует процессы в популяциях любых видов живых организмов, не только в человеческом обществе.
119 Пенза58
 
23.10.13
16:41
(73)
> Казалось бы почему? Но изучив Докинза и результаты чемпионата стратегий Аксельрода - понимаем что это КООПЕРИРУЮСЬ

Это не верное мнение.

В теме Кооперация - это рациональный выбор.

Ты говоришь совсем про другое.

Это чистые инстинкты без рационализации на уровне индивидуума.
120 Loyt
 
23.10.13
16:42
(118) Ну я-то комментировал конкретно анархию, в которой якобы эгоистам выгодны стратегии альтруистов. Это вызывает сомнения.
121 FarFar
 
23.10.13
16:43
(119) Точнее так. В теме из (0) КООПЕРАЦИЯ - это поиск лучшей стратегии выживания, вне зависимости от "хочу/не хочу" индивидуума.
122 Пенза58
 
23.10.13
16:43
(76) >Есть такие вещи как известность  , слава , тщеславие , узнаваемость.

Эти вещи выработаны эволюцией.

И они что характерно в целом рациональные на уровне вида.

Т.е. для вида с чисто эгоистичной точьки зрения выгодно, чтобы особи имели такие характеристики.

Т.е. это тот же самый разумный эгоизм.
123 FarFar
 
23.10.13
16:44
(121) Лучшей стратегии для популяции, для ее сохранения и процветания.
124 Пенза58
 
23.10.13
17:03
(79)
> Что "допропорядочные" и "кооперирующиеся" стратегии могут выжить и впоследствии благоденствовать, даже в мире, где преобладают "хитрецы". Фича в том, что они могут "жить обособленно", и получать большие выигрыши, играя преимущественно друг с другом, а не с обманщиками.

Самое смешное, что Докинз является противником религии, хотя именно в религия в доступной форме пропагандирует именно это стратегию.

А вот эти вот научные модели доступны далеко не всем.

В результате Дннкиз против всякой логики выступает против своей же стратгии.
125 FarFar
 
23.10.13
17:12
(124) Докинз - атеист.
А религия, как "Вера в Бога" и как "Свод нравственных норм" - это же совсем разные вещи. Можно быть атеистом, и наслаждаться  исполнением "Ave Maria" одновременно.
126 FarFar
 
23.10.13
17:16
(124) Кроме того, Докинз не призывает всех кооперироваться и быть добрыми и пушистыми. Его дело, как ученого - установить факты. Например, факт, что при большинстве начальных условии успешной стратегией является стратегия "око за око". А уж его личное отношение  к этому факту - дело десятое.
127 Пенза58
 
23.10.13
17:23
(125)
> А религия, как "Вера в Бога" и как "Свод нравственных норм" - это же совсем разные вещи.

Два вопроса:

1. Религия пропагандирует правильную стратегию?
2. Какой процент населения РФ способны вкурить то о чем говорится в этой теме.
128 Пенза58
 
23.10.13
17:24
(126)
> Докинз не призывает всех кооперироваться и быть добрыми и пушистыми. Его дело, как ученого - установить факты. Например, факт, что при большинстве начальных условии успешной стратегией является стратегия "око за око".

Это и есть самая правильная пропаганда.
129 FarFar
 
23.10.13
17:25
(124) Кстати, Иисус рекомендовал стратегию: "Око за 490 ок"

http://www.foru.ru/slovo.20736.4.html

(Матф.18:20-22)
"Тогда подошел к Нему Петр и спросил: - Господь, сколько раз должен я прощать брата, если он передо мной провинится? Семь раз?
Нет, не семь, а семьдесят раз по семь, - отвечает ему Иисус.
Наш милосердный Господь в Своем долготерпении установил: не семь. А семьдесят раз по семь."

Хорошо, добавлю в список стратегий "Стратегия Иисуса". Потом посмотрю, насколько она будет успешной в чемпионате.

Господа! Кроме Иисуса и меня кто-нибудь еще стратегию предложит???
130 FarFar
 
23.10.13
17:26
(127) Сделаю чемпионат, включу туда "Стратегию Иисуса", увидим.
131 FarFar
 
23.10.13
17:28
(129) Точнее, Стратегия Иисуса это "Око за 491 око".
Потому что "Око за око" - мстит сразу.
"Око за два ока" - прощает один обман второго игрока.
Значит, если нужно прощать 490 раз, это стратегия "Око за 491 око".
132 Пенза58
 
23.10.13
17:32
(129) Ты теплое с мягким не путай.

Простить это отношение в голове.

Можно не злиться, а спокойно вырабатывать правильную стратегию.
133 FarFar
 
23.10.13
17:46
(132) Где это сказано, что это только "отношение в голове"?

Типа "я тебя простил, но фиг я тебе еще рубль в долг дам" ?
134 FarFar
 
23.10.13
17:49
(132) Прощать в голове можно хучь мильон раз. Если это по карману не бьет - жалко что ли )))
135 Пенза58
 
23.10.13
17:53
(134) > Прощать в голове можно хучь мильон раз.

Да ну? Надеюсь ты понимаешь, что это не так.
136 Пенза58
 
23.10.13
17:59
(133) > Где это сказано, что это только "отношение в голове"?

Это следует из значения слова "прощать".

Ну и вообще это общая идея Евангелия.

> Типа "я тебя простил, но фиг я тебе еще рубль в долг дам" ?

Смотря под какие условия рубль давался, если в долг с возвратом, и причины того человек не вернул именно в нем, тогда: "без залога в долг не дам".
137 Пенза58
 
23.10.13
18:00
(133)
> Типа "я тебя простил, но фиг я тебе еще рубль в долг дам" ?

Это, кстати, довольно много.

Многие придут с топором свой рубль возвращать.
138 FarFar
 
23.10.13
18:02
(136) Не доказал. Для меня, например, слово "Простить" - это значит так простить, как будто бы вины вообще не было.

Я не вижу в цитате из (129), что Иисус имел ввиду именно твое понимание слова "Простить"
139 FarFar
 
23.10.13
18:05
(138) Ну, а в общем, у нас тут не богословский спор. В рамках чемпионата, интересно проверить идею Иисуса именно в понимании "полного" прощения. Потому что "прощение только в голове" в рамки игры не впихивается.
140 Lama12
 
23.10.13
18:07
(139) Чемпионат-то делать будем?
141 Lama12
 
23.10.13
18:09
Даешь банкомат на платформе 1С!
Каждый пишет своего бота на игру.
Кстати, задачка интересная и вроде должна быть простой :)
Могу поучаствовать в написании. Но не быстро.
142 FarFar
 
23.10.13
18:09
(140) Конечно!
143 Зойч
 
23.10.13
18:09
В таком чемпионате результат стратегии очень много зависит от состава участников.
Ибо нет стратегии выигрышной всегда
144 Lama12
 
23.10.13
18:11
(142) Давай описание API. Буду писать свою стратегию :)
145 FarFar
 
23.10.13
18:11
(141) Программирования тут немного. Интересно бы суметь сделать конструктор алгоритмов, чтобы не описывать каждый алгоритм кодом (скорее всего, многие из них сильно отличаться не будут). А если на конструктор не заморачиваться - то тут программежа часов на 16, чтобы закодировать несколько простых стратегий, сталкивать их между собой, и считать баллы (вариант 1, когда кол-во экземпляров стратегий в процессе чемпионата не меняется).
Вариант, когда баллы выплачиваются кол-вом экземпляров стратегий в популяции в следующей итерации - посложнее, но тоже не запуск протона.
146 FarFar
 
23.10.13
18:12
(144) Стратегию ты тут можешь в словах написать.
147 FarFar
 
23.10.13
18:15
(141) Еще бы не интересная задача! Проверить Аксельрода и Творца )))
148 Lama12
 
23.10.13
18:19
(146) Пожалуйста.
В самом начале 3 раза верим одному и тому же.Далее смотрим, если не обманывал, то верим дальше. Если обманывал один раз, то вероятность следующего не доверия 1/10. Линейно снижается. Так не менее 20 раз. потом верим опять до первого вранья.
Если обманул 2 раза, то не верим 10 ходов, потом верим с увеличивающейся вероятностью от 0.5 до 1 в течении 10 ходов.
Если обманул 3 раза подряд, то не верим 40 ходов. Потом в течении 30 ходов вероятность доверия линейно увеличивается от 0 до 1 естественно случайно. Можно взять нормальное распределение.
Как то так.
149 FarFar
 
23.10.13
18:20
(144) На вход функции (твоего алгоритма) могу подать структуру, содержащую нужные тебе параметры (ключ/значение). Например,
Номер хода = 5
Количество моих баллов = 3
Результат моей предыдущей игры с этим партнером = 0
и т.д., все что тебе нужно для работы алгоритма.

На выходе - от тебя либо "Ложь" ("Отказываюсь), либо "Истина" ("кооперируюсь")
150 Lama12
 
23.10.13
18:20
Кстати, если цена произрыша/выигрыша меняется, то стратегия тоже меняется :)
151 FarFar
 
23.10.13
18:21
(150) Возьмем таблицу бонусов/премий из ссылки в (0).

"взaимное Кооперировaние - 3 очкa; Риск - 5 очков; Нaкaзaние зa взaимный откaз - 1 очко (эквивaлент небольшого штрaфa в игре, описaнной рaнее); Штрaф Простaку - 0 очков"
152 FarFar
 
23.10.13
18:22
(150) Прочитай, плиз, всю 12-ю главу из (0)
153 Lama12
 
23.10.13
18:23
(151) Я про другое. Например, цена кооперации, риска и наказания первые 10 ходов - одна, а на каждый 11 ход стоимость может увеличиваться в 5 раз.  В такую играл в жизни :)
154 Lama12
 
23.10.13
18:23
(152) Ок.
155 FarFar
 
23.10.13
18:26
(153) Пока не будем усложнять. При таких раскладах, возможной стратегией на первые 10 ходов будет "копить хорошую карму и доверие обывателей, а на 11 всех надуть по крупному". Хотя может "допропорядочные" стратегии и при таких раскладах победят.
156 Lama12
 
23.10.13
18:27
(155) Не победят. :(
Столько слез было.
Хотя сейчас вспоминать приятно :)
157 Wasya
 
23.10.13
19:05
С точки зрения классической теории игр надо всегда предлагать кооперацию. Но кидал надо наказывать.
Поэтому нужна "добрая стратегия с кулаками".

1) Неизвестному игроку, всегда предлагать кооперацию.
2) Если он тоже предлагает кооперацию, то продолжать в том же духе.
3) Если противник вас кинул. Выставив отказ. То он вас наказал на 300+100 баксов. То далее такому игроку предлагать отказ. До тех пор пока он вам не выплатит неустойку, выставив на ваш прогнозируемый отказ, кооперацию. После чего такому игроку можно снова предлагать кооперацию.
158 FarFar
 
23.10.13
19:15
(157) слово "прогнозируемый" смущает. Не факт, что другой игрок умеет вообще "прогнозировать". Если читать фразу просто как "До тех пор пока он вам не выплатит неустойку, выставив на ваш отказ, кооперацию" - то стратегия понятна. Запишу ее. Название "Добрая стратегия с кулаками от Wasya"
159 FarFar
 
23.10.13
19:19
Пока накидал структуру конфы, справочники:
"Стратегии"
"Параметры стратегий"
"Чемпионаты"
"Матчи"

и регистр сведений "Партии".

Забил в "Стратегии" следующие:

Всегда отказываюсь
Всегда кооперируюсь
Око за око
Око за два ока
Лучшие практики (автор - FarFar)
Око за 491 ок (автор - Иисус)
Добрая стратегия с кулаками (Автор - Wasya)
Вера с увеличивающейся вероятностью (автор - Lama12)

завтра продолжу.
160 Loyt
 
24.10.13
08:09
(158) Дык судя по описанию, Вася просто пересказал то самое "око за око" своими словами.
161 Пенза58
 
24.10.13
08:20
(138) > Не доказал. Для меня, например, слово "Простить" - это значит так простить, как будто бы вины вообще не было.

Ты путаешь слова "Простить" и "Забыть".

> Я не вижу в цитате из (129), что Иисус имел ввиду именно твое понимание слова "Простить"

Потому что это цитата.

Надо брать учение христианства в целом.

И оно относится к страстям в голове человека.

Можно не верить или даже избивать человека. не держа на него зла или даже делать это с любовью к нему.
162 Loyt
 
24.10.13
08:30
(124) Что за чушь? С чего это Докинз выступает против своей стратегии? Религия что, исчерпывается теоретической стратегией? Или без религии люди не кооперируются?

Ну и, кстати, победила-то совсем не стратегия всепрощения.
163 Loyt
 
24.10.13
08:32
(161) "Можно не верить или даже избивать человека. не держа на него зла или даже делать это с любовью к нему." - фига себе заявка.

Я думал, что подобное психопатией зовётся. А тут вон оно что, Михалыч.
164 Пенза58
 
24.10.13
08:45
(139) > В рамках чемпионата, интересно проверить идею Иисуса именно в понимании "полного" прощения. Потому что "прощение только в голове" в рамки игры не впихивается.

Может потому, что модель ущербная?

И надо добавить элемент мести?

И вообще усложнить модель.

Вот есть некоторый счетчик который считает годы.

За год каждый участник получает монетку, если сидел в тюрьме монетку не получаешь.

Можно совершить преступление(вернее пакет состоящий из большого преступления и маленького преступления).

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

Дальше классическая дилемма большим и маленьким преступлением.

Если сложилась ситуация: 0-10.

После отсидки тот кто мотал червонец может: (и вот тут как раз включается модель Христа) простить (но не забыть) или отомстить(тогда он получает 5 монеток, а тот кто не сидел уменьшает свои капиталы на 5 монеток (или на 10 если учитывать оплату больницы)).

И тут опять возникает дилемма: согласится с наказанием или настучать полиции, если настучал то может вернутся 2 монеты, но после отсидки возможна новая месть.

З.Ы. Возможно пропорции надо поменять.

З.З.Ы. Можно еще добавить. что за год жизни не только зарабатывается монетка, но и тратится 0.5 монетки.
165 Пенза58
 
24.10.13
08:50
(163) > "Можно не верить или даже избивать человека. не держа на него зла или даже делать это с любовью к нему." - фига себе заявка.

> Я думал, что подобное психопатией зовётся. А тут вон оно что, Михалыч.

Вот допустим у тебя есть родственник или даже ребенок к которым ты позитивно относишься.

Допустим родственник наркоман, он тебя просит денег на что-то там. Не смотря на твое позитивное в целом отношение, ты ему поверишь или будешь считать, что наркоманам верить нельзя?

Или вот у тебя есть ребенок, который плохо себя ведет, если просто объяснять ему, что он поступил не хорошо, из него вырастет скотина, т.е. надо пороть, не смотря на то, что ты его любишь и хочешь для него лучшего.
166 Fedot200
 
24.10.13
09:16
как сермяжный смысл во всей этой белебетристике?
167 Fedot200
 
24.10.13
09:16
как = какой
168 Пенза58
 
24.10.13
09:49
(166) Эгоизм в классическом понимании, не предполагает прощения, доверия, добра.

Предполагаются, что это только мешают.

Но данная модель показывает, что в описанных условиях, эти качества отнюдь не лишние.
169 Loyt
 
24.10.13
09:50
(168) Начнём сначала, о какой, собственно, модели вообще речь?
170 Пенза58
 
24.10.13
09:56
(169) Дилемма заключенного, вернее Повторяющаяся дилемма заключенного.
171 Loyt
 
24.10.13
10:07
(169) Получается, ты просто озвучил выводы из (0) своими словами?
172 Lama12
 
24.10.13
10:23
(159) FarFar Когда результаты будут?
Может функцию какую написать?
173 FarFar
 
24.10.13
10:27
(160) Да, еще раз прочитал - алгоритм Васи это "око за око", только более витиевато выраженное.

(172) Дай мне еще денек, сегодня постараюсь днем часик выделить на доработку конфы, чтобы можно было запускать игру.
174 Fedot200
 
24.10.13
10:28
(173) было бы интересно поиграть.
175 FarFar
 
24.10.13
10:34
(172) Напиши саму функцию разового выполнения стратегии, с учетом того, что она потребует себе на вход заранее оговоренные параметры.

То есть, я сейчас планирую хранить код стратегии в текстовом поле, выполнять через "Выполнить". В ходе выполнения этого кода твоему алгоритму может потребоваться какой то параметр. Например "НомерХодаВМатче". Когда приходит время обратиться к нему, то он: 1. Ищется среди уже рассчитанных на этом ходу "общих" параметров 2. Если еще не рассчитан - рассчитывается и передается тебе обратно в твою функцию.
Описания самих параметров (их код выполнения) - хранятся  в отдельном справочнике "ПараметрыСтратегий".
176 antgrom
 
24.10.13
10:36
вам не кажется что ваши алгоритмы слишком сильно завязаны на конкретном соотношении размеров штрафов и премий.
Я читал про такие игры - соотношение штрафов и премий может быть другим и т.о. стратегия поменяется ...
177 FarFar
 
24.10.13
10:41
(176) Это можно будет проверить, в рамках условий "Парадокса заключенного"

wiki:Дилемма_заключённого

Если оба выбрали «сотрудничать», оба получают C. Если один выбрал «предать», другой «сотрудничать» — первый получает D, второй с. Если оба выбрали «предать» — оба получают d.

Значения переменных C, D, c, d могут быть любого знака (в примере выше все меньше либо равны 0). Обязательно должно соблюдаться неравенство D > C > d > c, чтобы игра представляла собой «Дилемму заключённого» (ДЗ).

Если игра повторяется, то есть играется больше 1 раза подряд, общий выигрыш от сотрудничества должен быть больше суммарного выигрыша в ситуации, когда один предаёт, а другой — нет, то есть 2C > D + c
178 Lama12
 
24.10.13
13:17
(175) Немного алгоритмизировал...

//Входные параметры
    НомерХода    = 0; //
    Партнер        = "Имя";
    
    
    
    //Переменные
    Результат = Истина;
    ГлубинаНеверия[1] = 10; //Обманывали 1 раз в пределах 30 ходов.
    ГлубинаНеверия[2] = 20; //Обманывали 2 раза в пределах 30 ходов.
    ГлубинаНеверия[3] = 30; //Обманывали 3 раза в пределах 30 ходов.
    
    Если НомерХода > 3 Тогда
    
        КоличествоОбманов = СколькоОбманулЗаПоследние30Ходов(Партнер); //Функция возвращает число от 0 до 3. Количество обманов за 30 ходов. При количестве больше 3, возвращается 3.
        ПоследнийОбман = КоличествоХодовОтПоследнегоОбмана(Партнер, НомерХода); //Функция возвращает количество ходов от последнего обмана.
        
        Если КоличествоОбманов = 0 Тогда
        
            Результата = Истина;
            
        Иначе
            ГСЧ = Новый ГенераторСлучайныхЧисел();
            Случайность = ГСЧ.СлучайноеЧисло(0,100);
            
            Длина = ГлубинаНеверия[КоличествоОбманов];
            
            Результат = ?(ПоследнийОбман>Длина,Истина,Случайность  > Длина - ПоследнийОбман);
        
        КонецЕсли;
    
    КонецЕсли;
    
    Возврат Результат;


Думаю 2 функции сам напишешь, у меня не хватает информации о структуре данных.
179 Lama12
 
24.10.13
13:21
Хе... немного ошибся :)

Вот эти строки поменять
Случайность = ГСЧ.СлучайноеЧисло(0,100);
            
            Длина = ГлубинаНеверия[КоличествоОбманов];

на

Вот эти строки поменять
Длина = ГлубинаНеверия[КоличествоОбманов];

Случайность = ГСЧ.СлучайноеЧисло(0,Длина);
            



И без отладки сложно :)
180 Lama12
 
24.10.13
13:21
Хребанный копипаст...


Длина = ГлубинаНеверия[КоличествоОбманов];

Случайность = ГСЧ.СлучайноеЧисло(0,Длина);

Это правильно
181 FarFar
 
24.10.13
13:50
(178) У меня идет нормально, стратегии уже умеют играть друг с другом в рамках чемпионата.
Алгоритмы стратегий пока задавал жесткими функциями, попробую твой алгоритм вставить.
Но это ближе к вечеру, пока надо пообедать и поработать.
182 Deal with it
 
24.10.13
14:09
(181) если не затруднит, можешь в итоге выложить конфу куда-нибудь в общий доступ? Мы с коллегам с удовольствием сыграем и отпишем результаты)
183 FarFar
 
24.10.13
14:53
(182) Будет в более-менее товарном виде - выложу.
184 FarFar
 
24.10.13
17:26
Забирайте, что есть на текущий момент.

http://webfiles.ru/files/38548172
пароль 123456

В dt-шнике тестовый чемпионат, с 3 стратегиями ("всегда кооперируюсь", "всегда отказываюсь", "случайная").

Их алгоритмы описаны в пользовательском режиме, в справочнике "Стратегии".

Загружаете dt-шник, открываете в пользовательском режиме обработку СЭЭ, выбираете единсвенный тестовый чемпионат, нажимаете "Старт чемпионата".

Результаты конкретных игр можно посмотреть, открыв элемент "тестовый чемпионат", а далее через "Перейти" / "партии"

Открывать в толстом клиенте, обычном приложении.

Lama12 - твою стратегию пока не реализовал, она требует вычисления внешних параметров. Это - завтра.
185 Lama12
 
24.10.13
17:26
Ну как там?
Какие стратегии побеждают?
И сколько ходов всего в чемпионате?
250 или больше?
186 Lama12
 
24.10.13
17:26
Хы... :)
187 Зойч
 
24.10.13
17:28
(184) око за око почто не реализовал? подключаемые обработки/модули стратегий реализовал?
188 Зойч
 
24.10.13
17:28
а если не по очкам, а эло реализовать? кто будет в фаворе?
189 FarFar
 
24.10.13
17:29
(185) В этих трех - лидер "Всегда отказываюсь". На втором месте стабильно "случайная". Наивная "Всегда кооперируюсь" - обычно в хвосте.

(185) Сколько ходов - настраивается в карточке чемпиионата. Все гибко )))

(187) Для "око за око" надо реализовать вычисление параметров в процессе выполнения стратегии. Надо это сделать гибко и удобно, то есть завтра.
190 Зойч
 
24.10.13
17:29
191 FarFar
 
24.10.13
17:53
(190) Исходная задача - проверить Аксельрода, с его методами проведения чемпионата, оценками в баллах.
ЭЛО и прочие системы оценки - второстепенная задача. Хочешь - реализуй.

Господа программисты!
Пока я получил внятный алгоритм только от Lama12, FarFar и Иисуса. Алгоритм Wasya, увы, не принят - так как это описанное "Око за око".

Подтягивайтесь! Автор стратегии-победителя получит награду!
192 antgrom
 
24.10.13
17:57
Предлагаю стратегию "анти око за око" т.е. "злом за добро и добром за зло"

Самому тестить лень
193 antgrom
 
24.10.13
17:58
+(192) первый ход : отказываюсь.
194 FarFar
 
24.10.13
18:03
(192) Сумасшедшая стратегия. Ок, принимается. Как будет называться, "Злом за добро, добром за зло" ?
195 Deal with it
 
24.10.13
18:31
(194) назови "Противная" )))
196 FarFar
 
24.10.13
18:33
(195) Название должно отражать суть, чтобы не запутаться. Эта - какая то крэзи...шизанутая. Будет "Злом за добро, добром за зло".
197 antgrom
 
24.10.13
19:45
(194) " Как будет называться, "Злом за добро, добром за зло" ?"

Да
198 FarFar
 
24.10.13
21:43
(197) Еще вариант названия этой алогичной стратегии - "Садомазохист"
199 Lama12
 
25.10.13
09:57
Вариант названия - антипод.
200 Lama12
 
25.10.13
10:50
FarFar зарегистрируйся под другой учеткой и дай результаты чемпионата. :)
201 Пенза58
 
25.10.13
11:00
(191) Для чистоты эксперимента, нужно несколько случайных стратегий, которые будут выдавать результат от балды.
202 Lama12
 
25.10.13
11:11
(201) Случайная стратегия есть. Я тут подумал, было бы хорошо увеличить число участников хотя бы до 10*(количество стратегий).
Т.е. представителей каждой стратегии должно быть не меньше 10.
Вот тогда будут интересные результаты, и статистически значимые при количестве экспериментов больше 100.
203 Lama12
 
25.10.13
16:37
FarFar, реинкарнируйся!
Как там чемпионат?
204 FarFar
 
25.10.13
16:48
Ура! Во имя торжества науки меня выпустили из Азкабана на 5 минут передать народу радостную весть!

Ловите программу со стратегиями "Око за око", "Око за два ока", "Добром за зло, злом за добро". Плюс можно описывать свои стратегии в пользовательском режиме. Lama12 - опиши свою, плиз, по аналогии, потом мне скинешь код.

http://webfiles.ru/files/38562145
пароль 123456

В карточке чемпионата есть галка "Стратегия играет сама с собой". Можно ее снимать (для отладки), но в боевом чемпионате она должна быть включена. Тогда, например, стратегия "Всегда отказываюсь" будет играть в том числе со стратегией "Всегда отказываюсь" тоже.

Для игры пока доступны и отлажены следующие стратегии:
- Всегда кооперируюсь
- Всегда отказываюсь
- Око за око
- Случайная ("антистратегия")
- Злом за добро, добром за зло, "анти око за око" (автор - antgrom)
- Око за два ока

по умолчанию, у "случайной" галка "Играю" выключена, так как вносит элемент хаоса в стройную теорию, и, вдобавок, хорошо играет )))
205 Зойч
 
25.10.13
16:51
Эло реализиовал?
206 FarFar
 
25.10.13
16:52
(205) Даже не думал. Я программу пишу в перерывах между работой, между прочим. Сначала - все четко по Аксельроду. Следующее по плану - выплата "зарплаты" стратегий не в баллах, а в количестве особей в следующем поколении. Но это уже в понедельник, не раньше.
207 FarFar
 
25.10.13
16:55
(202) я в (0) писал "для полноценного чемпионата нужно хотя бы десяток"

Так что давайте, не пылитесь на задворках научного прогресса, подкидывайте стратегии!
208 Зойч
 
25.10.13
16:55
(206) в чем суть тогда твоей задумки? проверить правильность того что в книге написано?
209 FarFar
 
25.10.13
16:56
(208) Да, это основная цель. А то книги Аксельрода и Докинза известны всему миру, а вдруг там туфта ?!?
210 Зойч
 
25.10.13
16:56
(207) доступ к истории ходов в течении партии есть?
211 Зойч
 
25.10.13
16:57
(209) какие основание не доверять ему? И что именно ты хочешь проверить?
212 FarFar
 
25.10.13
16:57
(210) Да, есть. Через карточку "Чемпионат", "перейти", "партии"
213 Зойч
 
25.10.13
16:57
(212) програмно для стратегии
214 FarFar
 
25.10.13
16:58
(211) Я хочу получить сходные результаты. Пока, например, я таковых не получаю. На 5-6 стратегиях стратегия "Око за око" не побеждает. А в лидерах "Всегда отказываюсь".

Да ты не ленись! Скачай ссылку и поиграйся. Неужели не интересно?
215 Зойч
 
25.10.13
16:59
(214) пока эло не реализуешь не очень
216 FarFar
 
25.10.13
16:59
(213) Да, есть. И даже ты это можешь увидеть, такой механизм используют стратегии "око за око", "око за два ока", "анти око за око".
217 FarFar
 
25.10.13
16:59
(215) Ушел посыпать голову пеплом.
218 Зойч
 
25.10.13
16:59
только эло может дать более менее объективную оценку силы стратегии
219 FarFar
 
25.10.13
17:02
(218) С какой стати? ЭЛО применяется, потому что в реальном мире, каждый игрок не может сыграть с каждым. А у меня в чемпионате каждая стратегия играет с каждый, причем сколько угодно раз.
220 FarFar
 
25.10.13
17:02
(219) В файлике, который выложил, длина матча "каждый с каждым" указана 100 партий. Можно делать намного больше.
221 FarFar
 
25.10.13
17:28
Однако вижу 5 скачиваний с webfiles!
222 antgrom
 
25.10.13
17:29
я скачал
223 Зойч
 
25.10.13
17:30
сама с собой стратегия играет?
224 akronim
 
25.10.13
17:31
Как бы интуитивно понятно, что при большом количестве игр "око за око" будет иметь успех. Из-за этой "интуитивности" считал ДЗ в каноническом виде вырожденной игрой - и так все ясно. И был неправ. Несколько месяцев назад случайно наткнулся на коротенькую новость, что бригада европейских математиков нашла более хорошую стратегию. Подробностей, к сожалению, не было. Если найду на выходных новость, попробую добыть подробности.
225 antgrom
 
25.10.13
17:32
1000 ходов
выиграла "Всегда отказываюсь"
16 020 баллов

при прочих стандартных настройках
226 Зойч
 
25.10.13
17:34
Зависит от соотношения злых/добрых стратегий
227 Зойч
 
25.10.13
17:34
Добавить бы 100 случайных стратегий
228 FarFar
 
25.10.13
17:38
(223) "В карточке чемпионата есть галка "Стратегия играет сама с собой". Можно ее снимать (для отладки), но в боевом чемпионате она должна быть включена. Тогда, например, стратегия "Всегда отказываюсь" будет играть в том числе со стратегией "Всегда отказываюсь" тоже."

(227) Планирую сделать, чтобы кол-во экземпляров стратегии можно было задавать в начале чемпионата. Пока поле такое сделал, число там хранится, но никак не используется.
229 FarFar
 
25.10.13
17:40
(224) Пока "око за око" не всегда даже 2-е место завоевывает. Ее теснит либо "случайная" (да, она часто на 2-м месте, особенно без галки игры сама с собой), либо аномальная "добром за зло" мистянина antgrom
230 Зойч
 
25.10.13
17:41
Если играют все со всеми то всегда будет в фаворе Кидающая стратегия
231 FarFar
 
25.10.13
17:41
(224) "при большом количестве игр" - возможно, при разнообразии стратегий. У Аксельрода она имела успех, но когда стратегий было заметно больше (15, а потом 63)
232 antgrom
 
25.10.13
17:42
считаю , что важно - поставить жизненные очки
Сейчас поставил :
взаимная кооперация +5
взаимный отказ -1
обман другого  +6
обманули меня  -6


1000 ходов

выиграло "Око за око"
233 FarFar
 
25.10.13
17:43
(230) Выбери в чемпионат следующих игроков:
"всегда отказываюсь"
"око за око"
"око за два ока"

и будет наглядная демонстрация, как две "добропорядочные" стратегии уделывают обманщика
234 antgrom
 
25.10.13
17:43
(230) зависит от начисляемых очков - будут ли отрицательные.
235 FarFar
 
25.10.13
17:44
(232)
Я взял таблицу очков, которую использовал Аксельрод в своих исследованиях.

Чтобы не нарушать принципы "Парадокса заключенного", таблица бонусов/штрафов должна удовлетворять параметрам:

wiki:Дилемма_заключённого

Если оба выбрали «сотрудничать», оба получают C. Если один выбрал «предать», другой «сотрудничать» — первый получает D, второй с. Если оба выбрали «предать» — оба получают d.
Значения переменных C, D, c, d могут быть любого знака (в примере выше все меньше либо равны 0). Обязательно должно соблюдаться неравенство D > C > d > c, чтобы игра представляла собой «Дилемму заключённого» (ДЗ).
Если игра повторяется, то есть играется больше 1 раза подряд, общий выигрыш от сотрудничества должен быть больше суммарного выигрыша в ситуации, когда один предаёт, а другой — нет, то есть 2C > D + c (объяснение см. ниже).
Эти правила были установлены Дугласом Хофштадтером и образуют каноническое описание типичной дилеммы заключённого.
236 Wasya
 
25.10.13
17:45
(233) Глубокая жизненная идея! Порядочные люди живут хорошо, когда их в обществе большинство!
237 antgrom
 
25.10.13
17:48
(235) у меня так же :
D > C > d > c,
+6 , +5 , -1 , -6
238 antgrom
 
25.10.13
17:49
и
2C > D + c
соблюдается
239 FarFar
 
25.10.13
17:55
(237), (238)
Ок, значит ты исследуешь "дилемму заключенного" с допустимыми параметрами. Я - тоже с допустимыми, но с теми, которые использовал Аксельрод.

Интересно, если увеличить число стратегий - найдется ли самая лучшая стратегия, которая будет побеждать при любых допустых параметрах?

Вот закодирую свою "лучшие практики" - она всех как Тузик тряпку порвет!
240 antgrom
 
25.10.13
17:58
я к жизни приближаю.
Про мало хороших и много плохих людей :
с параметрами +6 , +5 , -1 , -6
два "око за око" рвут пятерых "всегда отказываюсь"
241 FarFar
 
25.10.13
17:59
Кстати, господа, на предлагаемые стратегии накладываю ограничение:

Стратегия не должна использовать "внесистемные" знания о других стратегиях. Нельзя тупо кодировать: "Если противник - "всегда отказываюсь", то отказывать ему".

Зато разрешаю использовать любую статистику по прошедшим партиям, до текущего хода. Например, если идет партия № 10, то результаты всех прошедших 9 - в Вашем распоряжении. Кто как с кем сыграл, какую карту положил, сколько баллов набрал.
242 Зойч
 
25.10.13
18:00
Партия - это ход?
243 FarFar
 
25.10.13
18:01
(241), (242) Чемпионат в программе сейчас проходит так:

Играется круг (партия) № 1. Все играют со всеми, набирают баллы. Потом идет круг № 2, и так далее, до самого конца. То есть нет такого, что две стратегии сначала рубятся 100 партий, потом следующие две.
244 Зойч
 
25.10.13
18:03
(243) в партии сколько ходов?
245 FarFar
 
25.10.13
18:04
(244) В "партии" один ход.
246 FarFar
 
25.10.13
18:08
(244)
Имеем стратегии:
"око за око"
"всегда отказываюсь"
"всегда кооперируюсь"

значение "Количество партий в матче" = 2
галку "стратегия играет сама с собой"  - снимем.


Будет сыграно:

Круг (партия) номер 1:
"око за око" - "всегда отказываюсь"
"око за око" - "всегда кооперируюсь"
"всегда отказываюсь" - "всегда кооперируюсь"

Круг (партия) номер 2:
"око за око" - "всегда отказываюсь"
"око за око" - "всегда кооперируюсь"
"всегда отказываюсь" - "всегда кооперируюсь"
247 Wasya
 
25.10.13
18:09
(240) Эх если бы в жизни так было.
248 FarFar
 
25.10.13
18:13
(240)
"я к жизни приближаю. Про мало хороших и много плохих людей :"

Кстати, еще замечание: за счет того, что на свете живут незлобливые "всегда кооперируюсь" - процветают обманщики "всегда отказываюсь" с их большим бонусом за обман простаков.
249 Lama12
 
25.10.13
23:05
Чемпионат = сВход.Чемпионат;
Стратегия = сВход.Стратегия;
НомерХода    = сВход.НомерПартии;; //
Партнер        = сВход.Оппонент;;

//Переменные
Результат = Истина;
ГлубинаНеверия = Новый Массив(3);
ГлубинаНеверия[0] = 10; //Обманывали 1 раз в пределах 30 ходов.
ГлубинаНеверия[1] = 20; //Обманывали 2 раза в пределах 30 ходов.
ГлубинаНеверия[2] = 30; //Обманывали 3 раза в пределах 30 ходов.


Если НомерХода > 3 Тогда
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ ПЕРВЫЕ 30
    |    ВЫБОР
    |        КОГДА Партии.Карта = ИСТИНА
    |            ТОГДА 0
    |        ИНАЧЕ 1
    |    КОНЕЦ КАК Поле1,
    |    Партии.НомерПартии,
    |    23 КАК Поле2
    |ИЗ
    |    РегистрСведений.Партии КАК Партии
    |ГДЕ
    |    Партии.Чемпионат = &Чемпионат
    |    И Партии.Стратегия = &Стратегия
    |    И Партии.Оппонент = &Оппонент
    |
    |УПОРЯДОЧИТЬ ПО
    |    Партии.НомерПартии УБЫВ";
    
    Запрос.УстановитьПараметр("Чемпионат", Чемпионат);
    Запрос.УстановитьПараметр("Оппонент", Партнер);
    Запрос.УстановитьПараметр("Стратегия", Стратегия);
    
    
    Сумма = Запрос.Выполнить().Выгрузить().Свернуть("Поле2","Поле1");
    
    КоличествоОбманов = ?(Сумма>3,3,Сумма);
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |    МАКСИМУМ(Партии.НомерПартии) КАК НомерПартии
    |ИЗ
    |    РегистрСведений.Партии КАК Партии
    |ГДЕ
    |    Партии.Чемпионат = &Чемпионат
    |    И Партии.Стратегия = &Стратегия
    |    И Партии.Оппонент = &Оппонент
    |    И НЕ Партии.Карта";
    
    Рез = Запрос.Выполнить();
    НомЕнд = НомерХода;
    Если НЕ Рез.Пустой() Тогда
        Выборка = Рез.Выбрать();
        Выборка.Следующий();
        НомЕнд = Выборка.НомерПартии;
    КонецЕсли;
    ПоследнийОбман = НомерХода- НомЕнд; //Функция возвращает количество ходов от последнего обмана.
    
    
    Если КоличествоОбманов = 0 Тогда
        
        Результата = Истина;
        
    Иначе
        ГСЧ = Новый ГенераторСлучайныхЧисел();
        Длина = ГлубинаНеверия[КоличествоОбманов-1];
        Случайность = ГСЧ.СлучайноеЧисло(0,Длина);
        
        
        Результат = ?(ПоследнийОбман>Длина,Истина,Случайность  > Длина - ПоследнийОбман);
        
    КонецЕсли;
    
КонецЕсли;

РезультатВыполнения =  Результат;
250 Lama12
 
25.10.13
23:18
накосячил :)
исправляюсь
251 Lama12
 
25.10.13
23:18
буду отлаживаться...
252 FarFar
 
26.10.13
00:06
(249)
вываливалось с ошибками. Пришлось заменить:

вместо:
Сумма = Запрос.Выполнить().Выгрузить().Свернуть("Поле2","Поле1");

вставил:
    тз= Запрос.Выполнить().Выгрузить();
    тз.Свернуть("Поле2","Поле1");
    Сумма = тз.Итог("Поле1");


перед:
ПоследнийОбман = НомерХода- НомЕнд;

добавил:
Если НомЕнд = NULL Тогда
        НомЕнд = 0;
КонецЕсли;

потому что НомЕнд может быть равно NULL


В итоге, текст стратегии стал такой:

Чемпионат = сВход.Чемпионат;
Стратегия = сВход.Стратегия;
НомерХода    = сВход.НомерПартии;; //
Партнер        = сВход.Оппонент;;

//Переменные
Результат = Истина;
ГлубинаНеверия = Новый Массив(3);
ГлубинаНеверия[0] = 10; //Обманывали 1 раз в пределах 30 ходов.
ГлубинаНеверия[1] = 20; //Обманывали 2 раза в пределах 30 ходов.
ГлубинаНеверия[2] = 30; //Обманывали 3 раза в пределах 30 ходов.


Если НомерХода > 3 Тогда
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ ПЕРВЫЕ 30
    |    ВЫБОР
    |        КОГДА Партии.Карта = ИСТИНА
    |            ТОГДА 0
    |        ИНАЧЕ 1
    |    КОНЕЦ КАК Поле1,
    |    Партии.НомерПартии,
    |    23 КАК Поле2
    |ИЗ
    |    РегистрСведений.Партии КАК Партии
    |ГДЕ
    |    Партии.Чемпионат = &Чемпионат
    |    И Партии.Стратегия = &Стратегия
    |    И Партии.Оппонент = &Оппонент
    |
    |УПОРЯДОЧИТЬ ПО
    |    Партии.НомерПартии УБЫВ";
    
    Запрос.УстановитьПараметр("Чемпионат", Чемпионат);
    Запрос.УстановитьПараметр("Оппонент", Партнер);
    Запрос.УстановитьПараметр("Стратегия", Стратегия);
    
    тз= Запрос.Выполнить().Выгрузить();
    тз.Свернуть("Поле2","Поле1");
    Сумма = тз.Итог("Поле1");
    
    КоличествоОбманов = ?(Сумма>3,3,Сумма);
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |    МАКСИМУМ(Партии.НомерПартии) КАК НомерПартии
    |ИЗ
    |    РегистрСведений.Партии КАК Партии
    |ГДЕ
    |    Партии.Чемпионат = &Чемпионат
    |    И Партии.Стратегия = &Стратегия
    |    И Партии.Оппонент = &Оппонент
    |    И НЕ Партии.Карта";
    
    Рез = Запрос.Выполнить();
    НомЕнд = НомерХода;
    Если НЕ Рез.Пустой() Тогда
        Выборка = Рез.Выбрать();
        Выборка.Следующий();
        НомЕнд = Выборка.НомерПартии;
    КонецЕсли;

    Если НомЕнд = NULL Тогда
        НомЕнд = 0;
    КонецЕсли;
    ПоследнийОбман = НомерХода- НомЕнд; //Функция возвращает количество ходов от последнего обмана.
    
    
    Если КоличествоОбманов = 0 Тогда
        
        Результата = Истина;
        
    Иначе
        ГСЧ = Новый ГенераторСлучайныхЧисел();
        Длина = ГлубинаНеверия[КоличествоОбманов-1];
        Случайность = ГСЧ.СлучайноеЧисло(0,Длина);
        
        
        Результат = ?(ПоследнийОбман>Длина,Истина,Случайность  > Длина - ПоследнийОбман);
        
    КонецЕсли;
    
КонецЕсли;

РезультатВыполнения =  Результат;


с таким кодом она в чемпионате с длиной матча 100 ходов против всех стратегий сыграла "Кооперация" и разделила последние места с "Всегда кооперируюсь" )))
253 FarFar
 
26.10.13
00:08
P.S. Научи тут на Мисте код под спойлер прятать
254 Otkr
 
26.10.13
00:22
(253) 300 р на телефон
255 FarFar
 
26.10.13
00:25
(254) Перевел
256 FarFar
 
26.10.13
01:20
(251) Lama12 - будешь отлаживать свой алгоритм - перескачай мою внешнюю обработку:
http://webfiles.ru/files/38567210
пароль 123456

Я туда вывел таблички Общей статистики по выбранной стратегии, и результаты ее партий с выбранным оппонентом. Чтобы по регистрам не лазить.

Обновление - по кнопочкам "Обновить" :-)  Делал дома, монитор не широкий, поэтому может малость перекосячено.
257 sda553
 
26.10.13
11:17
Только сейчас заметил эту тему. На мой взгляд, если все время выбирать "отказываюсь" то либо выигрыш, либо ничья. Т.е. получается беспроигрышная стратегия
258 FarFar
 
26.10.13
11:55
(257) Если для тебя цель - обыграть одного единственного партнера - то да.
Но при этом вы оба, скорее всего, наберете очень мало очков, так как оба будете отказываться. В этом и есть парадокс.

В условиях же турнира, когда есть много разных стратегий, "допропорядочные" стратегии, которые часто кооперируются друг с другом, будут набирать много очков за счет взаимной кооперации и обойдут по баллам "всегда отказчика", даже если "отказчик" не проиграет ни одной из них по баллам в "своих" партиях.
259 Lama12
 
26.10.13
12:13
исправил :)
работает

Чемпионат = сВход.Чемпионат;
Стратегия = сВход.Стратегия;
НомерХода    = сВход.НомерПартии;; //
Партнер        = сВход.Оппонент;;

//Переменные
Отладка = Истина;
Результат = Истина;
ГлубинаНеверия = Новый Массив(3);
ГлубинаНеверия[0] = 10; //Обманывали 1 раз в пределах 30 ходов.
ГлубинаНеверия[1] = 20; //Обманывали 2 раза в пределах 30 ходов.
ГлубинаНеверия[2] = 30; //Обманывали 3 раза в пределах 30 ходов.

Если Отладка Тогда
    ЗаписьЖурналаРегистрации("Отладка",,,,"Номер хода" + НомерХода,);    
КонецЕсли;
Если НомерХода > 3 Тогда
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ ПЕРВЫЕ 30
    |    ВЫБОР
    |        КОГДА Партии.ОппонентКарта = ИСТИНА
    |            ТОГДА 0
    |        ИНАЧЕ 1
    |    КОНЕЦ КАК Поле1,
    |    Партии.НомерПартии,
    |    23 КАК Поле2
    |ИЗ
    |    РегистрСведений.Партии КАК Партии
    |ГДЕ
    |    Партии.Чемпионат = &Чемпионат
    |    И Партии.Стратегия = &Стратегия
    |    И Партии.Оппонент = &Оппонент
    |
    |УПОРЯДОЧИТЬ ПО
    |    Партии.НомерПартии УБЫВ";
    
    Запрос.УстановитьПараметр("Чемпионат", Чемпионат);
    Запрос.УстановитьПараметр("Оппонент", Партнер);
    Запрос.УстановитьПараметр("Стратегия", Стратегия);
    
    ТЗ_Р = Запрос.Выполнить().Выгрузить();
    ТЗ_Р.Свернуть("Поле2","Поле1");
    Сумма = ТЗ_Р[0].Поле1;                
    КоличествоОбманов = ?(Сумма>3,3,Сумма);
    
    Если Отладка Тогда
    ЗаписьЖурналаРегистрации("Отладка",,,,"Количество обманов" + КоличествоОбманов,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Чемпионат" + Чемпионат,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Партнер" + Партнер,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Стратегия" + Стратегия,);
    КонецЕсли;
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |    МАКСИМУМ(Партии.НомерПартии) КАК НомерПартии
    |ИЗ
    |    РегистрСведений.Партии КАК Партии
    |ГДЕ
    |    Партии.Чемпионат = &Чемпионат
    |    И Партии.Стратегия = &Стратегия
    |    И Партии.Оппонент = &Оппонент
    |    И НЕ Партии.ОппонентКарта";
    
    Рез = Запрос.Выполнить();
    НомЕнд = НомерХода;
    Если НЕ Рез.Пустой() Тогда
        Выборка = Рез.Выбрать();
        Выборка.Следующий();
        НомЕнд = Выборка.НомерПартии;
        НомЕнд = ?(НомЕнд = null,0,НомЕнд);
    КонецЕсли;
    ПоследнийОбман = НомерХода- НомЕнд; //Функция возвращает количество ходов от последнего обмана.
    
    
    Если Отладка Тогда
    ЗаписьЖурналаРегистрации("Отладка",,,,"ПоследнийОбман" + ПоследнийОбман,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Чемпионат" + Чемпионат,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Партнер" + Партнер,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Стратегия" + Стратегия,);
    КонецЕсли;

    
    Если КоличествоОбманов = 0 Тогда
        
        Результата = Истина;
        
    Иначе
        ГСЧ = Новый ГенераторСлучайныхЧисел();
        Длина = ГлубинаНеверия[КоличествоОбманов-1];
        Случайность = ГСЧ.СлучайноеЧисло(0,Длина);
        
        
        Если Отладка Тогда
        ЗаписьЖурналаРегистрации("Отладка",,,,"Длина" + Длина,);
        ЗаписьЖурналаРегистрации("Отладка",,,,"Случайность" + Случайность,);
        ЗаписьЖурналаРегистрации("Отладка",,,,"ПоследнийОбман" + ПоследнийОбман,);
        ЗаписьЖурналаРегистрации("Отладка",,,,"Длина - ПоследнийОбман" + (Длина - ПоследнийОбман),);
        КонецЕсли;

        
        Результат = ?(ПоследнийОбман>Длина,Истина,Случайность  > Длина - ПоследнийОбман);
        
    КонецЕсли;
    
КонецЕсли;

РезультатВыполнения =  Результат;
260 Lama12
 
26.10.13
12:14

Чемпионат = сВход.Чемпионат;
Стратегия = сВход.Стратегия;
НомерХода    = сВход.НомерПартии;; //
Партнер        = сВход.Оппонент;;

//Переменные
Отладка = Истина;
Результат = Истина;
ГлубинаНеверия = Новый Массив(3);
ГлубинаНеверия[0] = 10; //Обманывали 1 раз в пределах 30 ходов.
ГлубинаНеверия[1] = 20; //Обманывали 2 раза в пределах 30 ходов.
ГлубинаНеверия[2] = 30; //Обманывали 3 раза в пределах 30 ходов.

Если Отладка Тогда
    ЗаписьЖурналаРегистрации("Отладка",,,,"Номер хода" + НомерХода,);    
КонецЕсли;
Если НомерХода > 3 Тогда
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ ПЕРВЫЕ 30
    |    ВЫБОР
    |        КОГДА Партии.ОппонентКарта = ИСТИНА
    |            ТОГДА 0
    |        ИНАЧЕ 1
    |    КОНЕЦ КАК Поле1,
    |    Партии.НомерПартии,
    |    23 КАК Поле2
    |ИЗ
    |    РегистрСведений.Партии КАК Партии
    |ГДЕ
    |    Партии.Чемпионат = &Чемпионат
    |    И Партии.Стратегия = &Стратегия
    |    И Партии.Оппонент = &Оппонент
    |
    |УПОРЯДОЧИТЬ ПО
    |    Партии.НомерПартии УБЫВ";
    
    Запрос.УстановитьПараметр("Чемпионат", Чемпионат);
    Запрос.УстановитьПараметр("Оппонент", Партнер);
    Запрос.УстановитьПараметр("Стратегия", Стратегия);
    
    ТЗ_Р = Запрос.Выполнить().Выгрузить();
    ТЗ_Р.Свернуть("Поле2","Поле1");
    Сумма = ТЗ_Р[0].Поле1;                
    КоличествоОбманов = ?(Сумма>3,3,Сумма);
    
    Если Отладка Тогда
    ЗаписьЖурналаРегистрации("Отладка",,,,"Количество обманов" + КоличествоОбманов,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Чемпионат" + Чемпионат,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Партнер" + Партнер,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Стратегия" + Стратегия,);
    КонецЕсли;
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |    МАКСИМУМ(Партии.НомерПартии) КАК НомерПартии
    |ИЗ
    |    РегистрСведений.Партии КАК Партии
    |ГДЕ
    |    Партии.Чемпионат = &Чемпионат
    |    И Партии.Стратегия = &Стратегия
    |    И Партии.Оппонент = &Оппонент
    |    И НЕ Партии.ОппонентКарта";
    
    Рез = Запрос.Выполнить();
    НомЕнд = НомерХода;
    Если НЕ Рез.Пустой() Тогда
        Выборка = Рез.Выбрать();
        Выборка.Следующий();
        НомЕнд = Выборка.НомерПартии;
        НомЕнд = ?(НомЕнд = null,0,НомЕнд);
    КонецЕсли;
    ПоследнийОбман = НомерХода- НомЕнд; //Функция возвращает количество ходов от последнего обмана.
    
    
    Если Отладка Тогда
    ЗаписьЖурналаРегистрации("Отладка",,,,"ПоследнийОбман" + ПоследнийОбман,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Чемпионат" + Чемпионат,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Партнер" + Партнер,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Стратегия" + Стратегия,);
    КонецЕсли;

    
    Если КоличествоОбманов = 0 Тогда
        
        Результата = Истина;
        
    Иначе
        ГСЧ = Новый ГенераторСлучайныхЧисел();
        Длина = ГлубинаНеверия[КоличествоОбманов-1];
        Случайность = ГСЧ.СлучайноеЧисло(0,Длина);
        
        
        Если Отладка Тогда
        ЗаписьЖурналаРегистрации("Отладка",,,,"Длина" + Длина,);
        ЗаписьЖурналаРегистрации("Отладка",,,,"Случайность" + Случайность,);
        ЗаписьЖурналаРегистрации("Отладка",,,,"ПоследнийОбман" + ПоследнийОбман,);
        ЗаписьЖурналаРегистрации("Отладка",,,,"Длина - ПоследнийОбман" + (Длина - ПоследнийОбман),);
        КонецЕсли;

        
        Результат = ?(ПоследнийОбман>Длина,Истина,Случайность  > Длина - ПоследнийОбман);
        
    КонецЕсли;
    
КонецЕсли;

РезультатВыполнения =  Результат;
261 Lama12
 
26.10.13
12:15
осталось подобрать имперически величину анализируемой истории.
30 ходов будет на определенной длине матча оптимальной :)
262 Lama12
 
26.10.13
12:25
тест сворачивания кода

654654
263 Lama12
 
26.10.13
12:26
... что б код свернулся нужно заглавную английскую С написать а скобках.
264 FarFar
 
26.10.13
12:31
(261) Длина матча заранее неизвестна.
265 Lama12
 
26.10.13
12:32
266 Lama12
 
26.10.13
12:33
(264) Ну можно функцию сделать что б длина недоверия зависила линейно от длины матча :)
267 Lama12
 
26.10.13
12:35
Если очень интересно, могу модернизировать бота под переменную длину матча (если конечно она будет передаваться)
268 Lama12
 
26.10.13
12:36
Кстати, с удовольствием бы посмотрел бота от NS
269 FarFar
 
26.10.13
12:44
(267) Увы, знание о длине матча использовать в алгоритмах нельзя. Это особо оговариавлось у Аксельрода. Объяснение:
wiki:Дилемма_заключённого


"Если ПДЗ играется ровно N раз (некая известная константа N), есть ещё один интересный факт. Равновесие Нэша — всегда предавать. Доказываем по индукции: если оба сотрудничают, на последнем ходу выгодно предать, тогда у соперника не будет возможности отомстить. Поэтому оба предадут друг друга на последнем ходу. Раз соперник предаст на последнем ходу в любом случае, любой игрок захочет предать на предпоследнем ходу, и так далее. Чтобы сотрудничество оставалось выгодным, необходимо, чтобы будущее было неопределённым для обоих игроков."
270 Lama12
 
26.10.13
12:52
(269) ну тогда можно по другому сделать глубину гибкой. :)
В общем если обыграешь моего бота, буду делать улучшения.
271 FarFar
 
26.10.13
13:15
(270) Отличные результаты игры твоей стратегии подтверждаю. Занимает первое место.
Включил в стратегии своей базы. Только флаг "Отладка" поставил равным "Ложь", чтобы не писала отладочную информацию в журнал регистрации.

Буду готовить ответный удар ))

(268) Разве NS сумеет написать такую сложную стратегию?!? Это же не шахматы )))
272 FarFar
 
26.10.13
13:16
А кто-нибудь из уважаемых модераторов может "скрыть" в этой ветке длинные фрагменты кода для лучшего восприятия?
273 FarFar
 
26.10.13
13:18
(270) Lama12 - прошу по своей стратегии предоставить краткое описание, которое я помещу в "Комментарий". Чтобы по коду не восстанавливать ход твоих мыслей.
274 Lama12
 
26.10.13
13:25
Новому участнику верим 3 раза, потом, от количества обманов, пропорционально увеличиваем доверие от 0 до 1 помноженное на 10 и на количество обманов за последние 30 ходов.
275 FarFar
 
26.10.13
15:03
(274) Получай гранату "А ты кто такой?":
http://i058.radikal.ru/1310/f4/acf7d7a756ab.png

В общем, то, стратегия похожа на твою, только проще (придумал вчера, независимо от тебя, реализовал сегодня). Первый ход - "Кооперация", а дальше смотрится соотношение кол-во выложенных соперником "Отказов" к прошедшему кол-ву партий. Если коэффициент >=0.1, то выкладываю Отказ, иначе - кооперируюсь.
Не очень доверчивая стратегия )))

А вообще, 500 партий на матч - это сурово. Давайте предварительные чемпионаты проводить на 100, и без случайной. А потом, когда будем играть итоговый - со случайной и на большее число.
На таких условиях "А ты кто такой?" тоже побеждает:
http://i074.radikal.ru/1310/6d/81bac9d67331.png

А вообще, интересно увидеть более недобропорядочные стратегии. Благо есть куда развиваться!!!

Выложил базу со стратегией Lama12 и моей "А ты кто такой?", а также версией обработки "СЭЭ" с окнами статистики^
http://webfiles.ru/files/38571841
пароль 123456
276 Lama12
 
28.10.13
10:46
Мда... не выходит каменный цветок :)

Зато придумал стратегию с названием "Противоречивая девочка"


Чемпионат = сВход.Чемпионат;
Стратегия = сВход.Стратегия;
НомерХода    = сВход.НомерПартии;; //
Партнер        = сВход.Оппонент;;

//Переменные
Отладка = Ложь;
Результат = Истина;



Если НомерХода > 3 Тогда
    
    Запрос = Новый Запрос;

    
    Запрос.УстановитьПараметр("Чемпионат", Чемпионат);
    Запрос.УстановитьПараметр("Оппонент", Партнер);
    Запрос.УстановитьПараметр("Стратегия", Стратегия);
    
    
    
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |    СУММА(1) КАК Поле1
    |ИЗ
    |    РегистрСведений.Партии КАК Партии
    |ГДЕ
    |    Партии.Чемпионат = &Чемпионат
    |    И Партии.Стратегия = &Стратегия
    |    И Партии.Оппонент = &Оппонент
    |    И НЕ Партии.ОппонентКарта";
    
    Рез = Запрос.Выполнить();
    КолОбманов = 0;
    Если НЕ Рез.Пустой() Тогда
        Выборка = Рез.Выбрать();
        Выборка.Следующий();
        КолОбманов = Выборка.Поле1;
        КолОбманов = ?(КолОбманов = null,0,КолОбманов);
    КонецЕсли;//Количество обманов
    
    

    
    
        ГСЧ = Новый ГенераторСлучайныхЧисел();

        Случайность = ГСЧ.СлучайноеЧисло(0,1000);
        
        
        

        
        Результат = Случайность  > 1000*(1-(НомерХода - КолОбманов)/НомерХода);
        
  
    
КонецЕсли;



РезультатВыполнения =  Результат;


И хочет, и может, и иногда говорит да.

В адаптации своей, пока в функциях запутался.
Ну на всякий случай тоже выкладываю.


Чемпионат = сВход.Чемпионат;
Стратегия = сВход.Стратегия;
НомерХода    = сВход.НомерПартии;; //
Партнер        = сВход.Оппонент;;

//Переменные
Отладка = Ложь;
Результат = Истина;
ГлубинаНеверия = Новый Массив(3);
ГлубинаНеверия[0] = 10; //Обманывали 1 раз в пределах 30 ходов.
ГлубинаНеверия[1] = 20; //Обманывали 2 раза в пределах 30 ходов.
ГлубинаНеверия[2] = 30; //Обманывали 3 раза в пределах 30 ходов.

Если Отладка Тогда
    ЗаписьЖурналаРегистрации("Отладка",,,,"Номер хода" + НомерХода,);    
КонецЕсли;
Если НомерХода > 3 Тогда
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ ПЕРВЫЕ 30
    |    ВЫБОР
    |        КОГДА Партии.ОппонентКарта = ИСТИНА
    |            ТОГДА 0
    |        ИНАЧЕ 1
    |    КОНЕЦ КАК Поле1,
    |    Партии.НомерПартии,
    |    23 КАК Поле2
    |ИЗ
    |    РегистрСведений.Партии КАК Партии
    |ГДЕ
    |    Партии.Чемпионат = &Чемпионат
    |    И Партии.Стратегия = &Стратегия
    |    И Партии.Оппонент = &Оппонент
    |
    |УПОРЯДОЧИТЬ ПО
    |    Партии.НомерПартии УБЫВ";
    
    Запрос.УстановитьПараметр("Чемпионат", Чемпионат);
    Запрос.УстановитьПараметр("Оппонент", Партнер);
    Запрос.УстановитьПараметр("Стратегия", Стратегия);
    
    ТЗ_Р = Запрос.Выполнить().Выгрузить();
    ТЗ_Р.Свернуть("Поле2","Поле1");
    Сумма = ТЗ_Р[0].Поле1;                
    КоличествоОбманов = ?(Сумма>3,3,Сумма);
    
    Если Отладка Тогда
    ЗаписьЖурналаРегистрации("Отладка",,,,"Количество обманов" + КоличествоОбманов,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Чемпионат" + Чемпионат,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Партнер" + Партнер,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Стратегия" + Стратегия,);
    КонецЕсли;
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |    МАКСИМУМ(Партии.НомерПартии) КАК НомерПартии
    |ИЗ
    |    РегистрСведений.Партии КАК Партии
    |ГДЕ
    |    Партии.Чемпионат = &Чемпионат
    |    И Партии.Стратегия = &Стратегия
    |    И Партии.Оппонент = &Оппонент
    |    И НЕ Партии.ОппонентКарта";
    
    Рез = Запрос.Выполнить();
    НомЕнд = НомерХода;
    Если НЕ Рез.Пустой() Тогда
        Выборка = Рез.Выбрать();
        Выборка.Следующий();
        НомЕнд = Выборка.НомерПартии;
        НомЕнд = ?(НомЕнд = null,0,НомЕнд);
    КонецЕсли;
    ПоследнийОбман = НомерХода- НомЕнд; //Функция возвращает количество ходов от последнего обмана.
    
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |    СУММА(1) КАК Поле1
    |ИЗ
    |    РегистрСведений.Партии КАК Партии
    |ГДЕ
    |    Партии.Чемпионат = &Чемпионат
    |    И Партии.Стратегия = &Стратегия
    |    И Партии.Оппонент = &Оппонент
    |    И НЕ Партии.ОппонентКарта";
    
    Рез = Запрос.Выполнить();
    КолОбманов = 0;
    Если НЕ Рез.Пустой() Тогда
        Выборка = Рез.Выбрать();
        Выборка.Следующий();
        КолОбманов = Выборка.Поле1;
        КолОбманов = ?(КолОбманов = null,0,КолОбманов);
    КонецЕсли;//Количество обманов
    
    Если Отладка Тогда
    ЗаписьЖурналаРегистрации("Отладка",,,,"ПоследнийОбман" + ПоследнийОбман,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Чемпионат" + Чемпионат,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Партнер" + Партнер,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Стратегия" + Стратегия,);
    КонецЕсли;

    
    Если КоличествоОбманов = 0 Тогда
        
        Результата = Истина;
        
    Иначе
        ГСЧ = Новый ГенераторСлучайныхЧисел();
        Длина = ГлубинаНеверия[КоличествоОбманов-1];
        Случайность = ГСЧ.СлучайноеЧисло(0,Длина);
       Длина = Длина + 2*(Цел(НомерХода/30))* КолОбманов/НомерХода;
        
        Если Отладка Тогда
        ЗаписьЖурналаРегистрации("Отладка",,,,"Длина" + Длина,);
        ЗаписьЖурналаРегистрации("Отладка",,,,"Случайность" + Случайность,);
        ЗаписьЖурналаРегистрации("Отладка",,,,"ПоследнийОбман" + ПоследнийОбман,);
        ЗаписьЖурналаРегистрации("Отладка",,,,"Длина - ПоследнийОбман" + (Длина - ПоследнийОбман),);
        КонецЕсли;

        
        Результат = ?(ПоследнийОбман>Длина,Истина,Случайность  > (Длина - ПоследнийОбман)); //
        
    КонецЕсли;
    
КонецЕсли;

//Включаем дурачку

Если Результат И НомерХода > 30  Тогда

    
    
    ГСЧ = Новый ГенераторСлучайныхЧисел();
    Случайность = ГСЧ.СлучайноеЧисло(0,100);
    
    Результат = ?(Случайность > 98*(НомерХода-КолОбманов)/НомерХода, Ложь, Истина); //Извени любимая. Так получилось.
    
    
КонецЕсли;

РезультатВыполнения =  Результат;
277 Lama12
 
28.10.13
10:47
Еще участники будут?
278 FarFar
 
28.10.13
10:56
(276) Так для "Противоречивой девочки" какой код брать? Второй или первый? Напиши кратко алгоритм "девочки" для вставки в комментарий.
279 Lama12
 
28.10.13
11:00
Первый - это противоречивая девочка.
Второй это вариант моей адаптации к длине матча. Но адаптация не работает пока :) Играет хуже чем предыдущий алгоритм.
Описание к девочке.
В зависимости, от соотношений обманул, не обманул, случайно выбирает согласиться или отказать. Т.е. если партнер больше обманывал, то она более вероятно откажет. Если партнер, больше соглашался, то и она согласится.
280 FarFar
 
28.10.13
11:04
(279) Тогда девочка очень даже логичная и непротиворечивая ))
281 Lama12
 
28.10.13
11:11
(280) Так "ломается", поэтому девочка, а т.к. отказывает иногда и "хорошим мальчикам", поэтому противоречивая. :)
282 FarFar
 
28.10.13
11:30
(281) То есть, непротиворечивая девочка должна не отказывать ни одному хорошему мальчику? Класс!
283 Lama12
 
28.10.13
11:42
(282) а то :)
Только это будет уже не девочка. :(
284 FarFar
 
28.10.13
11:42
"Девочку" добавил. При текущем составе чемпионата - обычно конкурирует с "Око за око" за 3-4 место.
Посмотрим, что будет дальше, когда стратегий будет больше.

Необязательно придумывать очень уж хитрые стратегии с претензией сразу на 1-место. Приветствуются любые, лишь бы идея была интересная. Стратегия, плохо играющая на числе участников 5, может всех драть на числе участников 50.
285 1dvd
 
28.10.13
12:02
Интересная темка. Жаль, времени нет
286 Ахиллес
 
28.10.13
12:03
Коза ностра. Всегда кооперируемся, предателей убиваем. Ну то есть после первого предательства вышибаем мозги бейсбольной битой создателю "предательской" стратегии.
287 FarFar
 
28.10.13
12:52
(286) Я правильно понял твою стратегию:
Первый ход - кооперация.
Далее - всегда кооперация, до первого "Отказа" противника. Если был отказ - более не кооперируемся никогда?
Такая "Стратегия - спусковой крючок".
288 Ахиллес
 
28.10.13
13:19
(287) Если был отказ, то убиваем противника, что бы он не мог больше ни одного хода сделать. И идём играть с другим :-)
289 FarFar
 
28.10.13
13:23
(288) Увы... таких прав программе твоей не могу дать.
290 Ахиллес
 
28.10.13
15:39
(289) Ты не понял. Если ты играешь с Коза ностра, то ты играешь по её правилам. Или спишь с рыбами :-)
291 Lama12
 
29.10.13
10:29
Пожалуй это последний вариант.

Чемпионат = сВход.Чемпионат;
Стратегия = сВход.Стратегия;
НомерХода    = сВход.НомерПартии;; //
Партнер        = сВход.Оппонент;;

//Переменные
Отладка = Ложь;
Результат = Истина;
ГлубинаНеверия = Новый Массив(3);
ГлубинаНеверия[0] = 10; //Обманывали 1 раз в пределах 30 ходов.
ГлубинаНеверия[1] = 20; //Обманывали 2 раза в пределах 30 ходов.
ГлубинаНеверия[2] = 30; //Обманывали 3 раза в пределах 30 ходов.

Если Отладка Тогда
    ЗаписьЖурналаРегистрации("Отладка",,,,"Номер хода" + НомерХода,);    
КонецЕсли;
Если НомерХода > 3 Тогда
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ ПЕРВЫЕ 30
    |    ВЫБОР
    |        КОГДА Партии.ОппонентКарта = ИСТИНА
    |            ТОГДА 0
    |        ИНАЧЕ 1
    |    КОНЕЦ КАК Поле1,
    |    Партии.НомерПартии,
    |    23 КАК Поле2
    |ИЗ
    |    РегистрСведений.Партии КАК Партии
    |ГДЕ
    |    Партии.Чемпионат = &Чемпионат
    |    И Партии.Стратегия = &Стратегия
    |    И Партии.Оппонент = &Оппонент
    |
    |УПОРЯДОЧИТЬ ПО
    |    Партии.НомерПартии УБЫВ";
    
    Запрос.УстановитьПараметр("Чемпионат", Чемпионат);
    Запрос.УстановитьПараметр("Оппонент", Партнер);
    Запрос.УстановитьПараметр("Стратегия", Стратегия);
    
    ТЗ_Р = Запрос.Выполнить().Выгрузить();
    ТЗ_Р.Свернуть("Поле2","Поле1");
    Сумма = ТЗ_Р[0].Поле1;                
    КоличествоОбманов = ?(Сумма>3,3,Сумма);
    
    Если Отладка Тогда
    ЗаписьЖурналаРегистрации("Отладка",,,,"Количество обманов" + КоличествоОбманов,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Чемпионат" + Чемпионат,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Партнер" + Партнер,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Стратегия" + Стратегия,);
    КонецЕсли;
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |    МАКСИМУМ(Партии.НомерПартии) КАК НомерПартии
    |ИЗ
    |    РегистрСведений.Партии КАК Партии
    |ГДЕ
    |    Партии.Чемпионат = &Чемпионат
    |    И Партии.Стратегия = &Стратегия
    |    И Партии.Оппонент = &Оппонент
    |    И НЕ Партии.ОппонентКарта";
    
    Рез = Запрос.Выполнить();
    НомЕнд = НомерХода;
    Если НЕ Рез.Пустой() Тогда
        Выборка = Рез.Выбрать();
        Выборка.Следующий();
        НомЕнд = Выборка.НомерПартии;
        НомЕнд = ?(НомЕнд = null,0,НомЕнд);
    КонецЕсли;
    ПоследнийОбман = НомерХода- НомЕнд; //Функция возвращает количество ходов от последнего обмана.
    
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |    СУММА(1) КАК Поле1
    |ИЗ
    |    РегистрСведений.Партии КАК Партии
    |ГДЕ
    |    Партии.Чемпионат = &Чемпионат
    |    И Партии.Стратегия = &Стратегия
    |    И Партии.Оппонент = &Оппонент
    |    И НЕ Партии.ОппонентКарта";
    
    Рез = Запрос.Выполнить();
    КолОбманов = 0;
    Если НЕ Рез.Пустой() Тогда
        Выборка = Рез.Выбрать();
        Выборка.Следующий();
        КолОбманов = Выборка.Поле1;
        КолОбманов = ?(КолОбманов = null,0,КолОбманов);
    КонецЕсли;//Количество обманов
    
    Если Отладка Тогда
    ЗаписьЖурналаРегистрации("Отладка",,,,"ПоследнийОбман" + ПоследнийОбман,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Чемпионат" + Чемпионат,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Партнер" + Партнер,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Стратегия" + Стратегия,);
    КонецЕсли;

    
    Если КоличествоОбманов = 0 Тогда
        
        Результата = Истина;
        
    Иначе
        ГСЧ = Новый ГенераторСлучайныхЧисел();
        Длина = ГлубинаНеверия[КоличествоОбманов-1];
        Случайность = ГСЧ.СлучайноеЧисло(0,Длина);
       //Длина = Длина + 2*(Цел(НомерХода/30))* КолОбманов/НомерХода;
        
        Если Отладка Тогда
        ЗаписьЖурналаРегистрации("Отладка",,,,"Длина" + Длина,);
        ЗаписьЖурналаРегистрации("Отладка",,,,"Случайность" + Случайность,);
        ЗаписьЖурналаРегистрации("Отладка",,,,"ПоследнийОбман" + ПоследнийОбман,);
        ЗаписьЖурналаРегистрации("Отладка",,,,"Длина - ПоследнийОбман" + (Длина - ПоследнийОбман),);
        КонецЕсли;

        
        Результат = ?(ПоследнийОбман>Длина,Истина,Случайность  > (Длина - ПоследнийОбман)); //
        
    КонецЕсли;
    
КонецЕсли;

//Включаем дурачку

Если Результат И НомерХода > 30  Тогда

    
    
    ГСЧ = Новый ГенераторСлучайныхЧисел();
    Случайность = ГСЧ.СлучайноеЧисло(0,100);
    
    Результат = ?(Случайность > 98 + 2 * (1-(НомерХода-КолОбманов)/НомерХода), Ложь, Истина); //Извени любимая. Так получилось. //
    
    
КонецЕсли;

РезультатВыполнения =  Результат;


Назовем его "Под дурочку". Тоже самое что и первый, но если соперник часто говорит "Да", то с вероятностью 0.03 пытаемся его обмануть.
292 FarFar
 
29.10.13
10:35
(291) Внесу. Мне еще несколько подкинули, их тоже добавлю.
293 SUA
 
29.10.13
12:43
"Блеф"
Алгоритм:
рандомизированное "Око за око"
1й ход матча = 10% отказ
в дальнейшем, отход от базовой стратегии:
если противник ставил "Отказ" - 20%*(кол-во его коопераций/кол-во прошедших партий) "кооперация"
если ставил "Кооперация" - 10% "Отказ"

Вот мой алгоритм
294 SUA
 
29.10.13
12:43
просто интересно как играть будет
295 FarFar
 
29.10.13
14:21
(293) Еще одна рандомайзная стратегия (((
296 FarFar
 
29.10.13
14:27
Не рандомайзные (или с минимумом рандома) - интереснее. Потому что это СТРАТЕГИЯ, а не "кинем кости, чё выпадет".
297 SUA
 
29.10.13
14:35
(295) 10% рандома - много?
можно пофиксить на нерандомную, 2 счетчика на противника
1й ход кооперация
ровно каждый 10й вместо "10%" отказ в ответ на кооперацию
и накопительная переменная на стратегию противника "доля прощения" - каждый раз после отказа противника плюсуем к ней 1/5*(кол-во его коопераций/кол-во прошедших партий), и при достижении 1+ зануляем и ставим кооперацию
298 FarFar
 
29.10.13
14:50
(291) "Под дурочку" вполне успеша в простом чемпионате.
http://s019.radikal.ru/i618/1310/7f/92a85b521e37.png

Но в "эволюции" (режим я реализовал), когда количество экземпляров стратегии на каждом следующем ходу зависит от успешности игры стратегии - "дурочка" намного менее успешная, чем "Вера с увеличивающейся" или "Наивная девочка". Она первые ходов 30-40 ведет себя успешно, выбираясь иногда даже на первое место по численности популяции.
А потом обычно начинает резко терять успешность:
http://s019.radikal.ru/i602/1310/de/949b2593f0ce.png

, и к 100 ходу обычно вымирает до нескольких экземпляров:
http://i031.radikal.ru/1310/1f/b5b7ccdd9578.png
299 FarFar
 
29.10.13
14:56
(297) Название "Блеф" оставишь?
300 Lama12
 
29.10.13
16:02
(298) Мда... а как определить сколько игр с экземпляром противника, сыграла та или иная стратегия? :)
301 FarFar
 
29.10.13
16:09
(300) В табличке "Статистика по стратегии".
Но в общем, чем меньше экземпляров данной стратегии остается в популяции, тем меньшее количество игр она играет. Это логично.

То есть, если у меня сталкиваются две стратегии, в одной 100 экземпляров, а в другой - 20 экземпляров, то я результат игры для каждой стороны умножаю на минимальное количество, то есть на 20. Сначала думал, что надо чтобы каждый экземпляр играл с каждым, но это лажа получалась.
302 Зойч
 
29.10.13
16:10
(301) для рандомных стратегий нельзя просто так умножать. Нужны честные игры
303 Lama12
 
29.10.13
16:14
(301) Убери вот этот кусок кода из "Под дурачка".

+ 2 * (1-(НомерХода-КолОбманов)/НомерХода)


Это для эволюции.
304 Зойч
 
29.10.13
16:15
тут бы по хорошему генетические алгоритмы применять
305 Lama12
 
29.10.13
16:20
(304) Их писать надо :)
И длина чемпионата не известна заранее.
Я исходил из следующих принципов (старался человеческое поведение моделировать).
30 ходов - длина памяти. Люди склонны забывать плохое.
Некоторая вероятность в принятие решения. Иногда решение принимается "на обум", но с учетом опыта.
Да, опыт строится за жизнь. У меня упрощенно :-)
Девочка - просто "Ощущение" основанное на не формализованном опыте. Я бы сказал - интуиция.
306 FarFar
 
29.10.13
16:23
(303) Я один и тот же алгоритм использую, для обычного чемпионата, и для эволюции.
Либо уберу совсем, либо две стратегии делать, отличающиеся одной строчкой (но этой фейк)
307 Lama12
 
29.10.13
16:23
Убирай совсем. Там по хорошему должна быть не линейная зависимость. Но думать уже не хочется :)
308 FarFar
 
29.10.13
16:27
(307) Вот тебе пока с прежним алгоритмом
http://webfiles.ru/files/38605776
пароль 123456
можешь погонять в режиме "Эволюции" (для этого в карточке чемпионата в поле "Максимальное количество экземпляров" должно стоять значение, отличное от 0).
А потом скажешь - вычеркивать или нет.
309 FarFar
 
29.10.13
16:28
(308) У меня на подходе еще 6 стратегий, 2 сам придумал (простенькие), 4 - накидали.
310 FarFar
 
29.10.13
16:29
(309) Так что мочилово будет еще то!
311 Lama12
 
29.10.13
16:31
(310) А караваны грабить можно? :)
312 FarFar
 
29.10.13
16:37
(311) Ага! Если "А ты кто такой?" начнет проигрывать - я напишу стратегию, переписывающую историю ))) Типа, будет прямо в регистр нужным людям баллы писать )))
313 FarFar
 
29.10.13
16:38
(311) Я, кстати, удивлен результатами "А ты кто такой". Придумал ее за 3 минуты, простая как репа. А поди ж ты, до сих пор на пъедестале.
314 FarFar
 
29.10.13
17:08
(307) Интересно видеть, как если "Стратегия" на первых ходах свалилась в "демографическую яму", то потом уже ей оттуда выбрать очень трудно.

Для примера - создал стратегию "Подростковый возраст", которая первые N ходов - выкладывает "Отказ", а дальше всегда "Кооперируюсь".

Так вот, если N = 2, то есть отказывается всего лишь первые 2 хода, то она улетает вниз, на последнее место, где то с 10 живыми особями, но потом за счет не слишком испорченной кармы, к 100-му ходу догоняет остальные "добропорядочные" стратегии по кол-ву экземпляров.
А вот если N = 3, то все, пипец. Уходит к 1-2 живой особи, откуда уже возврата в активную политику нет ))) (ну к карма подпорчена)
315 FarFar
 
29.10.13
17:17
(314) вот пример, как в чемпионате меняется кол-во экземпляров такого "трудного подростка" при n=2 по ходам:
1)1
2)40
3)145
4) 73
5)40
6)25
7)17
8)16
9)11
10) 8
11) 7
12) 6
13) 4
14) 4
15) 5
16) 6
17) 5
18) 5
и только на 30) 10 и далее по нарастающей. Её достаточно "простили", и она может расти за счет кооперации.
316 FarFar
 
29.10.13
17:25
(315) а если ставим N =3, то первые 20 ходов - примерно такие же результаты, но на 21-ом - сваливается до 1 экземпляра в популяции, и на этом будущее ее закончено. В одиночку размножиться трудно ))) За несколько чемпионатов - только один раз с N=3 "выбилась в люди"
317 Lama12
 
29.10.13
17:30
(316) Убери мои стратегии. 3 это из моих стратегий влияние.
318 FarFar
 
29.10.13
17:36
(317) Да )))  Именно присутствие твоих трех стратегий угоняет неудачников "ниже плинтуса", до полного вымирания или прозябания на уровне 1-2 особи.
Если твои 3 отключать, то все стратегии доживают до 100 хода, пусть с разными, но не мизерными показателями.

Твои - это просто "полиция нравов" какие то!!! Ух, жесткие.
319 FarFar
 
29.10.13
17:37
(317) Вот, можешь себе в свежескачанную базу добавить "Подростковый возраст":

сПарамВход = сВход;

Если сПарамВход.НомерПартии <= 3 Тогда

  РезультатВыполнения = Ложь;

Иначе


  РезультатВыполнения = Истина;

КонецЕсли;
320 Lama12
 
29.10.13
17:49
(319) Увы... только завтра утром. Не более 2 часов :)
Попробую завтра доработать "Под дурачка". Есть одна мысля.
321 FarFar
 
29.10.13
18:00
(320) Интересный таки эффект у твоей "Под дурочку". В простом чемпионате выступает хорошо, на уровне 2-3 места. А в "эволюции" до 50-60-х держится хорошо, а затем начинает сливать.
322 Lama12
 
29.10.13
18:09
(321) Это из-за куска кода который нужно удалить.
Там задумка была что б в зависимости от соотношения да/нет (при большом "ДА") увеличивать вероятность сыграть на "Нет".
Но я не думал что ты добавишь "эволюцию". При эволюции, не верно идет расчет ответов "Да" (пока так предполагаю).
Завтра переделаю.
323 FarFar
 
29.10.13
18:13
(322) При эволюции подсчет ответов "Да" идет точно таким же образом.
324 Lama12
 
29.10.13
18:14
(323) Это да :) Но количество особей увеличивается ;-)
325 Lama12
 
29.10.13
18:14
точнее меняется.
326 FarFar
 
29.10.13
18:15
(322) Я же в "Эволюции" за один "НомерПартии" не играю для двух стратегий с количеством N и M - N*M партий. Это мне бы мэйнфрейм понадобился )))  Я играю ОДНУ партию, так же как и в обычном чемпионате. Но количество баллов - вычисляю, как количество экземпляром этой стратегии на начало хода, умноженное на результат партии. Что то типа "Heroes of might and magic", где стоит один скелет ,а написано 1000, и он бьет с силой 1000.
327 FarFar
 
29.10.13
18:18
(326) Количество особей стратегии на следующую итерацию считается так: количество на начало текущего хода + количество экземпляров, заработанное за текущий код. При превышении всеми экземплярами всех популяций некоего ограничевающего числа (по умолчанию 1000, видно в настройках чемпионата) - количество особей каждой стратегии на начало следующего хода пересчитывается пропорционально. Типа, настали холода, и вымерзли 4 из 5 из каждой популяции.
328 FarFar
 
29.10.13
18:20
(326) Ошибка.
Вместо "Но количество баллов - вычисляю, как количество экземпляром этой стратегии на начало хода, умноженное на результат партии"
читай "Но количество баллов - вычисляю, как минимум от количества экземпляром этих двух стратегий на начало хода, умноженное на результат партии"
329 Lama12
 
29.10.13
18:20
(326) Хм... понял. Тогда действительно странно. Видимо функция увеличения вероятности "Нет" совсем не правильно написана :)
330 Lama12
 
29.10.13
18:23
Блин. Я нашел как выиграть. Вопрос - стоит ли это делать? :)
Вариант не совсем честный. Хотя в жизни и применяется.
331 FarFar
 
29.10.13
18:26
(330) Может, ты решил заострить внимание на каких то отдельных стратегиях, чтобы брать с них побольше очков? У меня "А ты кто такой?", например, классно играет с "Злом за добро, добром за зло". Но все в рамках алгоритма, без всяких уловок типа "если играю с "зло за добро" - всегда отказываться".
332 Lama12
 
29.10.13
18:27
Подсказку выкладывать или нет?
Не интересно будет играть.
Либо нужно еще одно правило вводить в игру.
333 FarFar
 
29.10.13
18:28
(332) Надо будет - введем правило. Давай подсказку
334 Lama12
 
29.10.13
18:28
Ритуальный танец.
335 Lama12
 
29.10.13
18:29
Хотя стратегия «око за око» считалась самой удачной простой стратегией, команда Университета Саутгемптона из Англии (под руководством профессора Николаса Дженнингса [1]) представила новую стратегию на 20-ю годовщину Чемпионата по ПДЗ. Эта стратегия оказалась более успешной, чем «око за око». Она основывалась на взаимодействии между программами, чтобы получить максимальный счёт для одной из них. Университет выставил на чемпионат 60 программ, которые распознавали друг друга по ряду действий на первых 5-10 ходах. Узнав другую, одна программа всегда сотрудничала, а другая предавала, что давало максимум очков предателю. Если программа понимала, что оппонент — не саутгемптонский, она дальше всё время предавала его, чтобы минимизировать результат соперника. В результате [6] эта стратегия заняла первые три места в соревновании, как и несколько мест подряд ниже.

Хотя эта эволюционно стабильная стратегия оказалась более эффективной в соревновании, это было достигнуто за счёт того, что в этом конкретном соревновании команда могла участвовать несколькими агентами. Если игрок может контролировать только одного агента, «око за око» оказывается лучшей. Она также соблюдает правило запрета на коммуникации между игроками. То, что саутгемптонские программы исполняли «ритуальный танец» в первые 10 ходов, чтобы узнать друг друга, только подтверждает, насколько важна коммуникация в сдвиге баланса игры.
336 FarFar
 
29.10.13
18:29
(334) О боже! Ты опоздал с этой идеей лет так на 30.
Я столько раз сюда выкладывал ссылку на ту же "Вики".
Конечно, я блюду, чтобы стратегии одного производителя друг другу не подыгрывали.
337 Lama12
 
29.10.13
18:30
:)
338 FarFar
 
29.10.13
18:31
(337) + надеюсь на добропорядочность разработчиков множества стратегий (из таковых Lama12) )))
339 FarFar
 
29.10.13
18:32
Официально объявляю: заставлять свои программы плясать ритуальный танец, чтобы распознать друг друга, а потом выставлять одного форварда в победители, специально "отказывая" всем другим стратегиям - моветон и карается помидорами.
340 FarFar
 
29.10.13
18:47
Тем временем завершился первый длинный чемпионат "Эволюция". На эволюцию длиной 1000 ходов потребовалось 36 минут времени.
Максимальное число особей стратегий, которые могли прокормиться на этой планете, было равно 1000.

http://s017.radikal.ru/i436/1310/d6/ed8970ade777.png

Первые 4 места:
1. "А ты кто такой?" (автор - FarFar), 136 особей, 2 938 305 баллов.
2. "Вера с увеличивающейся вероятностью" (автор - Lama12), 121 особь, 2 857 411 баллов.
3. "Око за око", 121 особь, 2 695 081 баллов.
4. "Око за два ока", 119 особь, 2 705 121 баллов.

Остальные сильно отстали.
Всю дорогу лидеры соревновались друг с другом. В основном, "А ты кто такой?" был впереди, иногда его обгоняла "Вера", но следующим ходом отбрасывалась.

К счастью, в ходе эволюциии никто не погиб, даже слабенькие стратегии в начале чемпионата уцелели, а потом "стражи порядка" (3 стратегии @Lama) их, видно, не так стремали. Жилы они себе потихонечку, питались крошками. Живы - и слава Богу.

Последнее место заняла "Случайная ("антистратегия"), что подтверждает мысль о том, что лучше хоть хреновый план, чем совсем никакого плана )))
341 FarFar
 
30.10.13
01:57
Не спится, зато в голову пришла "brilliant idea" насчет стратегии. Завтра прикручу несколько строчек к "А ты кто такой", думаю, это улучшит ее показатели процентов на 25.
342 FarFar
 
30.10.13
02:02
(341) Разверну идею коэффициента 0.1 в чуть ином направлении.... но чу...пусть сюрприз будет.
343 Lama12
 
30.10.13
09:20

Чемпионат = сВход.Чемпионат;
Стратегия = сВход.Стратегия;
НомерХода    = сВход.НомерПартии;; //
Партнер        = сВход.Оппонент;;

//Переменные
Отладка = Ложь;
Результат = Истина;
ГлубинаНеверия = Новый Массив(3);
ГлубинаНеверия[0] = 10; //Обманывали 1 раз в пределах 30 ходов.
ГлубинаНеверия[1] = 20; //Обманывали 2 раза в пределах 30 ходов.
ГлубинаНеверия[2] = 30; //Обманывали 3 раза в пределах 30 ходов.

Если Отладка Тогда
    ЗаписьЖурналаРегистрации("Отладка",,,,"Номер хода" + НомерХода,);    
КонецЕсли;
Если НомерХода > 3 Тогда
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ ПЕРВЫЕ 30
    |    ВЫБОР
    |        КОГДА Партии.ОппонентКарта = ИСТИНА
    |            ТОГДА 0
    |        ИНАЧЕ 1
    |    КОНЕЦ КАК Поле1,
    |    Партии.НомерПартии,
    |    23 КАК Поле2
    |ИЗ
    |    РегистрСведений.Партии КАК Партии
    |ГДЕ
    |    Партии.Чемпионат = &Чемпионат
    |    И Партии.Стратегия = &Стратегия
    |    И Партии.Оппонент = &Оппонент
    |
    |УПОРЯДОЧИТЬ ПО
    |    Партии.НомерПартии УБЫВ";
    
    Запрос.УстановитьПараметр("Чемпионат", Чемпионат);
    Запрос.УстановитьПараметр("Оппонент", Партнер);
    Запрос.УстановитьПараметр("Стратегия", Стратегия);
    
    ТЗ_Р = Запрос.Выполнить().Выгрузить();
    ТЗ_Р.Свернуть("Поле2","Поле1");
    Сумма = ТЗ_Р[0].Поле1;                
    КоличествоОбманов = ?(Сумма>3,3,Сумма);
    
    Если Отладка Тогда
    ЗаписьЖурналаРегистрации("Отладка",,,,"Количество обманов" + КоличествоОбманов,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Чемпионат" + Чемпионат,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Партнер" + Партнер,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Стратегия" + Стратегия,);
    КонецЕсли;
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |    МАКСИМУМ(Партии.НомерПартии) КАК НомерПартии
    |ИЗ
    |    РегистрСведений.Партии КАК Партии
    |ГДЕ
    |    Партии.Чемпионат = &Чемпионат
    |    И Партии.Стратегия = &Стратегия
    |    И Партии.Оппонент = &Оппонент
    |    И НЕ Партии.ОппонентКарта";
    
    Рез = Запрос.Выполнить();
    НомЕнд = НомерХода;
    Если НЕ Рез.Пустой() Тогда
        Выборка = Рез.Выбрать();
        Выборка.Следующий();
        НомЕнд = Выборка.НомерПартии;
        НомЕнд = ?(НомЕнд = null,0,НомЕнд);
    КонецЕсли;
    ПоследнийОбман = НомерХода- НомЕнд; //Функция возвращает количество ходов от последнего обмана.
    
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |    СУММА(1) КАК Поле1
    |ИЗ
    |    РегистрСведений.Партии КАК Партии
    |ГДЕ
    |    Партии.Чемпионат = &Чемпионат
    |    И Партии.Стратегия = &Стратегия
    |    И Партии.Оппонент = &Оппонент
    |    И НЕ Партии.ОппонентКарта";
    
    Рез = Запрос.Выполнить();
    КолОбманов = 0;
    Если НЕ Рез.Пустой() Тогда
        Выборка = Рез.Выбрать();
        Выборка.Следующий();
        КолОбманов = Выборка.Поле1;
        КолОбманов = ?(КолОбманов = null,0,КолОбманов);
    КонецЕсли;//Количество обманов
    
    Если Отладка Тогда
    ЗаписьЖурналаРегистрации("Отладка",,,,"ПоследнийОбман" + ПоследнийОбман,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Чемпионат" + Чемпионат,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Партнер" + Партнер,);
    ЗаписьЖурналаРегистрации("Отладка",,,,"Стратегия" + Стратегия,);
    КонецЕсли;

    
    Если КоличествоОбманов = 0 Тогда
        
        Результата = Истина;
        
    Иначе
        ГСЧ = Новый ГенераторСлучайныхЧисел();
        Длина = ГлубинаНеверия[КоличествоОбманов-1];
        Случайность = ГСЧ.СлучайноеЧисло(0,Длина);
       //Длина = Длина + 2*(Цел(НомерХода/30))* КолОбманов/НомерХода;
        
        Если Отладка Тогда
        ЗаписьЖурналаРегистрации("Отладка",,,,"Длина" + Длина,);
        ЗаписьЖурналаРегистрации("Отладка",,,,"Случайность" + Случайность,);
        ЗаписьЖурналаРегистрации("Отладка",,,,"ПоследнийОбман" + ПоследнийОбман,);
        ЗаписьЖурналаРегистрации("Отладка",,,,"Длина - ПоследнийОбман" + (Длина - ПоследнийОбман),);
        КонецЕсли;

        
        Результат = ?(ПоследнийОбман>Длина,Истина,Случайность  > (Длина - ПоследнийОбман)); //
        
    КонецЕсли;
    
КонецЕсли;

//Включаем дурачку

Если Результат И НомерХода > 25 Тогда

    
    
    ГСЧ = Новый ГенераторСлучайныхЧисел();
    Случайность = ГСЧ.СлучайноеЧисло(0,100);
    ДоляСогласий = 1-(НомерХода-КолОбманов)/НомерХода;
     //Если  Тогда


                        Результат = ?(ДоляСогласий > 0.98, Ложь,?(ДоляСогласий > 0.9 И Случайность > 60 , Ложь, Истина)); //Извени любимая. Так получилось. //
    //КонецЕсли;
    
КонецЕсли;

РезультатВыполнения =  Результат;
344 Lama12
 
30.10.13
09:21
Можно попробовать увеличить риск обмана. Но пока и так играет лучше предыдущих моих стратегий :)
345 Lama12
 
30.10.13
09:21
Да, это все к "Дурочке"
346 Lama12
 
30.10.13
09:25
Честно говоря, стратегия не совсем честная. :)
Ну да ладно. Ритуальных танцев там нет.
347 trialexl
 
30.10.13
09:54
стратегия "китайцы" копирует самую успешную стратегию.
Сам алгоритм не смогу написать, только идея.
348 Lama12
 
30.10.13
10:03
(347) Хы... прикольно :)
Сейчас попробую сделать ;-)
349 FarFar
 
30.10.13
10:42
(347) У нас с Lama12 как в холодней войне, мысли по стратегиям параллельно. Не успел пока оценить, что там Лама менял и улучшал в своей, но кажется, она больше будет обманывать. Мое улучшение, которое планирую сегодня вставить - тоже увеличит кол-во обманов в моей стратегии.
350 Lama12
 
30.10.13
10:45
Стратегия "Китайцы".

Для каждого оппонента выбирает предыдущий ответ самой удачливой, по балам, стратегии и выдает его за свой.

Чемпионат = сВход.Чемпионат;
Стратегия = сВход.Стратегия;
НомерХода    = сВход.НомерПартии;; //
Партнер        = сВход.Оппонент;;

//Переменные
Отладка = Ложь;
Результат = Истина;

Если Отладка Тогда
    ЗаписьЖурналаРегистрации("Отладка",,,,"Номер хода" + НомерХода,);    
КонецЕсли;
Если НомерХода > 1 Тогда
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ ПЕРВЫЕ 1
    |    Партии.Карта
    |ИЗ
    |    РегистрСведений.Партии КАК Партии
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |            СтратегияБал.Стратегия КАК Стратегия
    |        ИЗ
    |            (ВЫБРАТЬ
    |                Партии.Стратегия КАК Стратегия,
    |                МАКСИМУМ(Партии.Балл) КАК Балл
    |            ИЗ
    |                РегистрСведений.Партии КАК Партии
    |            ГДЕ
    |                Партии.Оппонент = &Оппонент
    |                И Партии.НомерПартии = &НомерПартии
    |            
    |            СГРУППИРОВАТЬ ПО
    |                Партии.Стратегия) КАК СтратегияБал
    |                ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |                    МАКСИМУМ(ВложенныйЗапрос.Балл) КАК Балл
    |                ИЗ
    |                    (ВЫБРАТЬ
    |                        Партии.Стратегия КАК Стратегия,
    |                        МАКСИМУМ(Партии.Балл) КАК Балл
    |                    ИЗ
    |                        РегистрСведений.Партии КАК Партии
    |                    ГДЕ
    |                        Партии.Оппонент = &Оппонент
    |                        И Партии.НомерПартии = &НомерПартии
    |                    
    |                    СГРУППИРОВАТЬ ПО
    |                        Партии.Стратегия) КАК ВложенныйЗапрос) КАК ВложенныйЗапрос
    |                ПО СтратегияБал.Балл = ВложенныйЗапрос.Балл) КАК ВложенныйЗапрос
    |        ПО Партии.Стратегия = ВложенныйЗапрос.Стратегия
    |            И (Партии.Оппонент = &Оппонент)
    |            И (Партии.НомерПартии = &НомерПартии)";
    
    Запрос.УстановитьПараметр("Чемпионат", Чемпионат);
    Запрос.УстановитьПараметр("Оппонент", Партнер);
    Запрос.УстановитьПараметр("НомерПартии", НомерХода-1);
    
    
    
    Рез = Запрос.Выполнить();
    Если НЕ Рез.Пустой() Тогда
        Выборка = Рез.Выбрать();
        Выборка.Следующий();
        Результат = Выборка.Карта;
    КонецЕсли;
КонецЕсли;


РезультатВыполнения =  Результат;
351 Lama12
 
30.10.13
10:45
На удивление, по экземплярам заняла 1 место при количестве игр 500. о_О.
Думаю что это случайность.
Устойчивого тренда не наблюдается.
352 FarFar
 
30.10.13
10:47
(347) Тут такая ситуация, что мы даже видим код стратегий, написанных другими. Поэтому не надо заморачиваться на то, что "моя - обязательно первое место, иначе смерть". Лучше побольше интересных несложных стратежек, чтобы понаблюдать за их жизнью в аквариуме.

Lama12 - нет нареканий к тому, как я "эволюцию" организовал? Мне нравится ))) Сам себя не похвалишь )))  Работает столько же времени, сколько обычный чемпионат, а эффект - практически такой же, как если бы каждый экземпляр с каждым играл. Плюс тесты показали, что у стратегии есть шанс вылезти практически с самого дна (с 4 особей из 1000), если она хорошо играет. И положительная обратная связь от количества особей в стратегии (чем больше особей, тем лучше она растет) не гипертрофирована, то есть система устойчива при незначительном перевесе какой то одной стратегии (как я наблюдал вчера в чемпионате в 1000 ходов).
353 FarFar
 
30.10.13
10:48
(350) Это практически так же, как я хотел свои "Лучшие практики" сделать. Но ты опередил, добавлю китайцев.
354 Lama12
 
30.10.13
10:49
Блин... Все таки китайцам надо первых 3 хода не врать :(
Замени кусочек кода НомерХода > 1 на НомерХода > 3
355 FarFar
 
30.10.13
10:49
(354) Кинь всю обновлененную стратегию под спойлер.
356 Lama12
 
30.10.13
10:51
(352)  Нареканий нет. :)


Чемпионат = сВход.Чемпионат;
Стратегия = сВход.Стратегия;
НомерХода    = сВход.НомерПартии;; //

Партнер        = сВход.Оппонент;;

//Переменные

Отладка = Ложь;
Результат = Истина;

Если Отладка Тогда
    ЗаписьЖурналаРегистрации("Отладка",,,,"Номер хода" + НомерХода,);    
КонецЕсли;
Если НомерХода > 3 Тогда
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ ПЕРВЫЕ 1
    |    Партии.Карта
    |ИЗ
    |    РегистрСведений.Партии КАК Партии
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |            СтратегияБал.Стратегия КАК Стратегия
    |        ИЗ
    |            (ВЫБРАТЬ
    |                Партии.Стратегия КАК Стратегия,
    |                МАКСИМУМ(Партии.Балл) КАК Балл
    |            ИЗ
    |                РегистрСведений.Партии КАК Партии
    |            ГДЕ
    |                Партии.Оппонент = &Оппонент
    |                И Партии.НомерПартии = &НомерПартии
    |            
    |            СГРУППИРОВАТЬ ПО
    |                Партии.Стратегия) КАК СтратегияБал
    |                ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |                    МАКСИМУМ(ВложенныйЗапрос.Балл) КАК Балл
    |                ИЗ
    |                    (ВЫБРАТЬ
    |                        Партии.Стратегия КАК Стратегия,
    |                        МАКСИМУМ(Партии.Балл) КАК Балл
    |                    ИЗ
    |                        РегистрСведений.Партии КАК Партии
    |                    ГДЕ
    |                        Партии.Оппонент = &Оппонент
    |                        И Партии.НомерПартии = &НомерПартии
    |                    
    |                    СГРУППИРОВАТЬ ПО
    |                        Партии.Стратегия) КАК ВложенныйЗапрос) КАК ВложенныйЗапрос
    |                ПО СтратегияБал.Балл = ВложенныйЗапрос.Балл) КАК ВложенныйЗапрос
    |        ПО Партии.Стратегия = ВложенныйЗапрос.Стратегия
    |            И (Партии.Оппонент = &Оппонент)
    |            И (Партии.НомерПартии = &НомерПартии)";
    
    Запрос.УстановитьПараметр("Чемпионат", Чемпионат);
    Запрос.УстановитьПараметр("Оппонент", Партнер);
    Запрос.УстановитьПараметр("НомерПартии", НомерХода-1);
    
    
    
    Рез = Запрос.Выполнить();
    Если НЕ Рез.Пустой() Тогда
        Выборка = Рез.Выбрать();
        Выборка.Следующий();
        Результат = Выборка.Карта;
    КонецЕсли;
КонецЕсли;


РезультатВыполнения =  Результат;
357 Lama12
 
30.10.13
10:52
И да.
Надеюсь, я верно понял значение поля "Балл" в регистре сведений. :)
Я на него ориентируюсь в китайцах.
358 FarFar
 
30.10.13
10:54
(357) Балл - это сколько стратегия набрала в конкретно этой игре. То есть, цена исхода игры (0,1,3,5) умножается на минимум из количества популяции обеих стратегий-оппонентов на начало текущего хода.
359 Lama12
 
30.10.13
10:56
(358) Блин... значит суммировать его надо :(
Завтра переделаю. Сегодня уже пора работать.
360 FarFar
 
30.10.13
11:02
(359) Обновил "Дурочку" твоим кодом. Добавил китайцев.
Прогнал на 100-ходовом чемпионате.
Да, они по количеству экземпляров сильно прыгают, нет такой устойчивости, как у "Веры", обновленной "Дурочки" или "А ты кто такой". То на 1-ом месте, то на 5-ом. Собственно, это потому, что группа лидеров обычно плотная.
Но баллов они набирают заметно меньше, чем "Вера", "Дурочка", "А ты кто такой" или даже "оки"

Причем, что прикольно - сначала, ходов 30, китайцы обычно в хвосте, а потом вырываются и начинают обгонять ведущие мировые державы )))
361 FarFar
 
30.10.13
11:03
(360) Но два раза в двух 100-ходовых чемпионатах заняли 1-е место по количеству особей. Это о чем то говорит!
Как вы яхту назовете )))
362 antgrom
 
30.10.13
11:03
Новая стратегия :
Рабочее название "своя нация" ( хотел назвать стратегию "еврей" но не стал разжигать )

нация определяется  , если нет отдельного реквизита - по названию стратегии.
Со своей нацией - всегда кооперация.
С чужими - око за око с первым ходом кооперируюсь.
363 Lama12
 
30.10.13
11:04
(362) Это ритуальный танец :)
Запретили...
364 antgrom
 
30.10.13
11:11
(363) Не нашел запрета. В каком посте ?
365 Lama12
 
30.10.13
11:15
(364) (339)
366 FarFar
 
30.10.13
13:01
Произвел обещанный "апгрейд" "А ты кто такой?".
Ожидаемого большого прироста результативности "в эволюции" не зафиксировал, небольшой есть. Из шести 100-ходовок "А ты кто такой" занял таки все шесть раз первое место в плотной группе лидеров, вытесняя "китайцев".
Один раз, кстати, китайцы совсем сдохли, и имели к 100-му ходу всего 22 особи. Остальные разы - были в группе лидеров.
Вот скрин последнего, типичного, чемпионата:
http://s52.radikal.ru/i137/1310/bb/8f52eeb40144.png

Кстати, в "обычном", не эволюционном чемпионате - там расклад такой: "А ты кто такой" лидирует сильно(после улучшения прирост не 25%, но 10% точно есть), "китайцы" - весьма посредственные.
http://s019.radikal.ru/i603/1310/8d/e09c89583df0.png


Вообще, как и писал раньше, по баллам то китайцы не ахти, но в "эволюции" успешны. Причину пока не понимаю, только догадки есть.  

Запущу в фоновом режиме 1000-ходовку, посмотреть результаты. А после обеда добавлю обещанные 6 стратегий и выложу dt.
367 Lama12
 
30.10.13
13:07
(366) А чего тут понимать :)
Китайцы на то и китайцы, что б размножаться.
368 FarFar
 
30.10.13
13:09
(367) Возможно, надо что то в "эволюции" подкрутить. А то каждый раз такая плотная группа лидеров, и никто вперед сильно уйти не может.
369 FarFar
 
30.10.13
13:10
(368) Ну неправильно это, когда китайцы отстают по ВВП (баллам ) от лидеров на 1/7 примерно, но в то же время "ноздря в ноздрю" идут по населению.
370 Lama12
 
30.10.13
13:13
(369) У них идеологическая "накачка". Поклонение лидеру. :)
371 Lama12
 
30.10.13
13:14
Блин... где еще стратегии. Народ, присоединяйтесь. Может кто предложит другую реализацию описанных тут стратегий.
372 FarFar
 
30.10.13
13:43
(366) Забыл написать, в чем заключалось улучшение "А ты кто
такой?".

Вдобавок к присущей ей злопамятности (играть отказ, если соперник хоть раз в 10 ходов сыграл с тобой отказ), стратегия приобрела еще склонность "грабить корованы", то есть играть "отказ", если перед ней простак - который выставляет "отказ" любым другим стратегиям не чаще 1 раза в 10 ходов.
373 FarFar
 
30.10.13
13:47
(366) Пока обедал, кажется, допер, почему такая плотная группа лидеров образуется в "эволюции".
  Получается так, что игра стратегии с оппонентом из остающих приносит ей сравнительно немного очков при любом исходе. Так как исход игры умножаю на минимум из числа особей обеих стратегий. Типа, встречаются два отряда, в одном 100 воинов, в другом 10. От каждого отряда выдвигается по 10, они борются, результат для каждой стратегии умножается на 10. Вроде, с одной стороны, логично. С другой стороны, эти "микростычки", получается, теряются на фоне сражений лидеров, которые друг с другом обычно кооперируются.

Буду думать, курить бамбук, как привнести интригу в эволюцию.
374 FarFar
 
30.10.13
13:51
(362) "Со своей нацией - всегда кооперация.
С чужими - око за око с первым ходом кооперируюсь."

Око за око точно так и играет, оно само с собой всегда кооперируется.
375 FarFar
 
30.10.13
14:14
(373) Надо будет все-таки еще раз попробовать версию умножение  балла-результата на количество популяций в обеих стратегиях.
Типа, встретились 2 отряда, в одном 100 воинов, в другом 10. Каждый из них поборолся с каждым, т.е. результат для каждой стратегии умножается на 1000.
Думаю, так будет более динамично. И вроде как более подходит под описание 3-го чемпионата Аксельрода. К сожалению, он не описал, как он "начислял выигрыш в потомках".
376 FarFar
 
30.10.13
14:27
(373) И понятно, почему "Под дурочку" и "Китайцы" при текущем раскладе то вылезают в лидеры, то скатываются. Они у Lama12 коварные товарисчи, могут с добропорядочными стратегиями типа "Око за око" выкинуть отказ, набрать кучу очков (потому что "Око за око", "Око за 2 ока") - в группе лидеров и баллов там огого получается. Вылезают на 1 место. А потом через ход-два те же "Оки" начинают их карать. И выскочки немного откатываются обратно.
377 FarFar
 
30.10.13
14:46
(376) Ошибочка. Смотрю итоги - китайцы практически не играют с "оками" отказ. А вот с "дурочкой", и в особенности с "девушкой" - часто.
378 trialexl
 
30.10.13
15:11
Стратегия "воры" кооперация с порядочными 2 хода, дальше обман и 10 ходов отказ с данной стратегией. Если бы еще как то можно было реализовать действие "кидать, но только по крупному".
не думаю что будет успешна, так как китайцы, но для массовки пойдет.
379 FarFar
 
30.10.13
15:47
Выложил обновленную базу и обработку:
http://webfiles.ru/files/38620132

отличия:
Усовершенствованы стратегии "Под дурочку" и "А ты кто такой"
Добавлена стратегия "Китайцы"

В таблицу хода чемпионата добавлена колонка "Потомство". Колонка "Количество экземпляров" переименована в "Живые экземпляры".
В общем, сейчас:
- в колонку "Балл" выводятся баллы, как при обычном чемпионате, без всякой эволюции.
- в колонку "Потомство" выводится заработанное потомство (итог игры в баллах умноженный на количество потомств двух стратегий, сообразно варианту подсчета потомства)
- в колонку "Живые экземпляры" - результат пересчета набранного "Потомства" в соотвествиями с ограниченями на общую численность популяции.

То есть теперь, после чемпионата сразу видны его результаты как в обычном режиме (колонка "Балл"), так и в режиме "Эволюции" - колонка "Живые экземпляры".

Кроме того, в карточке чемпионата появился "Вариант подсчета потомков". От него как раз зависит, что брать в качестве множителя - минимум от численности двух противоборствующих популяций, максимум, или их произведение.

Пока "произведение" мне не очень понравилось. Не зрелищное ))) Лидер всех гнобит.

Более-менее зрелищен и устойчив вариант "Максимум" с выключенной галкой "Стратегия играет сама с собой". Хотя жизненную аналогию придумать трудно.

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

Галка "Стратегия играет сама с собой", по сути, является усилителем положительной обратной связи. Так как лидирующие стратегии обычно сами с собой кооперируются, то чем больше экземпляров у стратегии, тем больше она получает за игру сама с собой.

В общем, поисследуйте.
380 FarFar
 
30.10.13
15:47
(379) пароль 123456
381 SUA
 
30.10.13
15:49
мою "Блеф" по стате посмотреть хочу
382 SUA
 
30.10.13
15:50
только кодить лень
383 FarFar
 
30.10.13
15:51
(382) А ты покодь, покодь )))  Отладишь - выкладывай сюда, я вставлю. Lama12 же выкладывает. Благо - примеры кодинга стратегий в выложенной базе  есть.
384 SUA
 
30.10.13
15:54
(383)там шанс прощения сложно высчитывать, рандом тогда оставлю небольшой
385 FarFar
 
30.10.13
15:54
(379) P.S. при "Произведении" лидер всех гнобит при включенной галке "Стратегия играет сама с собой". Точнее, там устанавливает ходов через 30 некая ситуация (когда у "А ты кто такой" 400 с лишком очков, а у конкурентов - порядка 100), и дальше картина не меняется.
Если при произведении убирать галку "Стратегия играет сама с собой" - то кстати, вроде ничего, нормально. И цифирки меняются, и отрыв не такой большой. Правда, самые неуспешные стратегии вымирают в хлам.
386 Lama12
 
30.10.13
15:55
(379) китайцев надо будет переделывать :(
387 trialexl
 
30.10.13
16:00
(386) для реализма у китайцев должна быть стартовая фора по количеству экземпляров))
388 FarFar
 
30.10.13
16:12
(387) Все равны, у всех одинаковые шансы ))

(386) Да уж...есть куда стараться )) ... если бастрагироваться от неоднозначных "эволюций" (в которых "А ты кто такой" тоже выигрывает) - в простом и честном чемпионате по обычным баллам он стабильно опережает 2 и 3 место ("Под дурочку" и "Вера") как минимум на 10%. А "Око за око" хваленое отстает на треть.

Вот образцовый пример чемпионата. Колонка "Баллы" - подсчитывается как в обычном чемпионате.
Колонки "Потомство" и "Живые экземпляры" - вариант "Произведение", галка "Стратегия играет сама с собой включена".

Чемпионат в 100 ходов, макс.кол-во популяции 1000 особей.

http://i016.radikal.ru/1310/84/72e10090259e.png
389 Lama12
 
30.10.13
16:29
(388)Насколько корректно будет определять эффективность стратегии по количеству потомства?
390 FarFar
 
30.10.13
16:33
(389) Самое честное - по простым баллам.
391 FarFar
 
30.10.13
16:36
(389) Количество потомства сильно зависит от того, как сложилась судьба популяции в начале игры.
В варианте "Произведение" у природы клыки покрыты кровью намного больше, чем при "Минимуме". Неудачники вымирают на раз-два, и потомства вообще не оставляют.
392 Зойч
 
30.10.13
16:38
а кто нибудь из вас задавался вопросом Почему одна стратегия успешнее другой?
Или вы просто наугад варианты предлагаете?
393 FarFar
 
30.10.13
16:38
(391) Кстати, мне начинает нравиться вариант "Произведение".
394 FarFar
 
30.10.13
16:39
(392) Этот философско-естественно-научный вопрос. Докинз его в книге рассматривает.
Ну а по честняку - я просто в программе цифирками мухлую.
395 SUA
 
30.10.13
16:39
придумал что дальше делать...
придется или запрос писать или параметры (которые думаю все потом будут использовать)
- "ведомость противника" (% ответов стратегии по типу "Око за око")
1- близко к 50% - случайная стратегия, в ответ играем наилучшую "Всегда отказ"
- "отзывчивость" (то же самое, на сотрудничество, включая 1 ход)
- "мстительность" (то же, на отказы)
2- в случае "мстительность" около 0 - всегда отказ,
3- 100% - первым отказывать нет смысла (смотрим дальше)
4- в случае "отзывчивость" около 0% первым в сотрудничество играть нет смысла, всегда отказ,
5- 100% - есть смысл начать сотрудничать если еще не определились
ну и проценты расставить по вкусу...
396 FarFar
 
30.10.13
16:43
(395) Вся планета смотрит на тебя!

Я только за, если опишешь параметрами. Вот Lama12, негодяй - все в свои стратегии лепит.

А вдруг придется оптимизировать скорость работы программы. Некий общий параметр можно рассчитать один раз на один ход, а потом использовать для всех стратегий, которые захотят к нему обратиться.
397 SUA
 
30.10.13
16:45
+ возможно доли ответов
соответственно стратегия сразу будет вычислять простака(сотрудничающего всегда), завистника(всегда отказывающегося) и неопределенные стратегии (в т ч антистратегия и "добром на зло") и не давать им развиваться подчистую
398 FarFar
 
30.10.13
16:45
(397) Ты не рассказывай, ты пиши код ))
399 SUA
 
30.10.13
16:45
часа через 3 займусь
400 Lama12
 
30.10.13
16:48
(394) Вот вот - "в программе цифирками мухлую" :)
(392) Честно, не стараюсь сделать оптимальную стратегию. Просто интересно моделировать реальные стратегии людей.
Например "Вера" - очень похожа на реальное поведения большинства людей. "Девочка" - тут и так понятно. Девочка подросток, или женщина любящая манипулировать мужчинами, но у нее не очень это получается. "Под дурачка", некоторые личности пытаются сыграть на доверии. Если б количество игроков было не ограничено, и количество ходов было заведомо мало, то можно был б написать "Афериста".
Китайцы - это китайцы :). Ничего своего, копирование лучших практик. Но как показывает практика, если своего привносить не будешь, то и будешь плестись где-то в середине.

Если задача стоит, написать самую побеждающую стратегию, от наиболее оптимально будет (в нашем случае), проанализировать код противников, и вычислять их в ходе игры. Ну естественно под них применять свои стратегии.
401 FarFar
 
30.10.13
16:51
(400) Да, это здорово! Я и просил именно больше моделей, хороших и разных.
У меня руки дойдут, опишу две простых своих - "Почтальон Печкин" и более интересную, "Жадный подлиза".
Ну и чужие тоже, не программистка мне накидала.
402 Lama12
 
30.10.13
16:53
(396) Не разобрался я с этими внешними функциями. Реализация интересная. Хотя полностью под капот не заглядывал.
Время не больше 2 часов могу уделить утром, в рабочие дни.
403 FarFar
 
30.10.13
16:53
(400) У меня просто основное время на движок ушло, а не на придумывание стратегий (((
404 Зойч
 
30.10.13
16:54
(394) работа компьютерных программ отнюдь не философский вопрос
405 SUA
 
30.10.13
16:55
кстати к "китайцам" можно добавить "а как бы поступил он?" - возвращает ответ самой стратегии оппонента на входящие данные
406 SUA
 
30.10.13
16:56
заставляя ее каждый раз играть с собой
407 FarFar
 
30.10.13
16:56
(402) Я, кстати, понял, почему при "Произведении" без галки "Стратегия играет сама с собой" - ходу к 30-му все устаканивается, и дальше не меняется. Все лидеры к тому моменту играют друг с другом "Кооперируюсь", какие то жалкие разницы в количество исходных потомках на начало хода роли не играют. Может, как то увеличу ценность экземпляров, которые живут на начало хода. Типа, они уже опытные и значат больше, чем новорожденные детеныши, которые потом дохнут в жуткой пропорции.

Но пока предлагаю сравнивать стратегии по колонке "Балл". Она самая непротиворечивая.
408 Lama12
 
30.10.13
16:59
(407) Мда... Тут вероятностные факторы имеют только мои стратегии. Так что все остальные при игре сами с собой будут кооперироваться. Да и мои при большом количестве ходов тоже будут уходить в кооперацию.
409 Lama12
 
30.10.13
17:08
NS будешь на троих? Даешь "супер пупер" стратегию!
410 SUA
 
30.10.13
17:08
по эволюции целевая функция нормально не описана
чтобы под нее стратегию максимизировать
411 SUA
 
30.10.13
17:15
как вариант - можно из нее оставить бои навылет:
- расставляем стратегии в случайном порядке линейно, по несколько экземпляров
- каждая из первых двух играет со всеми остальными (следующими 10ю) (оставшимися с живыми экземплярами...) по 1 кругу, кто набрал меньше очков вылетает
- победившую в конец списка
"должен остаться только один"
412 NS
 
30.10.13
17:15
(409) Неа, мне никак. Нет времени совсем.
413 Lama12
 
30.10.13
17:17
(412) Понимаю. А жаль :)
414 FarFar
 
30.10.13
17:18
(409) он заходит иногда в ветку, вижу тут его.

Не обязательно нужна "супер-пупер". Лучше именно стратегию, которая:
1. обладает ярко выраженной логикой и характером, как человек.  Пример - "китайцы" (аналог в жизни - китайцы), "а ты кто такой" (гопник - трудно прощающий зло, но сам может обижать тех, кто не отвечает).
2. минимум рандомайза.
3. не слишком "трудозатратная" по ресурсам. Ибо в реальной жизни стратегия, которая для каждого хода вычисляла бы факториал по баллам каждого противника - проигрывала бы по цейтноту.

А то натыкать условий по рандому бездумно можно, а как назвать такое дело, что у него за "характер" - непонятно.
415 FarFar
 
30.10.13
17:19
(411) не, у нас все играют со всеми, каждый круг.
416 FarFar
 
30.10.13
17:30
(410) А не надо "под нее стратегию максимизировать".
Надо просто, чтобы стратегия достаточно сильно играла. Тогда и в эволюции у нее дела будут хороши.
Можно и ту, которая не сильная, но с интересной идеей.
417 SUA
 
30.10.13
17:40
"Надо просто, чтобы стратегия достаточно сильно играла"
расплывчато
- не проигрывать никому индивидуально - завистливая стратегия
- набрать максимум очков за 1 круг со всеми - другая
- набрать максимум очков за 1 круг с неравным количеством партий с каждой из стратегий - третья
- пересчитывая экземпляры после партии а не после круга - четвертая
- включая или не включая "играть с собой" - пятая
в том числе, когда в эволюции достаточно много сотрудничающих экземпляров, они начинают самоподдерживаться, что неинтересно в плане результата
418 FarFar
 
30.10.13
17:43
(147) Посмотри на игры лидеров чемпионата. Они умудряются набирать много очков почти со всеми другими стратегиями, кроме других лидеров.
419 SUA
 
30.10.13
19:27
есть контакт
420 SUA
 
30.10.13
19:28
Параметр ПредсказуемостьОппонента, код

СтруктураПредсказуемости = Новый Структура("Общее,Сотрудничество,Отказ",1,1,1)    ;
     Запрос = Новый Запрос;
     Запрос.Текст = "ВЫБРАТЬ
|ВЫБОР КОГДА Партии.Карта=Партии1.ОппонентКарта ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК Количество,
       |   ВЫБОР КОГДА Партии1.ОппонентКарта=ИСТИНА И Партии.Карта=ИСТИНА ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК КоличествоСотр,
       |   ВЫБОР КОГДА Партии1.ОппонентКарта=ИСТИНА И Партии.Карта=ЛОЖЬ ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК КоличествоОбм,
       |   ВЫБОР КОГДА Партии1.ОппонентКарта=ЛОЖЬ И Партии.Карта=ИСТИНА ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК КоличествоОш,
       |   ВЫБОР КОГДА Партии1.ОппонентКарта=ЛОЖЬ И Партии.Карта=ЛОЖЬ ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК КоличествоОтк
     |ИЗ
     |    РегистрСведений.Партии КАК Партии ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.Партии КАК Партии1
     |ПО
     |    Партии.Чемпионат = &Чемпионат И Партии1.Чемпионат = &Чемпионат
     |    И Партии.Стратегия = &Стратегия И Партии1.Стратегия = &Стратегия
     |    И Партии.Оппонент = &Оппонент И Партии1.Оппонент = &Оппонент
       |    И Партии.НомерПартии = (Партии1.НомерПартии-1) ";
    
    Запрос.УстановитьПараметр("Чемпионат", сПарамВход.Чемпионат);
    Запрос.УстановитьПараметр("Оппонент", сПарамВход.Оппонент);
    Запрос.УстановитьПараметр("Стратегия", сПарамВход.Стратегия);
    
    Рез = Запрос.Выполнить().Выгрузить();

Если Рез.Количество() Тогда
  Количество = Рез.Итог("Количество");
  СтруктураПредсказуемости.Общее=Количество/(сПарамВход.НомерПартии-2);
  Количество = Рез.Итог("КоличествоСотр")+Рез.Итог("КоличествоОш");
  СтруктураПредсказуемости.Сотрудничество = ?(Количество=0,1,Рез.Итог("КоличествоСотр")/Количество);
  Количество = Рез.Итог("КоличествоОбм")+Рез.Итог("КоличествоОтк");
  СтруктураПредсказуемости.Отказ = ?(Количество=0,1,Рез.Итог("КоличествоОтк")/Количество);
КонецЕсли;
  РезультатВыполненияПараметра = СтруктураПредсказуемости;
421 SUA
 
30.10.13
19:28
стратегия "ФСБ", код

сПарамВход = сВход;

Если сПарамВход.НомерПартии < 3 Тогда

  РезультатВыполнения = Истина;

Иначе

  сПарамВход.Вставить("КоличествоПредшествующихХодов",1);

  Карта = ВычислитьПараметр("КартаОппонентаНаХодуПредшествующемНаХ",сПарамВход);
  Статистика = ВычислитьПараметр("ПредсказуемостьОппонента",сПарамВход);
  Если Статистика.Общее<=1/2 Тогда
     РезультатВыполнения = Ложь;
  ИначеЕсли Статистика.Отказ<=1/2 Тогда
     РезультатВыполнения = Ложь;
  ИначеЕсли Статистика.Сотрудничество<=1/2 Тогда
     РезультатВыполнения = Ложь;
  ИначеЕсли Статистика.Отказ>9 /10 Тогда
     РезультатВыполнения = Карта;
  ИначеЕсли Карта = ИСТИНА Тогда
     РезультатВыполнения = Карта;
  Иначе
     РезультатВыполнения = (Статистика.Сотрудничество>Статистика.Отказ);
КонецЕсли;
КонецЕсли;
422 SUA
 
30.10.13
19:29
сразу почетное 2е место (не умеет обманывать)
423 SUA
 
30.10.13
19:31
и при такой постановке 1е место зависит от состава участников...
424 FarFar
 
30.10.13
19:55
(422) Стратегию добавил в базу.
Сразу работает, не вываливается.
На 100-ходовом чемпионате заняла уверенное 2 место по баллам (со всеми имеющимися участниками и включенной галкой "игры с самим собой"). Поздравления с удачной стратегией и "говорящим" названием!
http://s020.radikal.ru/i706/1310/13/66f0c6d91f10.png

Напиши, пожалуйста, краткое описание стратегии - вставлю в "Комментарий"
425 NS
 
30.10.13
23:31
Я правильно понял - каждый с каждым играет в игру с ненулевой суммой? То есть соревнование это просто последовательность партий один на один?
426 FarFar
 
30.10.13
23:44
(425) Да.
427 FarFar
 
30.10.13
23:46
(425) Организованная по кругам. Играют один круг каждый с каждым, потом второй круг, и далее до N. N участникам заранее неизвестно.
428 NS
 
30.10.13
23:52
(427) У тебя победитель близок к случайному. Слишком мало партий.
429 FarFar
 
30.10.13
23:58
(428) ??? У нас то 100, то 1000 кругов бывает.
430 NS
 
30.10.13
23:59
(429) Понятно. Я просто думал сотни или тысячи партий всего.
431 FarFar
 
31.10.13
00:01
(430) Не, намного больше.
432 NS
 
31.10.13
00:04
А статистика после каждого цикла сбрасывается? Недоступна боту?
433 NS
 
31.10.13
00:16
А можно выложить код оболочки в текстовом виде? Не у всех есть восьмерка.
434 FarFar
 
31.10.13
00:20
(432) Вся статистика по играм доступна. Хороший тон - использовать статистику прошедших игр, до начала текущего круга. Чтобы не зависеть от очередности игр в круге.
435 NS
 
31.10.13
00:22
(434) Ничего не понял.
Я могу смотреть не только свою статистику, но и чужую?
436 NS
 
31.10.13
00:23
то есть статистику тех матчей в которых не участвовал? Разве в оригинале так было?
437 FarFar
 
31.10.13
00:23
(433) У меня есть конфигурация, в которой кода практически нет. Только справочники, пара перечислений и регистр сведений.  Также есть внешняя обработка - наверно, она подойдет под название оболочка. Сами алгоритмы стратегий хранятся в справочнике (точнее в двух, "Стратегии" и "Параметры стратегий") в пользовательском режиме, и выполняются через "Выполнить". Что тебя интересует?
438 FarFar
 
31.10.13
00:24
(435) Да, у нас это разрешено. Хотя не все стратегии это используют. Многие ограничиваются только статистикой своих матчей с данным оппонентом.
439 NS
 
31.10.13
00:24
Куда я могу обратиться чтоб получить полную статистику. и как считается результат.
440 NS
 
31.10.13
00:24
(438) А зачем?
441 FarFar
 
31.10.13
00:25
(436) Что же их за давностью лет разберет, как у них там было. По крайней мере, строгих запретов на это я не видел.
442 FarFar
 
31.10.13
00:25
(440) А почему нет?
443 FarFar
 
31.10.13
00:27
(439) Как считается результат - это во внешней обработке. Код ее могу скинуть, только скажи куда.
  Полная статистика чемпионата хранится в регистре сведений "Партии".
444 NS
 
31.10.13
00:27
А в чем смысл того что участники не знают количества кругов?
445 FarFar
 
31.10.13
00:29
(444) Вообще, это ограничение пришло из режима, когда играют всего двое участников. Там оно особенно актуально (иначе приходим к логическому выводу, что надо всегда играть "Отказ"):
wiki:Дилемма_заключённого

Если ПДЗ играется ровно N раз (некая известная константа N), есть ещё один интересный факт. Равновесие Нэша — всегда предавать. Доказываем по индукции: если оба сотрудничают, на последнем ходу выгодно предать, тогда у соперника не будет возможности отомстить. Поэтому оба предадут друг друга на последнем ходу. Раз соперник предаст на последнем ходу в любом случае, любой игрок захочет предать на предпоследнем ходу, и так далее. Чтобы сотрудничество оставалось выгодным, необходимо, чтобы будущее было неопределённым для обоих игроков. Одно из решений — делать число N случайным и подсчитывать результаты по среднему выигрышу за ход.
446 NS
 
31.10.13
00:30
На регистрах криво как-то.
Достаточно было сделать на массивах, а каждый отдельный бот case в процедуре выбора хода.
447 FarFar
 
31.10.13
00:31
(446) Ну я же восьмерочник ))) Куда мне без регистров.
448 FarFar
 
31.10.13
00:32
(447) Точнее без одного регистра. Он один в конфе.
449 FarFar
 
31.10.13
00:33
(446) Конечно, можно писать боты в сам код конфигурации. Но тут вопрос удобства превалирует над вопросами производительности. Мне кинули тут на форуме код стратегии, я вставил в пользовательском режиме. Дел на пару секунд, особенно когда делаешь это на работе "промежду прочим"
450 NS
 
31.10.13
00:35
Прочитал почему N должно быть неизвестным.
451 FarFar
 
31.10.13
00:36
(450) Так красивее, кроме того. Чтобы не пускались во все тяжкие на последнем ходу. И для разработки стратегий это не меает.
452 NS
 
31.10.13
00:40
Тут есть косяк в самом начале рассуждений. В матричных играх стратегии вероятностные, поэтому термин "наказать" тут неприменим.
453 FarFar
 
31.10.13
00:43
(452) Аксельрод вовсю использует, например, подобные термины. Он даже стратегии категоризует на "добропорядочные", "завистливые" и т.п.
454 NS
 
31.10.13
00:45
Аскельрод далек от математики.
455 FarFar
 
31.10.13
00:49
(454) Саму "Дилемму" придумал не он. Он являлся организатором первого компьютерного турнира по "итерационной дилемме заключенного"
456 FarFar
 
31.10.13
00:52
И, кстати, чемпионом у него была стратегия "Око за око". На эту тему было, видимо, потом много публикаций социологического, философского, религиозного толка.

А у нас "Око за око" - в середнячках ходит.
457 NS
 
31.10.13
00:57
(455) (456) Все невероятностные стратегии в этой игре - на уровне психологов. К математике не имеют отношения.
458 FarFar
 
31.10.13
01:00
(457) Ок, я не буду про термины спорить ))

Я через 5 минут спать. Если еще вопросы есть - задавай.
Если нужен текстовый код обработки - могу послать. Только нафига он тебе нужен, там никаких секретов. А примеров кода стратегии тут достаточно выложено.

Например, код стратегии "Случайная"

ГСЧ = Новый ГенераторСлучайныхЧисел();
Случайность = ГСЧ.СлучайноеЧисло(0,1);
Если Случайность = 0 Тогда
  РезультатВыполнения = Ложь;
Иначе
  РезультатВыполнения = Истина;
КонецЕсли;
459 NS
 
31.10.13
01:01
(458) Бонусы то какие? В ветке и в (0) я нашел три разных варианта.
460 NS
 
31.10.13
01:02
Матрица игры как выглядит?
461 FarFar
 
31.10.13
01:05
Также, как была у Аксельрода в чемпионате.

D = 5;
C = 3;
d = 1;
c = 0;


"Если оба выбрали «сотрудничать», оба получают C. Если один выбрал «предать», другой «сотрудничать» — первый получает D, второй с. Если оба выбрали «предать» — оба получают d.
Значения переменных C, D, c, d могут быть любого знака (в примере выше все меньше либо равны 0). Обязательно должно соблюдаться неравенство D > C > d > c, чтобы игра представляла собой «Дилемму заключённого» (ДЗ).
Если игра повторяется, то есть играется больше 1 раза подряд, общий выигрыш от сотрудничества должен быть больше суммарного выигрыша в ситуации, когда один предаёт, а другой — нет, то есть 2C > D + c (объяснение см. ниже).
Эти правила были установлены Дугласом Хофштадтером и образуют каноническое описание типичной дилеммы заключённого."
462 FarFar
 
31.10.13
01:06
(46) Хотя думаю, стратегии, успешные при одних допустимых параметрах, будут успешными и при иных допустимых.
463 NS
 
31.10.13
01:09
(462) ?! То есть лучшая вероятностная стратегия в матричных играх не зависит от самой матрицы? :)
464 FarFar
 
31.10.13
01:09
Если сформируешь стратегию "на словах", Lama12 закодирует ее для чемпионата. Он так хотел тебя привлечь ))

У меня уже несколько штук ожидают кодировки, людей вообще далеких от программирования. Третий день динамлю.
465 FarFar
 
31.10.13
01:11
(463) А вот фиг его знает, товарищ майор! Это интересное предположение, я может его проверю на досуге путем комбинации разных наборов параметров (теоретически мне сложно, практически проще). Только желательно побольше разных стратегий.
466 FarFar
 
31.10.13
01:14
(463) Какой то набор надо было использовать, для организации практического чемпионата. Чтобы не только на словах все осталось. Аксельродовский - подходил на 100%
467 FarFar
 
31.10.13
01:15
(466) Как бэ...связь поколений и т.п. И можно проверить его результаты. Пока, например, меня очень удивляет, что "Око за око" оказалась не такая всемогущая. Мистянские алгоритмы ее уделывают.
468 FarFar
 
31.10.13
01:16
(467) Даже те, которые используют статистику только своих партий.
469 FarFar
 
31.10.13
01:18
Спокойной ночи.
470 NS
 
31.10.13
01:20
Тут оптимально симметричное равновесие по Нэшу, которое естественно зависит от коэффициентов матрицы.
471 NS
 
31.10.13
01:21
То есть всегда предавать.
472 NS
 
31.10.13
01:23
Добавь короче за меня всегда предавать. Завалим числом с такой стратегией.
473 NS
 
31.10.13
01:29
То есть у тебя должно быть несколько стратегий "всегда предавать". Родная, добавленная тобой изначально, и от каждого участника который хочет всегда предавать.
474 NS
 
31.10.13
01:43
Равновесие по Паретто имеет смысл применять только в случае сговора (то есть договорился с конкретным соперником, что с ним играем по Паретто, а с остальными по Нэшу). Если сговора нет, то по Нэшу. Сговор разрешен?
475 Lama12
 
31.10.13
09:28
(474) Сговор запрещен. :( Была идея.
Стратегия "Всегда предавать", не занимает верхних позиций. Но и не самая плохая.
476 Lama12
 
31.10.13
09:33
(464) Закодировать то могу :)
Легче будет если, например, дополнительно будет код на другом языке. Боюсь с мат терминами не справиться. В конце концов, из моих образований чисто математического нет.
С теорией игр знаком только частично из раздела экономики.
477 Lama12
 
31.10.13
09:59
Переделал "китайцев".

Так более правильный вариант. ФСБ жаль нет в базе которую скачал.
Кто ни будь смоделируйте чемпионат с новыми китайцами. :)
Первое место они не займут однозначно, но вторыми могут быть запросто.


Чемпионат = сВход.Чемпионат;
Стратегия = сВход.Стратегия;
НомерХода    = сВход.НомерПартии;; //
Партнер        = сВход.Оппонент;;

//Переменные
Отладка = Ложь;
Результат = Истина;

Если Отладка Тогда
    ЗаписьЖурналаРегистрации("Отладка",,,,"Номер хода" + НомерХода,);    
КонецЕсли;
Если НомерХода > 2 Тогда
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    СУММА(Партии.Балл) КАК Балл,
    |    Партии.Стратегия
    |ПОМЕСТИТЬ СуммаБалов
    |ИЗ
    |    РегистрСведений.Партии КАК Партии
    |ГДЕ
    |    Партии.Чемпионат = &Чемпионат
    |    И Партии.НомерПартии <= &НомерПартии
    |    И Партии.Оппонент = &Оппонент
    |
    |СГРУППИРОВАТЬ ПО
    |    Партии.Стратегия
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ ПЕРВЫЕ 1
    |    Партии.Карта
    |ИЗ
    |    РегистрСведений.Партии КАК Партии
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |            СтратегияБал.Стратегия КАК Стратегия
    |        ИЗ
    |            (ВЫБРАТЬ
    |                СуммаБалов.Стратегия КАК Стратегия,
    |                МАКСИМУМ(СуммаБалов.Балл) КАК Балл
    |            ИЗ
    |                СуммаБалов КАК СуммаБалов
    |            
    |            СГРУППИРОВАТЬ ПО
    |                СуммаБалов.Стратегия) КАК СтратегияБал
    |                ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |                    МАКСИМУМ(ВложенныйЗапрос.Балл) КАК Балл
    |                ИЗ
    |                    (ВЫБРАТЬ
    |                        СуммаБалов.Стратегия КАК Стратегия,
    |                        МАКСИМУМ(СуммаБалов.Балл) КАК Балл
    |                    ИЗ
    |                        СуммаБалов КАК СуммаБалов
    |                    
    |                    СГРУППИРОВАТЬ ПО
    |                        СуммаБалов.Стратегия) КАК ВложенныйЗапрос) КАК ВложенныйЗапрос
    |                ПО СтратегияБал.Балл = ВложенныйЗапрос.Балл) КАК ВложенныйЗапрос
    |        ПО Партии.Стратегия = ВложенныйЗапрос.Стратегия
    |            И (Партии.Оппонент = &Оппонент)
    |            И (Партии.НомерПартии = &НомерПартии)
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |УНИЧТОЖИТЬ СуммаБалов";
    
    Запрос.УстановитьПараметр("Чемпионат", Чемпионат);
    Запрос.УстановитьПараметр("Оппонент", Партнер);
    Запрос.УстановитьПараметр("НомерПартии", НомерХода-1);
    
    
    
    Рез = Запрос.Выполнить();
    Если НЕ Рез.Пустой() Тогда
        Выборка = Рез.Выбрать();
        Выборка.Следующий();
        Результат = Выборка.Карта;
    КонецЕсли;
КонецЕсли;


РезультатВыполнения =  Результат;
478 NS
 
31.10.13
10:43
(475) Стратегия всегда предавать не занимает верхних позиций, пока в базе есть много неправильных стратегий. Чем больше "всегда предавать", тем меньше шанс у остальных.
Стратегия "всегда предавать" - не проиграет матч никакой стратегии. И это единственная стратегия которая всегда выигрывает матч у любой другой.
479 FarFar
 
31.10.13
10:46
(477) Внес в базу обновленных китайцев. Играть стали значительно лучше:

http://s019.radikal.ru/i611/1310/1a/961cf3fe0393.png

вместо вчерашних 2997 баллов, сегодня набрали при тех же условиях 3 544

Кроме того (неожиданный сюрприз) - Китайцы теперь активно сотрудничают с ФСБ, отдавая ему при личных встречах практически все очки (Китайцы "верят", ФСБ - "лжет"). Что позволяет ФСБ к 100-му ходу догонять "А ты кто такой"


P.S. ФСБ можешь вставить к себе за 2 копипаста (в "Параметры" и в "Стратегии"), там все сразу работает без ошибок.
480 NS
 
31.10.13
10:49
(475) Сговор разрешен :)
Все стратегии, которые обмениваются кодовыми последовательностями - например всегда "око за око" - это сговор путем обмена кодовыми сигналами.
481 NS
 
31.10.13
10:49
В Бридже это называется "конвенкция"
482 FarFar
 
31.10.13
10:49
(478) 1. "пока в базе есть много неправильных стратегий" - а что имеешь ввиду под "неправильных"?

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

3. "Стратегия "всегда предавать" - не проиграет матч никакой стратегии" - да, но при этом набирает мало очков, см.п.2
483 NS
 
31.10.13
10:50
(482) Это стратегии которые нарушают правила.
484 FarFar
 
31.10.13
10:51
(480) Значит, разное понятие сговора у вас.
У нас запрещен такой сговор, когда один игрок выставляет несколько стратегий, среди них одного фаворита. А остальные его стратегии "проигрывают" фавориту, при этом "всегда отказывая" остальным - "саунтгемптонский вариант"
485 FarFar
 
31.10.13
10:51
(483) Какие правила они нарушают?
486 NS
 
31.10.13
10:52
(482) 2. Не "раскусывают", а договариваются, а это  сговор в процессе матча.
487 NS
 
31.10.13
10:52
(485) Правило (475)
488 FarFar
 
31.10.13
10:53
(477), (479) Если бы китайцы не сливали все партии ФСБ, то их результат значительно бы улучшился.
489 FarFar
 
31.10.13
10:54
(486), (487) Такие же правила работали у Аксельрода. Например, "Око за око" у него - вполне законная стратегия. Хотя она, по твоему определению, "договаривается" с соперниками. В этом то и цимес.
490 FarFar
 
31.10.13
10:55
(489) Чемпионат из 100 экземпляров "Всегда отказываюсь" практического интереса не представляет ))
491 NS
 
31.10.13
10:56
Например приходит дядя, и объявляет - мы кооперируемся в артель, в артели все должны давать последовательность из первых четырех заявок "кооп", "наказ", "наказ", "кооп".
Как только определяем что перед нами из артели, все последующие заявки "кооп", а если не наш, то все последующие заявки "наказ".
Всё, сговор. После этого сильнейшей становятся вышеозвученная стратегия. Кодовый сигнал можно поменять на любой другой (поменять конвенкцию)
492 NS
 
31.10.13
10:57
(489) Прочитай (491). Это самый натуральный сговор, конвенция. И "око за око" - это конвенция.
493 NS
 
31.10.13
10:57
Играл когда-нибудь в бридж?
494 NS
 
31.10.13
10:58
(490) Добавь например пять стратегий (491) в базу, и увидишь.
495 FarFar
 
31.10.13
11:01
(494) У нас это проходит по терминологией "Ритуальный танец"
wiki:Дилемма_заключённого

"Хотя стратегия «око за око» считалась самой удачной простой стратегией, команда Университета Саутгемптона из Англии (под руководством профессора Николаса Дженнингса[6]) представила новую стратегию на 20-ю годовщину Чемпионата по ПДЗ. Эта стратегия оказалась более успешной, чем «око за око». Она основывалась на взаимодействии между программами, чтобы получить максимальный счёт для одной из них. Университет выставил на чемпионат 60 программ, которые распознавали друг друга по ряду действий на первых 5-10 ходах. Узнав другую, одна программа всегда сотрудничала, а другая предавала, что давало максимум очков предателю. Если программа понимала, что оппонент — не саутгемптонский, она дальше всё время предавала его, чтобы минимизировать результат соперника. В результате[7] эта стратегия заняла первые три места в соревновании, как и несколько мест подряд ниже.
Хотя эта эволюционно стабильная стратегия оказалась более эффективной в соревновании, это было достигнуто за счёт того, что в этом конкретном соревновании команда могла участвовать несколькими агентами. Если игрок может контролировать только одного агента, «око за око» оказывается лучшей. Она также соблюдает правило запрета на коммуникации между игроками. То, что саутгемптонские программы исполняли «ритуальный танец» в первые 10 ходов, чтобы узнать друг друга, только подтверждает, насколько важна коммуникация в сдвиге баланса игры."
496 FarFar
 
31.10.13
11:03
(494) В общем, запрещено выставлять несколько программ, которые явно будут пытаться "распознать" "своих" и играть далее уже "на своих" представителей.

А "Око за око" - она программа единоличная. У нее нет "подельщиков", с которыми она "в сговоре". Но в чемпионате, конечно, могут быть "добропорядочные" стратегии, с которыми она будет "кооперироваться", согласено заложенным в нее алгоритмам.
497 Зойч
 
31.10.13
11:03
Вот оно. Пришел человек и задался вопроси ПОЧЕМУ. И оказалось все элементарно.
498 NS
 
31.10.13
11:04
(495) Эта цитата была написана психологом, а не математиком.
Значит в "среднем обществе" "око за око" является конвенцией, или близко к тому (конвенцией с редкими ошибками). Не более того. Всё было разжевано Нэшем. Авторы соревнований либо его не читали, либо не поняли.
499 FarFar
 
31.10.13
11:10
(498) Я не вижу преступного в том, что "Око за око" может знать историю своих игр с соперником. Не вижу преступного в том, что с теми, кто его обманывает, она начинает поступать аналогично - тоже обманывать. А с теми, кто кооперируется, - начинает "кооперироваться".
500 FarFar
 
31.10.13
11:12
(499) Для целей чемпионата - это вполне допустимо. Мы же тут не математические теоремы доказываем.
501 NS
 
31.10.13
11:12
(499) Ты озвучил "око за око" - после этого она стала конвенцией. Я озвучил (491) После этого и она стала конвенцией.
Вот ты запретил сговор в турнире? Запретил стратегии которые набирают много очков в паре с "око за око"?
502 NS
 
31.10.13
11:14
Тобой были озвучены несколько конвенций в самом начале.
Все программы которые набирают много очков со всеми названными конвенциями - просто вступают с ними в сговор.
Сговор стал возможен, так как это не вероятностные стратегии.
А в матричные игры без сговора играют вероятностными, смешанными стратегиями.
503 FarFar
 
31.10.13
11:14
(501) Я за судьбу "Око за око" не беспокоюсь ))).
Хочется, чтобы чемпионат был соревнованием индивидуальных стратегий, которые все-таки "сами за себя", а не соревнованием  "артелей" - потому что это тупиковый вариант.
504 Lama12
 
31.10.13
11:15
(498) Хы... :) Вот что-то подобное в голове вертелось :)Сформулировать не мог.
Действительно получается сговор с редкими ошибками. Редкость зависит, от качества данных истории. :)
Все верно.
505 Lama12
 
31.10.13
11:16
504+ От качества анализа данных истории.
506 FarFar
 
31.10.13
11:17
(504) "Редкость зависит, от качества данных истории" - поясни? Что за "качество данных" имеем ввиду.

Так же и 10 экземпляров "всегда отказываюсь" можно сговором назвать.
507 Зойч
 
31.10.13
11:17
(503) соревнование артелей как раз более интересный вариант
508 FarFar
 
31.10.13
11:19
(505) А - ну вот тут и раздолье для аналитика и программиста. Проанализировать историю, сделать качественные выводы. Плюс, чтобы этот анализ занимал не много времени. И алгоритм был более-менее универсален.
509 Lama12
 
31.10.13
11:20
Возьмем "идеальную" стратегию. Она умеет анализировать историю, и вырабатывать оптимальное поведение. В результате подобное поведение можно назвать сговором. Поскольку она безошибочно будет определять стратегию противника и всегда будет играть наиболее оптимально.
(507) в артельных вариантах, скорее всего, будут выигрывать те артели в которых больше участников или которые смогут себя быстрее распознать.
510 NS
 
31.10.13
11:21
(503) Да при чем тут око за око. В ветке озвучена куча невероятностных стратегий. Можно написать стратегию которая войдет в сговор со всеми озвученными.
Любое озвучивание невероятностной стратегии - это приглашение к сговору.
511 Lama12
 
31.10.13
11:22
(510) У меня вероятностные (c натяжкой) :) Кроме китайцев. :-D
512 FarFar
 
31.10.13
11:22
(507) Почему?
Внутри артели - логика ясна, всегда играть "на фаворита", чтобы он выкладывал "Отказ", а остальные члены "Кооперируюсь".
Далее, явно результат зависит от количества членов артели. Хорошо, пусть в артелях одинаковое кол-во членов.

Далее что получаем: если разные артели будут играть с другими "артелями" всегда "отказ" - значит мы получаем как бы наш чемпионат единоличников "всегда отказываюсь". Все артели закончат чемпионат с одинаковыми баллами.
Значит что имеем :-)  Что уже артелям надо "кооперироваться" друг с другом, чтобы опередить остальных.
И получаем ровно такой же чемпионат, как у нас, только гемора больше.

"Артель" имеет преимущество в чемпионате, если она там одна, и про нее никто не знает.
513 Зойч
 
31.10.13
11:26
(512) тут как раз велико поле для оптимизации. Как можно быстрее вычислить своего/чужого
514 FarFar
 
31.10.13
11:26
(510) То есть, имеешь ввиду, что код стратегии должен быть "закрыт", чтобы оппоненты его не могли проанализировать, и понять логику работы программы?

Уверяю тебя, у нас таким ограничителем является лень. Мы пишем  стратегии, которые не ориентируются на игру с какими то конкретными стратегиями.
515 Зойч
 
31.10.13
11:26
В текущем варианте вы просто крутите циферки без понимания происходящего
516 FarFar
 
31.10.13
11:27
(513) А что тут оптимизировать то???
Если в чемпионате 10 "артелей" участвует - более-менее достаточно 4 ходов (2 в четвертой) степени. Если больше - ну 5 ходов.
517 Lama12
 
31.10.13
11:28
(513) В том то и дело. Что если программировать артели, то можно заранее договориться о последовательности идентифицирующих ходов. Все просто :)
518 FarFar
 
31.10.13
11:30
(504) "Действительно получается сговор с редкими ошибками."

В нашем чемпионате не все добропорядочные стратегии "сговариваются" друг с другом. Например, моя "А ты кто такой" - по факту вовсю обманывает добропорядочную "Всегда кооперируюсь".
519 FarFar
 
31.10.13
11:30
(518) то есть, "А ты кто такой" является недобропорядочной.
520 FarFar
 
31.10.13
11:32
(517) Так еще раз!
Если артели разрешены - это НИ КАПЛИ не меняет смысл чемпионата. Просто соревнование индивидуальных стратегий превращается в абсолютно аналогичное соревнование Артелей. Которые "между артелями" начинают играть "Око за око", "Китайцев" и т.п.
521 Lama12
 
31.10.13
11:32
(520) Хм... логично :)
522 Lama12
 
31.10.13
11:33
(520) При равном количестве игроков в артели.
523 FarFar
 
31.10.13
11:33
(520) Поэтому играть "без артелей" - проще и понятнее. Иначе, просто выходим на "новый виток" - где программировать сложнее, а по факту - те же яйца, только в профиль.

(522) Разумеется. Иначе это было бы слишком большим преимуществом.
524 Зойч
 
31.10.13
11:36
(523) и получается что мы де юро артели запрещаем, а по факту их строим.
Хотя на реальную жизнь похоже
525 Lama12
 
31.10.13
11:37
(524) Ага.
526 Lama12
 
31.10.13
11:38
(524) Так же как с китайцами. Знают кого подкармливать :)
Это я про стратегию.
527 FarFar
 
31.10.13
11:39
(524) Кто строит, а кто и не строит.

Например, добропорядочная "Всегда кооперируюсь".
Она и "ФСБ" играют "Всегда кооперируюсь", имеют по свои 3 балла.
С другой стороны, моя "А ты кто такой" почти всегда ее обманывает, имеет 5 баллов. Зато рискует "ухудшить карму", что другие стратегии как то этот факт учтут, и станут мне отказывать.

В этом и смысл соревнования и большого кол-ва разных стратегий.
528 FarFar
 
31.10.13
11:40
(524) "А ты кто такой", например, не пытается жулить с теми стратегиями, которые могут "дать сдачи". Пока не пытается :)
С ними безопаснее кооперироваться. Но иногда можно обмануть.
И т.п.
529 Зойч
 
31.10.13
11:41
(527) ты так и не понял ничего что ли???
530 FarFar
 
31.10.13
11:45
(529) Не знаю, что ты имеешь ввиду. Что я не понял.
531 Зойч
 
31.10.13
11:46
(530) читай (524) до просветления
532 FarFar
 
31.10.13
11:46
(529) Что по факту получается артель тех, которые более-менее кооперируются друг с другом? Но у нас внутри этой "квазиартели" идет напряженная борьба, плюс не всегда участники этой "артели" добропорядочны по отношению друг к другу. Так что все пучком )))
533 KnightAlone
 
31.10.13
11:49
"око за два око" - в чем суть стратегии?

а то тут на ум пришла мысль "око за око с лагами"

1. Кооперируюсь.
2. Если противник "Кооперируюсь" на предыдущем ходе, то следующие 2 хода "отказ". Если противник "отказ" - 2 хода кооперируюсь. То есть по сути то же "око за око", но отвечаем на каждый второй ход, отвечая 2 хода подрят. Надеюсь понятно написал

или "око за око мальчика-тормоза"

1. Кооперируюсь.
2. Отказ
3. Начинается "Око за око", но отвечаем не на предыдущий ход, а на предпредыдущий ход. То есть Если на первом ходу был отказ, то мы кооперируемся делаем не на 2м ходу, а только на третьем.
534 KnightAlone
 
31.10.13
11:49
всю тему не читал, если че)
535 FarFar
 
31.10.13
11:49
(533) Занятные стратегии. Добавлю.
536 FarFar
 
31.10.13
12:30
(533) Вопрос по "око за око с лагами"

Круг 1. Ход соперника - "Кооперируюсь".
По твоей логике - во второй и третьем круге надо выкладывать "Отказ".
Круг 2. Соперник сыграл "Отказ". По твоей логике, в третьем и четвертом круге надо выкладывать "Кооперируюсь".
Вопрос - что же все таки выкладывать в третьем круге?
537 FarFar
 
31.10.13
12:35
(533) "око за око мальчика-тормоза" - добавил.
538 FarFar
 
31.10.13
12:47
(537) Играет средне. На 9-ом месте из 14.
539 KnightAlone
 
31.10.13
13:03
(538) я и не пытаюсь лидера придумать, создаю разнообразие)

(536) аналогия - потери пакетов в сети.

Круг 1. Ход соперника - "Кооперируюсь".
По твоей логике - во второй и третьем круге надо выкладывать "Отказ".
Круг 2. Соперник сыграл "Отказ".  на этот шаг мы никак не реагируем, пакет будет потерян, мы среагировали на него в 1ом ходу с подтомаживаением.

то есть региоруем на каждый нечетный ход соперника
540 KnightAlone
 
31.10.13
13:07
пока обедал придумал еще 2 стратегии, но после размешлений прищел к выводу, что это все тоже око за око))

"давай дружить"

1. Кооперируюсь.
2. Отвечаем на предыдущий шаг соперника так же, как сходил он. отвечаем так до тех пор, пока он не сменит вид ответа.
то есть кооперируемся до тех пор, пока кооперируется. отказываем, пока отказывает.

"хочу выжить" (анти око-за око)

1. Кооперируюсь.
2. Отвечаем на предыдущий шаг соперника противоположно. отвечаем так до тех пор, пока он не сменит вид ответа.
то есть кооперируемся до тех пор, пока он отказывает. отказываем, пока кооперируется.

но такая вроде у вас уже описывалась. обед кончился, больше пока ниче не придумал)
541 SUA
 
31.10.13
13:07
(527)стартовые коэффициенты своей подкрутить надо просто
кстати вопрос организатору - алгоритм может быть самомодифицирующимя?
542 KnightAlone
 
31.10.13
13:08
(540) смысл второй стратегии - Вы там популяцию гнорбите своими алгоритмами, а тут пытаемся свой рейтинг поправить. как поправили - опять гнобим его себе)
543 SUA
 
31.10.13
13:13
и смысла в комментировании моей стратегии особого нет:
- предсказуемость оппонента возвращает 3 параметра -
"общее" - следование стилю ока (менее 50% - можно грабить корованы),
"отказ" - показатель мстительности,
"сотрудничество" - показатель добропорядочности оппонента
и далее линейный выбор оптимальной против него стратегии
544 aka MIK
 
31.10.13
13:15
Читали уже?

"Но вот парадокс: несмотря на то, что обоим участникам выгодна кооперация, в этой игре лучше всего быть подлецом и идти в отказ. Смотрите сами, если другой игрок выбирает отказ, вам тоже выгоден отказ (получаете 1 доллар), если игрок выбирает сотрудничество... вам тоже выгоднее отказаться и сорвать банк (5 долларов). Отказ — это так называемая доминантная стратегия в этой игре. С точки зрения бездушной математики — оба игрока просто должны пойти в отказ.

Это наводит на пессимистичные мысли об окружающем нас мире. Однако когда за игру сажали не математиков, а живых теплокровных людей — результат был обратный. Они стремились к кооперации. А мы и без специальных экспериментов видим, что мир построен на сотрудничестве. Выяснилось, что выгоды кооперации проявляются тогда, когда игра становится многоходовой (итерированной) — отсюда и наши привычки. Гораздо выгоднее получать по 3 доллара на протяжении многих ходов, чем сорвать пятидолларовый куш, который приведет к ссоре и череде однодолларовых отказов. Это уже как–то обнадеживает."

http://politota.d3.ru/comments/487008/
545 SUA
 
31.10.13
13:15
кстати если можно легально пользоваться результатами партий оппонента с посторонними стратегиями - сейчас апдейт своей сделаю до "АНБ" (будет собирать статистику по всем играм а не только своим)
546 FarFar
 
31.10.13
13:16
(539) "на этот шаг мы никак не реагируем, пакет будет потерян,"

Стратегия не может "никак не ответить". Давай какой то алгоритм ответа.
547 FarFar
 
31.10.13
13:17
(540) Да, первая - это "Око за око". Вторая - "Добром за зло, злом за добро". Обе уже участвуют в турнире.
548 FarFar
 
31.10.13
13:18
(545) Я не запрещаю использовать эту информацию в чемпионате. У Lama12 так, кажется, Китайцы работают. И мой "апдейт" к "А ты кто такой" тоже использует частично такую информацию.
549 FarFar
 
31.10.13
13:19
(544) Все это подробно описано в книге Докинза, см. ссылку в (0)
550 Зойч
 
31.10.13
13:21
(544) еще лучше договориться между группой и кидать всех остальных
551 SUA
 
31.10.13
13:22
(550)именно так топовые и пытаются поступать - договориться со всеми кого кинуть невозможно
552 FarFar
 
31.10.13
13:24
(551) Точнее так, кого кинуть страшно и чревато.
553 KnightAlone
 
31.10.13
13:27
(546) пожоже я там малек напупал с терминами) попробуем еще раз.

суть алгоритма. "око за око с лагом (потерей пакетов)"

1. ход Кооперируюсь. Противник Кооперируюсь

2. ход по алгоритму око за око делаем Кооперируюсь. Противник Отказ
3. ход по алгоритму око за око, но не предыдущего хода, а предпредыдущего делаем Кооперируюсь (то есть мы не увидели ход соперника на 2м ходу). Противник Отказ
4. ход по алгоритму око за око делаем Отказ. Противник не важно что
5. ход по алгоритму око за око, но не предыдущего хода, а предпредыдущего делаем Отказ (то есть мы не увидели ход соперника на 4м ходу). Противник Отказ

То есть каждый четный ход мы делаем стандартно по алгоритму око за око
Каждый нечетный ход с 3го мы делаем копию своего предыдущего хода
554 KnightAlone
 
31.10.13
13:31
то есть мы теряем ответы от оппонента каждый четный ход. так как инет у нас 36600 бит/сек )))
так как без ответа мы остаться не можем, даем тот же сигнал, что и в прошлый раз
555 Lama12
 
31.10.13
13:40
(551) Хм... идея.
Завтра реализую если не забуду :)
Игра от обратного.
556 SUA
 
31.10.13
15:21
"АНБ"
из модификации прошлой до глобального сбора статистики - получилась достаточно "злая" стратегия, уверенно держащаяся в лидерах (4-5 место)

Параметр стратегии "ПредсказуемостьОппонентаГлобальная"

СтруктураПредсказуемости = Новый Структура("Общее,Сотрудничество,Отказ",1,1,1)    ;
     Запрос = Новый Запрос;
     Запрос.Текст = "ВЫБРАТЬ
|СУММА(ВЫБОР КОГДА Партии.Карта=Партии1.ОппонентКарта ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК Количество,
       |   СУММА(ВЫБОР КОГДА Партии1.ОппонентКарта=ИСТИНА И Партии.Карта=ИСТИНА ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК КоличествоСотр,
       |   СУММА(ВЫБОР КОГДА Партии1.ОппонентКарта=ИСТИНА И Партии.Карта=ЛОЖЬ ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК КоличествоОбм,
       |   СУММА(ВЫБОР КОГДА Партии1.ОппонентКарта=ЛОЖЬ И Партии.Карта=ИСТИНА ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК КоличествоОш,
       |   СУММА(ВЫБОР КОГДА Партии1.ОппонентКарта=ЛОЖЬ И Партии.Карта=ЛОЖЬ ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК КоличествоОтк
     |ИЗ
     |    РегистрСведений.Партии КАК Партии ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.Партии КАК Партии1
     |ПО
     |    Партии.Чемпионат = &Чемпионат И Партии1.Чемпионат = &Чемпионат
     |    И Партии.Стратегия = Партии1.Стратегия
     |    И Партии.Оппонент = &Оппонент И Партии1.Оппонент = &Оппонент
       |    И Партии.НомерПартии = (Партии1.НомерПартии-1) ";
    
    Запрос.УстановитьПараметр("Чемпионат", сПарамВход.Чемпионат);
    Запрос.УстановитьПараметр("Оппонент", сПарамВход.Оппонент);
    Запрос.УстановитьПараметр("Стратегия", сПарамВход.Стратегия);
    
    Рез = Запрос.Выполнить().Выгрузить();

Если Рез.Количество() Тогда
  Количество = Рез.Итог("Количество");
  СтруктураПредсказуемости.Общее=Количество/(сПарамВход.НомерПартии-2);
  Количество = Рез.Итог("КоличествоСотр")+Рез.Итог("КоличествоОш");
  СтруктураПредсказуемости.Сотрудничество = ?(Количество=0,1,Рез.Итог("КоличествоСотр")/Количество);
  Количество = Рез.Итог("КоличествоОбм")+Рез.Итог("КоличествоОтк");
  СтруктураПредсказуемости.Отказ = ?(Количество=0,1,Рез.Итог("КоличествоОтк")/Количество);
КонецЕсли;
  РезультатВыполненияПараметра = СтруктураПредсказуемости;

Сама стратегия (по сути прошлая ФСБ, но в сборе данных оппонента не ограничивается собственной историей взаимоотношений)-

сПарамВход = сВход;

Если сПарамВход.НомерПартии < 3 Тогда

  РезультатВыполнения = Истина;

Иначе

  сПарамВход.Вставить("КоличествоПредшествующихХодов",1);

  Карта = ВычислитьПараметр("КартаОппонентаНаХодуПредшествующемНаХ",сПарамВход);
  Статистика = ВычислитьПараметр("ПредсказуемостьОппонентаГлобальная",сПарамВход);
  Если Статистика.Общее<=1/2 Тогда
     РезультатВыполнения = Ложь;
  ИначеЕсли Статистика.Отказ<=1/2 Тогда
     РезультатВыполнения = Ложь;
  ИначеЕсли Статистика.Сотрудничество<=1/2 Тогда
     РезультатВыполнения = Ложь;
  ИначеЕсли Статистика.Отказ>9 /10 Тогда
     РезультатВыполнения = Карта;
  ИначеЕсли Карта = ИСТИНА Тогда
     РезультатВыполнения = Карта;
  Иначе
     РезультатВыполнения = (Статистика.Сотрудничество>Статистика.Отказ);
КонецЕсли;
КонецЕсли;
557 SUA
 
31.10.13
15:23
ну и ТОП6 тестового чемпионата для иллюстрации
Количество баллов    Сыграл "Кооперация"    Сыграл "Отказ"    Взаимная кооперация    Взаимный отказ    Я обманул    Меня обманули    Стратегия
4 299    827    573    818    255    318    9    А ты кто такой? (автор - FarFar)
4 179    904    496    893    245    251    11    ФСБ
4 028    962    438    938    244    194    24    Вера с увеличивающейся вероятностью (автор - Lama12)
4 024    952    448    928    250    198    24    Под дурочку (автор - Lama12)
3 968    529    871    475    453    418    54    АНБ
3 751    1 141    259    1 064    184    75    77    Око за око
558 SUA
 
31.10.13
15:25
почти вдвое реже кооперируется, но при этом вдвое успешнее обманывает
559 SUA
 
31.10.13
15:32
(длительность 100 партий)
хотя на длительности 10-20 подсаживается сначала прилично
560 FarFar
 
31.10.13
15:48
(556) я вставил. Но что то так долго стало работать, капец. Посмотри, может что соптимизировать можно?
561 SUA
 
31.10.13
16:08
возможно запрос получится оптимизировать так, но не факт:
562 FarFar
 
31.10.13
16:13
(561) Извини, но в таком виде я ее не приму ((( Обычно у меня чемпионат в 100 ходов прокручивается минут за 5, а тут уже полчаса висит, дошло до 80-го хода.
563 SUA
 
31.10.13
16:16
кстати что интересно
выключил ФСБ - в результате АНБ вылезла на 2е место:
Количество баллов    Сыграл "Кооперация"    Сыграл "Отказ"    Взаимная кооперация    Взаимный отказ    Я обманул    Меня обманули    Стратегия
4 049    626    574    617    168    406    9    А ты кто такой? (автор - FarFar)
3 516    469    731    407    340    391    62    АНБ
3 419    757    443    732    248    195    25    Под дурочку (автор - Lama12)
3 383    755    445    722    252    193    33    Вера с увеличивающейся вероятностью (автор - Lama12)
3 160    943    257    865    180    77    78    Око за око
3 133    925    275    842    192    83    83    Противоречивая девочка (автор - Lama12)
3 012    982    218    858    163    55    124    Око за два ока
2 867    446    754    107    306    448    339    Китайцы (автор - Lama12)
564 FarFar
 
31.10.13
16:19
(563) Два агенства друг другу мешают ))) Резидентов перекупают друг у друга, одни и те же явки пытаются использовать. Бардак и неразбериха.
565 SUA
 
31.10.13
16:21
(564)это да :)
причем еще заметил - АНБ часто использует "мусорную" информацию (вроде истории взаимоотношений с антистратегией), ну это поправлю думаю
566 FarFar
 
31.10.13
16:22
(565) ты учти мой пост (562). Если не ускоришь её - в общий генофонд человечества она не войдет ))
567 SUA
 
31.10.13
16:29
(566)заменить код параметра:

СтруктураПредсказуемости = Новый Структура("Общее,Сотрудничество,Отказ",1,1,1)    ;
     Запрос = Новый Запрос;
     Запрос.Текст = "ВЫБРАТЬ Карта,ОппонентКарта,НомерПартии,НомерПартии+1 КАК Ответ, Стратегия ПОМЕСТИТЬ Партии ИЗ РегистрСведений.Партии КАК Партии ГДЕ Партии.Чемпионат=&Чемпионат И Партии.Оппонент=&Оппонент ИНДЕКСИРОВАТЬ ПО Стратегия,НомерПартии,Ответ; ВЫБРАТЬ
|СУММА(ВЫБОР КОГДА Партии.Карта=Партии1.ОппонентКарта ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК Количество,
       |   СУММА(ВЫБОР КОГДА Партии1.ОппонентКарта=ИСТИНА И Партии.Карта=ИСТИНА ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК КоличествоСотр,
       |   СУММА(ВЫБОР КОГДА Партии1.ОппонентКарта=ИСТИНА И Партии.Карта=ЛОЖЬ ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК КоличествоОбм,
       |   СУММА(ВЫБОР КОГДА Партии1.ОппонентКарта=ЛОЖЬ И Партии.Карта=ИСТИНА ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК КоличествоОш,
       |   СУММА(ВЫБОР КОГДА Партии1.ОппонентКарта=ЛОЖЬ И Партии.Карта=ЛОЖЬ ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК КоличествоОтк
     |ИЗ
     |    Партии КАК Партии ВНУТРЕННЕЕ СОЕДИНЕНИЕ Партии КАК Партии1
     |ПО
     |    Партии.Стратегия = Партии1.Стратегия
       |    И Партии.Ответ = Партии1.НомерПартии ";
    
    Запрос.УстановитьПараметр("Чемпионат", сПарамВход.Чемпионат);
    Запрос.УстановитьПараметр("Оппонент", сПарамВход.Оппонент);
    Запрос.УстановитьПараметр("Стратегия", сПарамВход.Стратегия);
    
    Рез = Запрос.Выполнить().Выгрузить();

Если Рез.Количество() Тогда
  Количество = Рез.Итог("Количество");
  СтруктураПредсказуемости.Общее=Количество/(сПарамВход.НомерПартии-2);
  Количество = Рез.Итог("КоличествоСотр")+Рез.Итог("КоличествоОш");
  СтруктураПредсказуемости.Сотрудничество = ?(Количество=0,1,Рез.Итог("КоличествоСотр")/Количество);
  Количество = Рез.Итог("КоличествоОбм")+Рез.Итог("КоличествоОтк");
  СтруктураПредсказуемости.Отказ = ?(Количество=0,1,Рез.Итог("КоличествоОтк")/Количество);
КонецЕсли;
  РезультатВыполненияПараметра = СтруктураПредсказуемости;
568 SUA
 
31.10.13
16:29
теперь в 5 минут проходит
569 SUA
 
31.10.13
16:32
да, и при 2х спецслужбах китайцы сливаются АНБ а с ФСБ в отказ идут))) что тоже забавно
570 FarFar
 
31.10.13
16:33
(569) Наверно, больше платит.
571 SUA
 
31.10.13
16:34
и сразу оптимизированная стратегия АНБ
сПарамВход = сВход;

Если сПарамВход.НомерПартии < 3 Тогда

  РезультатВыполнения = Истина;

Иначе

  сПарамВход.Вставить("КоличествоПредшествующихХодов",1);

  Карта = ВычислитьПараметр("КартаОппонентаНаХодуПредшествующемНаХ",сПарамВход);
  Статистика = ВычислитьПараметр("ПредсказуемостьОппонентаГлобальнаяОпт",сПарамВход);
  Если Статистика.Общее<=1/2 Тогда
     РезультатВыполнения = Ложь;
  ИначеЕсли Статистика.Отказ<=1/2 Тогда
     РезультатВыполнения = Ложь;
  ИначеЕсли Статистика.Сотрудничество<=1/2 Тогда
     РезультатВыполнения = Ложь;
  ИначеЕсли сПарамВход.НомерПартии>10 Тогда
     РезультатВыполнения = (сПарамВход.Чемпионат.БаллКогдаЯОбманул*(1-Статистика.Отказ)+сПарамВход.Чемпионат.БаллЗаВзаимныйОтказ*Статистика.Отказ < сПарамВход.Чемпионат.БаллКогдаМеняОбманули*(1-Статистика.Сотрудничество)+сПарамВход.Чемпионат.БаллЗаВзаимнуюКооперацию*Статистика.Сотрудничество);
   Иначе
     РезультатВыполнения = Карта;
КонецЕсли;
КонецЕсли;
572 SUA
 
31.10.13
16:34
100 партий - отрыв от 1го места 3 очка
573 SUA
 
31.10.13
16:36
слила старую версию фсб (где кстати тоже можно код на этот поменять, только параметр другой использовать в вычислении статистики)
574 SUA
 
31.10.13
16:37
из (571) для АНБ использовать:
Статистика = ВычислитьПараметр("ПредсказуемостьОппонентаГлобальная",сПарамВход);
для ФСБ:
Статистика = ВычислитьПараметр("ПредсказуемостьОппонента",сПарамВход);
575 FarFar
 
31.10.13
16:39
(571) Вываливается с ошибкой {(13)}: Значение не является значением объектного типа (Общее)
  Если Статистика.Общее<=1/2 Тогда

(574)

Кинь в одном посте последние версии параметров и стратегий. Желательно под спойлером. Для спойлера нужно использовать квадратные скобки [ ] а между ними английскую букву C
576 FarFar
 
31.10.13
16:39
[C]
пример кода
под спойлером
577 FarFar
 
31.10.13
16:40
(576) Чё то не сворачивает ))) Lama12 - как правильно под спойлер пихать?
578 SUA
 
31.10.13
16:41
тест [s]123[/s]
579 Зойч
 
31.10.13
16:41
580 Зойч
 
31.10.13
16:42
Если ИначеЕсли
581 SUA
 
31.10.13
16:42
опа, гопарь побит
сейчас еще посмотрю улучшения возможные
582 FarFar
 
31.10.13
16:42
(C)
тест под спойлером
Англ. С в круглых скобках
583 Зойч
 
31.10.13
16:43
в оффах не рабатает
584 FarFar
 
31.10.13
16:43
(581) У меня вываливается стратегия с ошибкой!
585 FarFar
 
31.10.13
16:43
(583) В этой ветке Lama12 прекрасно кидал под спойлер.
586 SUA
 
31.10.13
16:45
(584)знаю я параметр копированием делал, сейчас скину итоговые версии
587 SUA
 
31.10.13
16:49
еще любопытно: поставил флаг "Играть с собой", АНБ-АНБ уходит в отказ
588 SUA
 
31.10.13
16:50
АНБ
сПарамВход = сВход;

Если сПарамВход.НомерПартии < 3 Тогда

  РезультатВыполнения = Истина;

Иначе

  сПарамВход.Вставить("КоличествоПредшествующихХодов",1);

  Карта = ВычислитьПараметр("КартаОппонентаНаХодуПредшествующемНаХ",сПарамВход);
  Статистика = ВычислитьПараметр("ПредсказуемостьОппонентаГлобальная",сПарамВход);
  Если Статистика.Общее<=1/2 Тогда
     РезультатВыполнения = Ложь;
  ИначеЕсли Статистика.Отказ<=1/2 Тогда
     РезультатВыполнения = Ложь;
  ИначеЕсли Статистика.Сотрудничество<=1/2 Тогда
     РезультатВыполнения = Ложь;
  ИначеЕсли сПарамВход.НомерПартии>10 Тогда
     РезультатВыполнения = (сПарамВход.Чемпионат.БаллКогдаЯОбманул*(1-Статистика.Отказ)+сПарамВход.Чемпионат.БаллЗаВзаимныйОтказ*Статистика.Отказ < сПарамВход.Чемпионат.БаллКогдаМеняОбманули*(1-Статистика.Сотрудничество)+сПарамВход.Чемпионат.БаллЗаВзаимнуюКооперацию*Статистика.Сотрудничество);
   Иначе
     РезультатВыполнения = Карта;
КонецЕсли;
КонецЕсли;

Параметр как и раньше (не менять)
589 Lama12
 
31.10.13
16:53
(585) Включили OFF.
Видимо NS посчитал чт с точки зрения классической математики задача решена и интереса не представляет (мои предположения). :)

А вообще сполер работает на английские буквы 1C d квадратных скобках.

тут
590 Lama12
 
31.10.13
16:53
а нет :) сработал
591 Lama12
 
31.10.13
16:54
так начало
592 Lama12
 
31.10.13
16:54
Так  конец
593 FarFar
 
31.10.13
17:09
(533)

"око за око с лагами" - уже запарился с ней. Вот уж назвал яхту!

пост 1

"1. Кооперируюсь.
2. Если противник "Кооперируюсь" на предыдущем ходе, то следующие 2 хода "отказ". Если противник "отказ" - 2 хода кооперируюсь. То есть по сути то же "око за око", но отвечаем на каждый второй ход, отвечая 2 хода подрят. Надеюсь понятно написал"


пост 2.
"суть алгоритма. "око за око с лагом (потерей пакетов)"

1. ход Кооперируюсь. Противник Кооперируюсь

2. ход по алгоритму око за око делаем Кооперируюсь. Противник Отказ
3. ход по алгоритму око за око, но не предыдущего хода, а предпредыдущего делаем Кооперируюсь (то есть мы не увидели ход соперника на 2м ходу). Противник Отказ
4. ход по алгоритму око за око делаем Отказ. Противник не важно что
5. ход по алгоритму око за око, но не предыдущего хода, а предпредыдущего делаем Отказ (то есть мы не увидели ход соперника на 4м ходу). Противник Отказ

То есть каждый четный ход мы делаем стандартно по алгоритму око за око
Каждый нечетный ход с 3го мы делаем копию своего предыдущего хода"


Я не могу объединить посты:
"Если противник "Кооперируюсь" на предыдущем ходе, то следующие 2 хода "отказ""
и
"То есть каждый четный ход мы делаем стандартно по алгоритму око за око"


Пока у меня вот такой код вышел. Поправь его:

сПарамВход = сВход;

Если сПарамВход.НомерПартии = 1 Тогда

  РезультатВыполнения = Истина;

Иначе

  Если ВычислитьПараметр("НомерХодаХЧетный",сПарамВход) = Ложь Тогда //Если номер хода нечетный - просчитываем нашу реакцию

    сПарамВход.Вставить("КоличествоПредшествующихХодов",1);

    Карта = ВычислитьПараметр("КартаОппонентаНаХодуПредшествующемНаХ",сПарамВход);

    РезультатВыполнения = НЕ Карта;

  Иначе  //в случае четного хода - повторяем свой предыдущий ход

    сПарамВход.Вставить("КоличествоПредшествующихХодов",1);

    Карта = ВычислитьПараметр("КартаСтратегииНаХодуПредшествующемНаХ",сПарамВход);

    РезультатВыполнения = Карта;

  КонецЕсли;

КонецЕсли;
594 NS
 
31.10.13
17:11
(589) Это не математическая задача.
Точнее математическая - посмотрев текущие алгоритмы соперников я могу написать версию которая со всеми (позволяющими это) войдет в сговор. Но это не интересно.
595 NS
 
31.10.13
17:11
Я ОФФ не включал. :)
596 FarFar
 
31.10.13
17:12
(594) То, что она войдет в сговор - вовсе не гарантирует то, что она наберет больше всех очков.
597 FarFar
 
31.10.13
17:12
(594), (596)
А ты придумай ка такую, чтобы она победила в чемпионате по очкам!
598 NS
 
31.10.13
17:13
(596) Если правильно войдет - гарантирует.
599 NS
 
31.10.13
17:13
(597) Выложи код всех соперников.
600 FarFar
 
31.10.13
17:14
Я сейчас базу выложу целиком. Или у тебя восьмерки нет, тебе именно код нужен? Тогда давай на почту, чтобы тут не мусорить большими текстами.
601 NS
 
31.10.13
17:14
(600) Нет восьмерки.
На файлхостинг любой лучше положи, чтоб всем доступно было.
602 FarFar
 
31.10.13
17:16
(601) Ок, выложу. Хотя кроме тебя все остальные смотрят прямо в базе. Там коды стратегий не закрыты - смотри на здоровье.
603 NS
 
31.10.13
17:22
(602) У меня сейчас нет восьмерки. И ключ я где-то потерял.
604 Lama12
 
31.10.13
17:28
(603) Я дома учебной пользуюсь. Бесплатной. Для этой задачи хватает. Лицензия позволяет.
605 NS
 
31.10.13
17:30
Пока попробуй - первая заявка кооперируюсь,
пока соперник кооперируется тоже кооперируемся, как только в первый раз он решил наказать - все последующие заявки наказать.
Предыдущую, "всегда наказать" тоже оставь :)
Их в итоге должно быть несколько - начальная добавленная тобой, и от всех кто добавил такую стратегию от себя.
606 Lama12
 
31.10.13
17:30
607 SUA
 
31.10.13
17:31
(605)стратегия "Спусковой крючок" была, она не оптимальна на больших дистанциях
608 FarFar
 
31.10.13
17:32
(605) NS я сейчас добавлю твои 2 стратегии. А ты, плиз, скачай учебную 1С-ку ))) Ужасно не хочется с текстовиками гемороиться.
609 NS
 
31.10.13
17:32
(608) пришлют сразу после заполнения анкеты?
610 NS
 
31.10.13
17:33
(607) Пусть пока будет.
611 FarFar
 
31.10.13
17:33
(607) Мы про неё говорили, но в чемпионат не вставляли. Назову "Спусковой крючок от NS".

Антиподом ей будет "Почтальон Печкин". Начинает с отказа, и отказывает до тех пор, пока соперник не выставит хоть одно "Кооперируюсь". Далее всегда кооперируется.
Слоган: "Я почему раньше злой был? Потому что у меня велосипеда не было. А теперь у меня велосипед есть, я теперь всегда добрый буду".
612 SUA
 
31.10.13
17:37
(611)жду свежего результата чампионата =)
613 FarFar
 
31.10.13
17:53
(612) он идет... судя по всему результат многих удивит )))
614 KnightAlone
 
31.10.13
17:59
(593) вроде все верно. я изначально напутал в описании. око за око копирует прошлый ход противника, а я в описании его инвертировал
615 FarFar
 
31.10.13
18:10
(612) Вот результаты:
http://s020.radikal.ru/i719/1310/a1/ab9bc4992318.png
Места по баллам, пятерка лидеров:
1. АНБ 5 605
2. Спусковой крючок 5 546
3. ФСБ 5 366
4. А ты кто такой? 5 350
5. Под дурочку 4 945

АНБ догнал и перегнал "Спускового крючка" только на последней десятке ходов!

Забрать базу, обработку и рисунок можно тут
http://webfiles.ru/files/38635844
пароль 123456
В базе - регистр "Партии" заполнен данными чемпионата. Надо будет в обработку вставить возможность загружать данные из регистра, а не только показывать последний состоявшийся чемпионат.
616 Lama12
 
31.10.13
18:20
(615) Забавно :)
617 SUA
 
31.10.13
18:23
(615) а я думал еще оптимизировать надо =)
особенно 3е место не ожидал
618 FarFar
 
31.10.13
18:25
(616) Ага! "Спусковой крючок" меня удивил. Он и у Докинза упоминался в числе стратегий, и у нас засветился. Но так его в список участников и не добавили. А он вона как выстрелил!

FarFar
(286) Я правильно понял твою стратегию:
Первый ход - кооперация.
Далее - всегда кооперация, до первого "Отказа" противника. Если был отказ - более не кооперируемся никогда?
Такая "Стратегия - спусковой крючок".

Ахиллес
(287) Если был отказ, то убиваем противника, что бы он не мог больше ни одного хода сделать. И идём играть с другим :-)
619 FarFar
 
31.10.13
18:27
(617) Ты кстати посмотри! При включенной галке "стратегия играет сама с собой", твои два ведомства между собой не "отказывались", насколько я помню. Может в коде ошибка, в генетическом? Правильно ли я все скопипастил?
620 SUA
 
31.10.13
18:32
не, в последней версии они спелись
стратегия АНБ очень сильно зависит от состава участников, и если много корованов для ограбления и нелогичных по ее мнению стратегий - она считает себя грабящей и предающей и отказывает в доверии
621 FarFar
 
31.10.13
18:34
(620) Саморефлексирующая какая!
622 SUA
 
31.10.13
18:37
и еще наблюдение
повторил чемпионат, и первые ходов 70 АНБ была самой злой (не считая всегда предающей), потом по этому показателю ее все же обошли, но осталась самой злой в ТОП10, причем обманывает весьма успешно
ФСБ походу играет почти "спусковой крючок" (с некоторыми модификациями), мне влом ее оптимизировать
623 SUA
 
31.10.13
18:39
и впечатлил результат скрина эволюции: "живые экземпляры - 5" (в варианте "Минимум" 1е место и 110)
624 FarFar
 
31.10.13
18:42
(623) может она вначале сильно сливает, и остается один-два экземпляра, которые потом размножиться не могут.
В любом случае, мы сравниваем стратегии по колонке "Балл". Количество особей - весьма спорный показатель.
625 SUA
 
31.10.13
18:48
запустил на 200 ходов, интересно что покажет
626 FarFar
 
31.10.13
19:00
(615),(625)

Пока можешь поисследовать в другой базе, что же происходило в том чемпионате
выложил обработку, в которой добавил кнопку, позволяющую смотреть состояние чемпионата на произвольный ход:
http://webfiles.ru/files/38636624
пароль 123456

только кол-во живых особей не показывает, да и хрен с ним. Пока некогда с этим сегодня разбираться.
627 FarFar
 
31.10.13
19:01
(626) Она берет данные именно из регистра "Партии". Так что если в базе провести чемпионат, а потом снова его же - данные потеряются. Но, конечно, если создать новый элемент в справочнике "Чемпионаты" и провести турнир в нем - в регистре "Партии" данные по первому чемпионату останутся.
628 SUA
 
31.10.13
19:06
(626) на 130 АНБ продолжает уверенно отрываться, спусковой крючок остается 2м, ФСБ и гопарь периодически меняются за 3-4 места: 7372, 7180, 6943, 6915. На 5е место вера вылезла (6415) . Теперь выключаю и домой - не успел...
629 FarFar
 
31.10.13
19:17
(626) Что, хороша игрушка? ;-)
Я тоже домой.
630 NS
 
31.10.13
21:15
Нужно просто посмотреть все стратегии которые способны на коалицию, и входить с ними с соглашение.
Например обратный спусковой крючок. С ним скооперироваться легко, делаем поправку к спусковому крючку - если последние пять раз соперник хотел кооперироваться, то кооперируемся несмотря на то что ушли в режим наказания.
631 NS
 
31.10.13
21:42
Короче, еще одна стратегия (к всегда наказывать и спусковой крючок с первым кооперироваться и постоянным наказанием после первого наказания соперника)

Всего ходов пусть уже прошло N, из них соперник кооперировался K раз.
Сначала (первым ходом) кооперируемся, а потом если (K*2.9)>(N+1.8), то кооперируемся, иначе наказываем.
632 FarFar
 
31.10.13
21:48
(631) Я добавлю. Хотя, это будет разновидность моего алгоритма "А ты кто такой?", только с другим коэффициентом.
У меня "А ты кто такой" - первый ход кооперируется, а затем кооперируется с соперником, только если соотношение обманов со стороны соперника к числу сыгранных ходов < 0.1
633 FarFar
 
31.10.13
21:50
(623) P.S. отказов со стороны соперника именно по отношению у тебе.
634 FarFar
 
31.10.13
21:52
(631) А у тебя твой коэффициент в новой предлагаемой стратегии - наобумный, или ты его как то хитро просчитал?
635 NS
 
31.10.13
21:52
(632) Отменяется.
Я не понял как начисляются очки.
Ты мне писал все положительные коэффициенты, а я вижу в первых постах речь о штрафе.
636 FarFar
 
31.10.13
21:55
(635) О каком штрафе? Я тебе таблицу баллов давал, там минимальное значение = 0
637 NS
 
31.10.13
21:57
(636) см (4)
В (632) я рассчитал, но исходя что за кооперируюсь 5, а если один другого наказал то 3. А там наоборот.
638 FarFar
 
31.10.13
22:00
(4) ну, то что про штрафы - это копипаст.

Таблица такая (как я тебе и давал).
Тот, кто обманул - получает 5
Кого обманули - получает 0
Взаимная кооперация - оба получают 3
Взаимный отказ - оба получают 1
639 programmist1cswworld
 
01.11.13
02:47
(0) Только дошло. В контексте "соблюдать 10 заповедей или нет" почитаю.
640 SUA
 
01.11.13
11:25
(630)зачем со всеми?
простака можно наказывать безусловно
641 FarFar
 
01.11.13
11:38
(630) Ну, только его вычислить сначала надо. Хотя это несложно.

Правда может быть нюанс, что другие наши шибко умные стратегии начнут анализировать этот твой "грабеж корованов", и сочтут тебя за опасного.
642 NS
 
01.11.13
13:22
(641) Вообще, по уму, все кто хочет кооперироваться должны начинать с кооперации. Поэтому спусковой крючок - самое то.
Плохо он вступит только против "всегда кооперируемся", которого можно было бы загнобить. Но он этого делать не будет.
643 programmist1cswworld
 
01.11.13
13:38
wiki:Меметика "В книге Докинз утверждает, что мем — единица информации, находящаяся в мозгу и являющаяся мутирующим репликатором в культурной эволюции человечества"
в принципе можно и не читать. Все понятно.
644 programmist1cswworld
 
01.11.13
13:44
Кто не согласится, тому таллий в воду, смотрите: "Мем".
645 FarFar
 
01.11.13
14:04
(642) Пример спускового крючка, который удачно грабит "Всегда кооперируемся" - это "А ты кто такой?". Он, по сути, тот же "Спусковой крючок", только с более щадящим коэффициентом, допускает 1 отказ на 10 ходов. Но, кроме того, умеет обижать безответных ("апгрейд").
Вчера ради интереса дома "закрутил" в нем "коэффициент обидчивости" с 1/10 до 1/100 (то есть, сделал классический "спусковой крючок" добавлением одного нолика), и он вышел в чемпионате на 1-е место, даже ФСБ и АНБ заметно отстали.
646 SUA
 
01.11.13
14:19
(645)состав участников тот же?
иногда у меня анб на 2м была
а насчет обидчивости - с "противоречивой девочкой" анб предпочитает кооперацию несмотря на ее обманы иногда, что на длинной дистанции работает в плюс (обидчивые стратегии часто уходят с ней во взаимный отказ)
647 FarFar
 
01.11.13
14:22
(646) Да, все то же самое было, как и вечером.
648 Lama12
 
01.11.13
14:34
(646) На длинных дистанциях, она должна идти в кооперацию. Если ее не обманывали. Вероятность обмана существенно снижается. Вроде там чувствительность ГСЧ 1/1000. Т.е. обманывать, при честной игре противника (всегда кооперируюсь), она может примерно до 1000 хода. Дальше должна всегда играть на кооперацию.
649 Lama12
 
01.11.13
14:36
Хотел сегодня стратегию новую добавить, но понял что она практически полностью повторяет ФСБ :)
Не стал делать.
650 FarFar
 
01.11.13
14:43
(646) Я все жду, когда же "Око за око" окажется успешнее "спусковых крючков" :-) Время идет, а чё то оно не особо впечатляет. А у Аксельрода в обоих чемпионатах победило.
651 SUA
 
01.11.13
14:45
(648)видимо там нельзя было подглядывать чужие результаты и применять вероятностные стратегии
652 SUA
 
01.11.13
14:45
*к 650
653 Lama12
 
01.11.13
14:48
(650) Что-то подсказывает что Аксельрод, что-то напутал. Спусковой крючек, даже не умеющий обманывать простаков, должен быть более эффективен чем "око за око". Просто математически. При условии что большая часть стратегий начинают игру с кооперации.
654 Wasya
 
01.11.13
14:49
В последнем туре можно всех кинуть выставив "Отказ". Обидеться уже никто не успеет.
655 Lama12
 
01.11.13
14:51
(654) Не известно какой турнир будет последним :)
Это условие игры.
Экспериментируем обычно с 100. Но можно и больше партий сыграть.
656 Кай066
 
01.11.13
14:51
(654) как определить последний тур?
657 NS
 
01.11.13
15:00
(653) Он не математик, совсем не математик.
Поэтому даже примерно не понимает что происходит. Нафантазировал в матричной игре! плохих и хороших. Хотя вопрос только в сговоре.
658 NS
 
01.11.13
15:01
А математика говорит, что независимо от стратегии соперника равновесие по Нешу при такой матрице - это всегда наказывать. Всё остальное сговор, а сговор зависит от конвенций.
659 Wasya
 
01.11.13
15:07
(658) А причем тут матричные игры? Текущая задача это скорее всего пошаговая стратегия. Ведь у нас есть информация об уже сыгранных играх и в процессе игры мы можем менять свою стратегию. К тому же игра с ненулевой суммой.
660 NS
 
01.11.13
15:15
(659) ?
Это самая обыкновенная матричная игра с ненулевой суммой.
В любой матричной игре с ненулевой суммой можно менять свою стратегию.
661 NS
 
01.11.13
15:16
И даже с нулевой суммой никто не запретит менять стратегию. Как ни странно :)
662 NS
 
01.11.13
15:23
(649) Поэтому я и говорю не об оптимальной стратегии, а об равновесной по Нэшу. Игра двух соперников с ненулевой суммой - сводится к игре трех соперников с нулевой суммой с фиксированной стратегией одного из игроков (болвана), а вот это, матричные игры нескольких соперников, как раз Нэш и изучал.
663 SUA
 
01.11.13
15:36
(645) на 200 ходов АНБ таки обошла ее, но 2е место она себе оставила
664 FarFar
 
01.11.13
15:40
(663) Ты у "А ты кто такой" коээфициент поправил с 0.1 до 0.01 ?
Поправь до 0.001, или вообще напиши так, что если есть хоть один отказ, невзирая на кол-во ходов, то отказывать. И проверь еще раз на 200-ходовке )))

Вообще, АНБ меня радует тем, что стартует не очень удачно, но чем больше номер партии, тем лучше играет.
665 programmist1cswworld
 
03.11.13
03:43
(643) Ой. Извиняюсь, перевод неправильный был, все-таки прочту.
666 programmist1cswworld
 
03.11.13
06:35
(0) Общался с православным духовенством, один раз но как показалось не безрезультатно. Сказал одну фразу что главное для бесов чтобы человек умер нераскаянным. Но каятся можно каждый каждую минуту за предыдущую, да так и не раскаяться. Т.е. в этом плане православие для меня тоже кабально несколько. (хотя кому-то помогает достичь) И вот поняв почему это главное и в чем здесь подвох, можно начать оценивать действия с точки зрения: не хочешь ли ты чтобы человек испытывал некий комплекс неполноценности. Или не хотят ли этого от тебя? ПрИсмерти конечно.
667 Lama12
 
04.11.13
09:19
(666) Проанализируй христианскую мораль с точки зрения "взрослости" бога. Исходя из тех принципов что заложены в определения "хорошо", "плохо" и т.д. Базовые определения.
Может показаться что бог - ребенок. Причем маленький :)
Дабы не сочли за разжигание, усе - ИМХО.
2 + 2 = 3.9999999999999999999999999999999...