Автор |
Сообщение |
Kallisto |
|
Тема сообщения:
Отправлено: Янв 29, 2006 - 10:05 AM
|
|
Зарегистрирован: Авг 18, 2003
Сообщений: 747
|
|
Честно говоря я считаю, что ценность полей должны определять не поддавочники, а сами программисты в ходе экспериментов
Конечно. Но хотелось бы, чтобы поддавочники помогали. Они же знают теорию поддавков несколько лучше программистов. Или в теории нет такого понятия как ценность полей?
Не всегда можно в поддавках выиграть с позиции силы - то есть я хотел сказать с позиции материального перевеса!
Это понятно. Даже в шашках, бывают позиции, где сторона без шашки имеет выигрыш. Мне бы хотелось здесь обсуждать не исключения, а правила.
Общая идея в следующем: оценочная функция (ОФ) считает, что в данной позиции действует правило, а не исключение. Перебор отвечает за отлов исключительных позиций.
Если же исключения удается достаточно точно формализовать, то его можно добавить к ОФ.
Пример: ценность полей короля в шахматах очень сильно зависит от стадии игры. В эндшпиле лучше централизовать короля. Это легко формализуется. Если у противника много фигур, то используем таблицу, где ценны угловые поля. Иначе используем таблицу с бонусами на центральных полях. Такой же подход можно применить и в поддавках. Если обнаружена какая-либо конструкция или важный позиционный фактор, то ценность может быть кардинальным образом изменена.
Неужели Вы считаете, что если бы все в поддавках можно было предельно ясно формализовать, то было бы интересно программировать? Весь интерес в сложности формализации поддавков.
Поэтому поддавки интереснее шашек.
С моей точки зрения чайника поле H6 всё-таки более слабое, чем A7 и я бы ему дал больший минус. Сколько в цифрах - не знаю. Ну попробуйте хотя бы -28 и -32 и посмотрите, что получится.
Я пробовал ставить -20 и -40. Получалось хуже.
Вот еще одна позиция с нарушенным материальным соотношением, на которой прокалываются некоторые программы:
Наверно и люди прокалывались на этой позиции?
Черные сейчас просто сыграют ab6,de7 удерживая конструкцию против полей вторжения, потом сыграют ab4 с легким выигрышем. Ну и как все это бъяснить программе?
Я это не могу объяснить программе т.к. сам ничего такого не понимаю
Что такое поля вторжения?
И что за конструкция против них? Это если шашка идет на поле вторжения, то противник сразу может все отдать?
С точки зрения программы, которая должна выбрать ход за разумное время на совремменных компьютерах, ценность полей объективный фактор. Вот что я имею ввиду. Если убрать из ОФ все теоретические знания (а кроме ценности полей практически ничего и нет пока), то программа начинает тупить со страшной силой, и проигрывает нормальной версии в сухую: 0 - 14
Программа с новой таблицей, которую я предложил в первом посте проиграла стандартной: 77 - 110. Продолжать матч не имеет смысла, т.к. вряд ли новая таблица лучше. |
|
|
|
|
|
alex |
|
Тема сообщения:
Отправлено: Янв 28, 2006 - 07:39 PM
|
|
Зарегистрирован: Авг 28, 2002
Сообщений: 394
|
|
Вот еще одна позиция с нарушенным материальным соотношением, на которой прокалываются некоторые программы:
1.gh4 fg5 2.h:f6 g:e5 3.cd4 e:c3 4.b:d4 bc5
5.d:b6 c:a5 6.ed4 ef6 7.dc3 bc7 8.ab2?
8...fe5! 9.d:f6 hg5 10.f:h4 hg7
С точки зрения программы у белых перевес: у них две лишние и нет позиционных слабостей. С точки зрения человека у белых проиграно. Черные сейчас просто сыграют ab6,de7 удерживая конструкцию против полей вторжения, потом сыграют ab4 с легким выигрышем. Ну и как все это бъяснить программе?
Интересная комбинационная развязка поджидает черных в этом варианте при правильном восьмом ходе:
8.de5 f:b2 9.a:c3 ab6 10.hg3 de7 (не меняет сути fe7)
11.cb4 a:c3 12.ed2 c:e1 13.ab4 e:a5 14.fe3!
Белые ничем не угрожают и тем не менее черные беззащитны. |
|
|
|
|
|
alemo |
|
Тема сообщения:
Отправлено: Янв 28, 2006 - 06:49 PM
|
|
Зарегистрирован: Апр 04, 2003
Сообщений: 6942
|
|
С моей точки зрения чайника поле H6 всё-таки более слабое, чем A7 и я бы ему дал больший минус. Сколько в цифрах - не знаю. Ну попробуйте хотя бы -28 и -32 и посмотрите, что получится.
А во всём остальном согласен с А. Левитом - надо подключать и "сочетания полей", или говоря языком ГО - формы.
АЛЕМО |
|
|
|
|
|
Fenix |
|
Тема сообщения:
Отправлено: Янв 28, 2006 - 06:39 PM
|
|
Зарегистрирован: Сен 01, 2002
Сообщений: 8715
|
|
Всё правильно. И даже ОЧЕНЬ!
Но не будем забывать, что это ИСКЛЮЧЕНИЯ...
----
Именно о конструкциях я и думал, когда говорил какие поля относительно хороши, а какие нет...
----
Но вот эта крепочная методика считать аналитическую функцию исходя из соотношения шашек?...
Конечно - иного не имеем.
Но (см.ниже) не подходит она...
Не всегда можно в поддавках выиграть с позиции силы - то есть я хотел сказать с позиции материального перевеса!
Вот вам пример:
Ход белых.
Здесь у белых выигрыш.
Но поставьте анализировать!
И увидите, что программа его не видит... |
|
|
|
|
|
alex |
|
Тема сообщения:
Отправлено: Янв 28, 2006 - 06:26 PM
|
|
Зарегистрирован: Авг 28, 2002
Сообщений: 394
|
|
Честно говоря я считаю, что ценность полей должны определять не поддавочники, а сами программисты в ходе экспериментов. Дело в том, что в реальной игре не существует какой-то объективной ценности полей; она определяется целым рядом факторов. Простой пример. Белая шашка на а5, это вроде как плохо. А если у черных есть шашки a7,с7,b8,b6? И белые имеют конструкцию против поля с5? Тогда шашка а5, как правило, обеспечивает белым перевес (например на 1.ab4 fe5? 2.ba5 с большим преимуществом). Кроме того шашка на a5 иногда не является слабостью если у черных застревает шашка h6 (белые держат конструкцию против поля g5). Эту серию исключений и исключений из исключений можно продолжить. Короче говоря, на мой взгляд, всякое распределение весов полей будет не вполне адекватным. Другой вопроc: а нужна ли программе вполне адекватная оценка позиции. Может лучше написать оценочную функцию, которая запретит программе делать явно стратегически проигранные ходы, а в остальном положиться на перебор? Во всяком случае, если вводить в оценку такое понятие как конструкция -- а без этого адекватной оценки не добится -- то глубина перебора явно снизится.
Попробую все-таки дать один конструктивный совет. Я считаю, что основной задачей дебюта в поддавках является развитие отсталой шашки a1 (отсталую h2 тоже нужно развивать, но сделать это, как правило, проще; достаточно при случае сыграть gh4 или разменяться gf4,f:h4/h:f4). То-есть игрок должен или быстро развить шашку a1 или помешать сделать это сопернику. В противном случае почти всегда будут возникать стратегически безнадежные позиции. Думаю эту концепцию можно как-то формализовать. |
|
|
|
|
|
Fenix |
|
Тема сообщения:
Отправлено: Янв 28, 2006 - 06:25 PM
|
|
Зарегистрирован: Сен 01, 2002
Сообщений: 8715
|
|
Исходя из первых экспериментов такая таблица не улучшает игру программы. Но, эксперимент будет продолжен. Результат выложу позже.
Прошу конкретику.
(Программа всё еще лезет в угол - во что бы то ни стало...
и.т.д)
Поддавки специфическая игра.
Я уверен, что исходя только из силовой ориенации в аналитической функции, в поддавках мы будем иметь не совсем верную оценку...
Игра "грешит" наличием длинных форсированных вариантов, которые программа на 15-19 полуходов может и не увидеть... Очень часто, показывая аналитическую функцию +200, программа не видит проигрышности варианта.
В крепких шашках такие ситуации практически исключены! Каким образом???
Может есть смысл сравнить? Может поймем? |
|
|
|
|
|
Kallisto |
|
Тема сообщения: Ценность полей в поддавках
Отправлено: Янв 28, 2006 - 10:46 AM
|
|
Зарегистрирован: Авг 18, 2003
Сообщений: 747
|
|
Т.к. есть люди которым интересна эта тема, то я решил создать отдельный топик для ее обсуждения.
Я знаю, такие общие правила:
- от бортовых шашек нужно избавляться
- иметь центральные шашки очень хорошо
- шашки a7 и h6 являются особо вредными
- шашки c1 и e1 являются особо ценными, g1 - в меньшей степени
Т.е. у меня получается такая таблица ценности полей:
Код:
int PST_man[45] = {0,0,0,0,0,
0, 0, 0, 0,
-30, 10, 10, 10, 0,
10, 10, 10, -30,
-10, 10, 10, 10, 0,
10, 10, 10, -10,
-10, 10, 10, 10, 0,
10, 10, 10, -10,
-10, 20, 20, 10, 0,0,0,0,0
По замечаниям Fenix я сделал такую таблицу:
Код:
int PST_man[45] = {0,0,0,0,0,
0, 0, 0, 0,
-30, 0, 0, 0, 0,
0, 0, 0, -30,
-20, 10, 10, 10, 0,
0, 0, 0, -10,
-10, 10, 10, 10, 0,
10, 10, 10, 0,
-10, 20, 20, 10, 0,0,0,0,0
};
Исходя из первых экспериментов такая таблица не улучшает игру программы. Но, эксперимент будет продолжен. Результат выложу позже.
Просьба, ко всем поддавочникам высказывать свои предложения. И было бы хорошо итог оформлять в виде числовой таблицы ценности полей. |
|
|
|
|
|
|
|