Автоматический подбор параметров движка

Discussion in 'Машинное отделение' started by WildCat, 16 Feb 2007.

  1. Fruit Александр

    • Заслуженный
    • Участник
    • Старожил
    Member Since:
    12.02.2006
    Message Count:
    2.201
    Likes Received:
    64
    Репутация:
    3
    Оффлайн
    Просто, я помню, ты говорил, что нет смысла делать разную ОФ для разных стадий партии, как в Pro Deo. Там разделение: миттельшпиль, а эндшпиль делится на 3 вида: без ферзей, от 10 фигур и меньше, от 26 и меньше (The abbreviations in the Phase Overview stand for:
    MIDG: Opening and Middle Game.
    END1: No Queens on the board.
    END2: Real Endgame. Sum black&white <= 26 using the Pawn=1, Knight=3, Bishop=3, Rook=5, Queen=9 formula.
    END3: Late Endgame. Sum black&white <= 10 using the above formula, so Rook, Bishop, Knight and pawn endings.)
  2. TopicStarter Overlay

    WildCat Коршунов Игорь

    • Команда форума
    Member Since:
    04.05.2006
    Message Count:
    3.599
    Likes Received:
    4
    Репутация:
    0
    Location:
    Гомель
    Оффлайн
    Это таблица ценности полей для короля, когда ему прятаться от врагов нужно.
  3. Fruit Александр

    • Заслуженный
    • Участник
    • Старожил
    Member Since:
    12.02.2006
    Message Count:
    2.201
    Likes Received:
    64
    Репутация:
    3
    Оффлайн
    Тогда g1 в самый раз, h2 тож неплохо.
  4. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Member Since:
    02.05.2006
    Message Count:
    6.811
    Likes Received:
    96
    Репутация:
    3
    Location:
    Санкт-Петербург
    Оффлайн
    Нет, это говорил не я - Даже в Анечке несколько видов ОФ -
    миттельшпильная, эндшпильная, и оценка простейших эндшпилей.
  5. Fruit Александр

    • Заслуженный
    • Участник
    • Старожил
    Member Since:
    12.02.2006
    Message Count:
    2.201
    Likes Received:
    64
    Репутация:
    3
    Оффлайн
    Я, наверное, тебя неправильно понял. Разговор точно был по ICQ 19 ноября :) Могу привести отрывок.
  6. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Member Since:
    02.05.2006
    Message Count:
    6.811
    Likes Received:
    96
    Репутация:
    3
    Location:
    Санкт-Петербург
    Оффлайн
    Может я сомневался в том что можно посчитать оценку разбив позиции на сотни классов? :)
  7. Fruit Александр

    • Заслуженный
    • Участник
    • Старожил
    Member Since:
    12.02.2006
    Message Count:
    2.201
    Likes Received:
    64
    Репутация:
    3
    Оффлайн
    Вот, собственно, кусочек:

    Александр (22:29:58 19/11/2006)
    ну, а зачем ещё делать When SIMPLE ENDGAME = endgame2.eng, например?

    ———————————————————>-
    Александр (22:30:12 19/11/2006)
    зачем вообще 2 вида создал...странно

    ———————————————————<-
    NS (22:30:17 19/11/2006)
    Для тестирования.

    ———————————————————<-
    NS (22:30:28 19/11/2006)
    Нужно же как-то настраивать веса.

    ———————————————————>-
    Александр (22:30:28 19/11/2006)
    вот вот...значит изменения бывают

    ———————————————————<-
    NS (22:30:42 19/11/2006)
    Бывают - они пользователям не нужны.

    ———————————————————<-
    NS (22:31:06 19/11/2006)
    Ничего ни в силе игры, ни в стиле это не изменит.
    Нужны только миттельшпильные настройки.
  8. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Member Since:
    02.05.2006
    Message Count:
    6.811
    Likes Received:
    96
    Репутация:
    3
    Location:
    Санкт-Петербург
    Оффлайн
    Я там не про то говорил. Я говорил про настройку таблиц пользователями.
  9. Fruit Александр

    • Заслуженный
    • Участник
    • Старожил
    Member Since:
    12.02.2006
    Message Count:
    2.201
    Likes Received:
    64
    Репутация:
    3
    Оффлайн
    Данные на сегодня:
    1. 169.prs 22
    2. 117.prs 21
    3. 167.prs 20
    4. 166.prs 14
    5. 172.prs 13
    6. 149.prs 12
    7. 120.prs 9
    8. 106.prs 7
    9. 158.prs 6
    10. 164.prs 6
    11. 173.prs 5
    12. 141.prs 5
    13. 162.prs 0
    14. 140.prs 0
    15. 150.prs -1
    16. 115.prs -2
    17. 159.prs -3
    18. 151.prs -5
    19. 125.prs -5
    20. 143.prs -6
    21. 165.prs -7
    22. 171.prs -8
    23. 168.prs -8
    24. 154.prs -8
    25. 148.prs -8
    26. 155.prs -9
    27. 170.prs -9
    28. 160.prs -16
    29. 161.prs -20
    30. 163.prs -25

    К вечеру, думаю, ещё один турнир закончится и я пришлю 3 лучшие версии из него.
  10. TopicStarter Overlay

    WildCat Коршунов Игорь

    • Команда форума
    Member Since:
    04.05.2006
    Message Count:
    3.599
    Likes Received:
    4
    Репутация:
    0
    Location:
    Гомель
    Оффлайн
    Наверно лучше присылай в субботу.

    У меня материал остановился где-то на 2 (чаще всего конь ценится чуть меньше слона), 2, 3, 5 и больше подыматься не хочет. Это очень неожидано и непонятно. Ведь с таким весами будут явно неадекватные размены. Может быть весам трудно подниматься и при этом не нарушать сбалансированность, которая уже немножко есть.

    Вообще интересно следить как меняются признаки.
    Например, пара слонов держится в интервале 0.23 ... 0.32 пешки.
    Проходные: -0.2, -0.2, -0.2, +0.3, +0.6, +0.3
    Причем, версии, которые от этого сильно отклоняются быстро погибают.

    Я так предполагаю, что отрицательные веса из-за того, что в недалеко продвинутых проходных слабости (их легче атаковать) перевешивают преимущества. Может быть после введения понятия слабых пешек бонусы проходных вырастут. А штраф будет только, если они слабые.
  11. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Member Since:
    02.05.2006
    Message Count:
    6.811
    Likes Received:
    96
    Репутация:
    3
    Location:
    Санкт-Петербург
    Оффлайн
    Чтоб не было такой проблемы - выделяется материал (массив из пяти элементов) в отдельный ген.

    Спаривание производится не очень часто, чтоб этот ген очень быстро не распространился.

    У гена три вида мутаций -
    1. Получение случайного значения - например
    Table[1]:=1
    Table[2]:=Random()*3+2; // Случайное значение от 2 до 5
    Table[3]:=Random()*3+2; // Случайное значение от 2 до 5
    Table[4]:=Random()*3+4; // Случайное значение от 4 до 7
    Table[5]:=Random()*8+5; // Случайное значение от 8 до 13

    2. Случайное небольшое изменение всех параметров гена.
    For i:=1 to 5 do Table:=Table+Random()*0.4-0.2;
    k:=Table[1];
    For i:=1 to 5 do Table:=Table/k;

    3. Растягивание шкалы
    k:=Random()*0.2+0.9 // от 0.9 до 1.1
    For i:=2 to 5 do Table:=Table*k;


    Пешка всегда остается 1.


    Если пытаться менять стоимость каждой фигуры отдельно, то получается покоординатный спуск - он плохо сходится.

    Хотя может и сойдется, если стоимость пешки тоже менять, а потом приводить к единице.

    // Я подумал - а может просто не мутирует стоимость пешки? Тогда подниматься и не будет... Я меняю все параметры, а потом уже привожу при помощи аналогии
    k:=Table[1];
    For i:=1 to 5 do Table:=Table/k;
  12. TopicStarter Overlay

    WildCat Коршунов Игорь

    • Команда форума
    Member Since:
    04.05.2006
    Message Count:
    3.599
    Likes Received:
    4
    Репутация:
    0
    Location:
    Гомель
    Оффлайн
    Можно просто ввести еще один параметр Material. Все значения материала, кроме пешки, множаться на него.
    И для каждой таблицы сделать такое число. Для таблиц ценностей полей эти параметры уже есть, т.е. это например PieceValue[Knight].
  13. Fruit Александр

    • Заслуженный
    • Участник
    • Старожил
    Member Since:
    12.02.2006
    Message Count:
    2.201
    Likes Received:
    64
    Репутация:
    3
    Оффлайн
    Сейчас у меня вот такая версия лучшая:

    King_Center_PST -21 -18 -16 -6 -9 -21 -21 -27 -24 -12 -10 1 0 -10 -6 -22 -16 -5 8 19 15 19 -7 -21 -10 2 22 29 30 34 -3 -5 -5 1 18 28 29 26 3 -12 -14 -1 14 27 20 17 -13 -23 -21 -7 -6 -4 1 -7 -14 -29 -30 -19 -19 -15 -11 -21 -25 -27

    King_Hide_PST -102 -108 -98 -98 -103 -104 -101 -95 -89 -93 -96 -99 -94 -97 -107 -111 -96 -95 -99 -107 -95 -98 -93 -98 -98 -97 -91 -99 -100 -97 -106 -97 -60 -63 -82 -89 -88 -82 -66 -57 -38 -23 -43 -66 -54 -51 -24 -35 1 0 -13 -24 -24 -6 4 -7 17 18 4 -11 -14 0 31 12

    Bishop_PST -3 -5 -8 -15 -18 -8 -1 3 0 12 7 2 3 0 6 1 -4 6 6 2 5 6 9 1 -8 6 3 16 22 14 5 -8 -6 7 8 14 11 12 0 -3 -5 6 5 1 9 10 -2 1 -18 6 4 2 -2 4 13 4 -4 3 -7 -12 -18 -4 -4 0

    Knight_PST -101 -15 -18 -14 -10 -14 -16 -100 4 -10 1 0 1 -3 4 2 9 -8 8 13 17 0 3 8 3 13 4 31 15 16 6 2 11 2 11 11 18 12 3 0 3 1 8 8 11 11 4 5 -2 -6 -2 11 4 0 -7 9 -29 -13 -12 -9 -7 -18 -20 -31

    Pawn_PST -4 1 3 -1 1 0 -10 -4 -3 1 -4 -4 0 6 -4 0 6 4 2 2 -7 5 12 -4 -1 1 1 -4 0 1 -1 -2 -3 6 -2 10 2 -2 -1 0 -1 4 2 -1 -3 -9 12 -2 -1 -1 -3 0 -3 1 2 -1 1 4 3 6 3 -4 5 4

    Penalty_Shield_Missing_One -2

    Penalty_Shield_Missing_Two -18

    BishopPair 43

    Bonus_Passer 6 9 23 37 89 102

    PieceValue 373 412 545 1204

    Кажется, очень логичной. Даже слабые проходные в плюсе.....Единственно, что мне непонятно: почему ценность 2-х ладей на пешку меньше, чем ценность ферзя?
  14. TopicStarter Overlay

    WildCat Коршунов Игорь

    • Команда форума
    Member Since:
    04.05.2006
    Message Count:
    3.599
    Likes Received:
    4
    Репутация:
    0
    Location:
    Гомель
    Оффлайн
    Проходные может быть только пока положительные (было мало итераций).
    А ферзь в партиях компьютеров намного чаще сильнее двух ладей. Сам я поставил им одинаковую оценку просто из-за того, что так сложилось исторически. Теперь мы имеем шанс узнать истину ;)
  15. Fruit Александр

    • Заслуженный
    • Участник
    • Старожил
    Member Since:
    12.02.2006
    Message Count:
    2.201
    Likes Received:
    64
    Репутация:
    3
    Оффлайн
    А какие настройки по умолчанию у WildCat 7? Я уже не помню. :)
  16. TopicStarter Overlay

    WildCat Коршунов Игорь

    • Команда форума
    Member Since:
    04.05.2006
    Message Count:
    3.599
    Likes Received:
    4
    Репутация:
    0
    Location:
    Гомель
    Оффлайн
    Тут WildCat 7 не при чем. У него совсем другая ОФ.
    А чтоб дефолтные посмотреть можно запустить прогу в другом каталоге.
  17. Fruit Александр

    • Заслуженный
    • Участник
    • Старожил
    Member Since:
    12.02.2006
    Message Count:
    2.201
    Likes Received:
    64
    Репутация:
    3
    Оффлайн
    Хм...получается для программы лучшая персоналия не пригодится?
  18. TopicStarter Overlay

    WildCat Коршунов Игорь

    • Команда форума
    Member Since:
    04.05.2006
    Message Count:
    3.599
    Likes Received:
    4
    Репутация:
    0
    Location:
    Гомель
    Оффлайн
    Пока идет процесс поиска наилучшего алгоритма поиска и его настойка :)
    Реальные персоналити будем потом строить.
    И еще для начала хочется просто убедиться, что метод способен дать хоть какие-то результаты.
  19. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Member Since:
    02.05.2006
    Message Count:
    6.811
    Likes Received:
    96
    Репутация:
    3
    Location:
    Санкт-Петербург
    Оффлайн
    Я отказался от отдельных параметров, всё выведено в гены.
    Таблицы все приведены к виду - сумма параметров равна нулю, сумма квадратов равна миллиону.
    Стоимость материала, и Вес Таблицы баланса полей - выведено в ген.
    (Один ген с большим числом параметров сразу на все таблицы)
    Каждая отдельная таблица - тоже отдельный ген.
  20. Fruit Александр

    • Заслуженный
    • Участник
    • Старожил
    Member Since:
    12.02.2006
    Message Count:
    2.201
    Likes Received:
    64
    Репутация:
    3
    Оффлайн
    Эту ужасную правду я узнал от NS. Просто никак не могу свыкнутся. :)

    Кстати, как будет проверятся метод? Я думал, что нужна реальная программа для проверки персоналий.
  21. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Member Since:
    02.05.2006
    Message Count:
    6.811
    Likes Received:
    96
    Репутация:
    3
    Location:
    Санкт-Петербург
    Оффлайн
    Не знаю как в шахматах, а я за несколько сотен часов счета в шашках получил прекрсную таблицу оценки простой в миттельшпиле :)
    Просто отличная таблица. Так что у меня метод работает.

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

    И если мало особей и много спаривания - то процесс вырождается.

    Спаривания Делается так, чтоб ВСЕГДА порождало хорошие персоналии (гены между собой по возможности не связаны, поэтому спаривание плохую особь дать не может)

    Нужно много особей (я увеличиваю до 100),
    мало спариваний (10 на итерации),
    и больше мутаций (40 на итерации).

    Так как мутации редко порождают хорошие особи, то есть смысл порождать (мутировать) только от одного сильнейшего, при мутации мутирует один ген, но мутирует достаточно сильно - не бывает изменений только одного параметра в гене.
    Ген - точка на поверхности могомерной сферы, при мутации берется точка на повержности сферы в некоторой окресности от родительской точки, либо берется абсолютно случайная точка на поверхности Сферы.
  22. TopicStarter Overlay

    WildCat Коршунов Игорь

    • Команда форума
    Member Since:
    04.05.2006
    Message Count:
    3.599
    Likes Received:
    4
    Репутация:
    0
    Location:
    Гомель
    Оффлайн
    Будут найденные персоналити Кошки между собой играть в много кругов с более приличным контролем (хотя бы минута на партию).
  23. TopicStarter Overlay

    WildCat Коршунов Игорь

    • Команда форума
    Member Since:
    04.05.2006
    Message Count:
    3.599
    Likes Received:
    4
    Репутация:
    0
    Location:
    Гомель
    Оффлайн
    Почему на воверхности сферы? Лучше внутри шара, с центром в родительской точке.
  24. TopicStarter Overlay

    WildCat Коршунов Игорь

    • Команда форума
    Member Since:
    04.05.2006
    Message Count:
    3.599
    Likes Received:
    4
    Репутация:
    0
    Location:
    Гомель
    Оффлайн
    А вот это хотелось бы проверить на практике. Если бы человек 5 запустили генерация с разной численностью групп. Потом можно было бы сравнить у кого получились лучшие результаты.
    Нужно искать добровольцев :)
  25. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Member Since:
    02.05.2006
    Message Count:
    6.811
    Likes Received:
    96
    Репутация:
    3
    Location:
    Санкт-Петербург
    Оффлайн
    Внутри шара - Практически то-же самое что и на поверхности сферы (в центр будем попадать реже, так как объем маленький), но с кучей бесполезных мутаций.

    У меня оценка: Точка по материалу, от неё идем по вектору Табличной оценки, с длинной - вес позиционных признаков. Так как длина вектора берется из другого гена - это и есть точка на поверхности Сферы, радиус которой - вес позиционных признаков, а центр в оценке по материалу.

    Всяко 100 особей в один круг будет работать не хуже чем 30 в четыре круга. Больше партий на итерации, но и больше порожденных на итерации.
  26. TopicStarter Overlay

    WildCat Коршунов Игорь

    • Команда форума
    Member Since:
    04.05.2006
    Message Count:
    3.599
    Likes Received:
    4
    Репутация:
    0
    Location:
    Гомель
    Оффлайн
    Fruit!
    Можешь высылать три лучшие версии. Буду тестировать.
  27. Fruit Александр

    • Заслуженный
    • Участник
    • Старожил
    Member Since:
    12.02.2006
    Message Count:
    2.201
    Likes Received:
    64
    Репутация:
    3
    Оффлайн
    В шахматах дольше будет и, наверное, сложнее.
  28. Fruit Александр

    • Заслуженный
    • Участник
    • Старожил
    Member Since:
    12.02.2006
    Message Count:
    2.201
    Likes Received:
    64
    Репутация:
    3
    Оффлайн
    Версии выслал. Новый турнир закончить не успел, однако, настройки из тех, что выслал мне нравятся :)
  29. TopicStarter Overlay

    WildCat Коршунов Игорь

    • Команда форума
    Member Since:
    04.05.2006
    Message Count:
    3.599
    Likes Received:
    4
    Репутация:
    0
    Location:
    Гомель
    Оффлайн
    Посмотрим чего они в реальном бою стоят :)
  30. Fruit Александр

    • Заслуженный
    • Участник
    • Старожил
    Member Since:
    12.02.2006
    Message Count:
    2.201
    Likes Received:
    64
    Репутация:
    3
    Оффлайн
    Все 3 версии закончили турнир с разницей в 1 очко, намного оторвавшись от других. Поэтому они примерно равноценны по силе....Да, интересно поглядеть, на что они способны. Когда будут результаты?
  31. TopicStarter Overlay

    WildCat Коршунов Игорь

    • Команда форума
    Member Since:
    04.05.2006
    Message Count:
    3.599
    Likes Received:
    4
    Репутация:
    0
    Location:
    Гомель
    Оффлайн
    На мой компьютер напал вирус Neshta :mad:
    Так что пока все приостановлено до лучших времен.
  32. Fruit Александр

    • Заслуженный
    • Участник
    • Старожил
    Member Since:
    12.02.2006
    Message Count:
    2.201
    Likes Received:
    64
    Репутация:
    3
    Оффлайн
    Жаль, конечно. :(.... Какой антивирус? Долго избавляться от вируса?
  33. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Member Since:
    02.05.2006
    Message Count:
    6.811
    Likes Received:
    96
    Репутация:
    3
    Location:
    Санкт-Петербург
    Оффлайн
    Removal instructions

    Modify the following system registry key:
    [HKCR\exefile\shell\open\command]
    from
    %WINDIR%\svchost.com "%1" %*
    to
    "%1" %*
    Delete %WINDIR%\svchost.com

    http://www.viruslist.com/en/viruses/encyclopedia?virusid=105045#doc2
    http://www.viruslist.com/en/viruses/encyclopedia?virusid=105045
    http://www.viruslist.com/en/find?search_mode=virus&words=Neshta+&x=16&y=7
  34. Fruit Александр

    • Заслуженный
    • Участник
    • Старожил
    Member Since:
    12.02.2006
    Message Count:
    2.201
    Likes Received:
    64
    Репутация:
    3
    Оффлайн
    Прикольный вирус :):
    The body of the virus contains the following strings:

    Delphi-the best.
    **** off all the rest.
    Neshta 1.0
    Made in Belarus.
  35. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Member Since:
    02.05.2006
    Message Count:
    6.811
    Likes Received:
    96
    Репутация:
    3
    Location:
    Санкт-Петербург
    Оффлайн
    Построил мат. модель для разных способов генерации новых особей.
    Короче, несмотря на то что я получил отличную таблицу - я несколько сотен часов занимался глупостями. Сходимость можно резко улучшить.

    Мои алгоритмы вызывают вырождение процесса - все особи со временем становятся одинаковыми.

    Тесты на модели настройки одной таблицы (пытаемся прийти к конкретной точке на сфере, Целевая функция - расстояние до этой точки)
    Есть набор хороших точек. Новые точки берем по разным алгоритмам -
    1. Случайная точка на сфере.
    2. Точка точно по-середине между двумя хорошими точками
    Использовать нужно очень редко - ведет к вырождению, и не дает значительно более хорошие точки, хотя на построенной модели вырождение не так страшно, но все-равно частое использование этого метода очень замедляет сходимость.
    Но совсем без этого метода тоже плохо.

    3. Точка точно между тремя хорошими точками (вообще ничего не дает, можно такой алгоритм генерации не использовать)
    4. Точка на сфере в окресности хорошей точки.

    Наиболее часто надо использовать методы 1. и 4. и изредка метод 2. (около 5% генераций)
    В таком тесте поиск на 40-мерной сфере сходится очень хорошо.
    (модель - 100 особей, сохраняем 50 лучших, настраиваем одну таблицу на 40 элементов)

Share This Page