Ответы в темах
-
АвторСообщения
-
KallistoУчастник
Конечно меняет, разве это не очевидно? Он меняет ответ на вопрос — зачем нужны эти рейтенги. Если 4 — не нужные, 400 — может быть и нужны.
Достаточно меня одного, чтобы рейтинги были нужны.
Для публикования на форуме достаточно еще одного человека, которому они интересны.Никакой необходимости в поиске еще 398-и я не вижу.
KallistoУчастникИ сколько из них сильных настолько, чтобы они были интересны не только создателям?
Какое это имеет значение? Неужели ответ на этот вопрос что-то меняет?
Ну допустим четверым это интересно. Или предположим четырем сотням. Что от этого изменится?
KallistoУчастникМедленно, зато очень просто.
Вот это самая большая проблема интерфейсов — неуниверсальность.
Кто-то обязательно был бы недоволен потерей скорости на ровном месте, хоть и копеечным. А так, я надеюсь, что любой будет удовлетворен.KallistoУчастникВсе, буду делать реализацию вот этого интерфейса:
struct EdBoard1
{
// все поля идут по порядку a8, c8, и т.д. до g1
unsigned char board[32];
};
struct EdBoard2
{
unsigned char *wman;
unsigned wman_cnt;
unsigned char *wkings;
unsigned wkings_cnt;
unsigned char *bman;
unsigned bman_cnt;
unsigned char *bkings;
unsigned bkings_cnt;
};
// интерфейсный класс для доступа к эндшпильным базам
struct EdAccess
{
// возвращаемые значения
const draw = 0;
const win = 10000;
const lose = -10000;
const db_not_found = 32000;
// коды для обозначений шашек
const white = 1;
const black = 2;
const empty = 4;
const king = 8;
// флаги для доступа к базе
const in_mem = 1;
// загрузить базы
// пока такие типы игр:
// russian
// russianlosers
// brazil
// brazillosers
// pool
// poollosers
// checkers
// checkerslosers
unsigned Load(char *game_type) = 0;
// получить тип базы
char *GetBaseType() = 0;
// оценка позиции (всегда ход белых)
int GetResult(EdBoard1 *board, unsigned flags) = 0;
int GetResult(EdBoard2 *board, unsigned flags) = 0;
// получить указатель на таблицу по материалу
unsigned GetTable(unsigned wm, unsigned wk, unsigned bm, unsigned bk) = 0;
// получить указатель на таблицу по материалу и по наиболее продвинутой шашке
unsigned GetTable(unsigned wm, unsigned wk, unsigned bm, unsigned bk, unsigned rank) = 0;
// проверка загруженности таблицы целиком в память
unsigned IsTableInMemory(unsigned table);
// получить индекс в таблице
unsigned __int64 GetIndex(EdBoard1 *board) = 0;
unsigned __int64 GetIndex(EdBoard2 *board) = 0;
// получить оценку по указателю на таблицу и индексу
int GetResult(unsigned table, unsigned __int64 index, unsigned flags) = 0;
};
Если бы вы знали, сколько мне пришлось протратить усилий из-за того, что часто интерфейсы конфликтуют между собой, то не отнеслись бы к обсуждению столь индифферентно
KallistoУчастникМне тут так и не ответили на вопрос — зачем нужны эти рейтинги ?
Ответ кажется очевиден. Чтобы знать в какую силу играет та или иная программа. Сейчас об этом судить просто невозможно.
KallistoУчастникА то ведь как можно сделать. Сыграла программа плохо, заявляешь, что выступала тестовая версия. Сыграла удачно — значит самая последняя
Обычно так и делают
Вот почему мне интересны только рейтинги программ с отрытым протоколом. Можно провести сколько будет угодно партий и для всех версий этой программы. И тогда объективная сила сила игры будет очевидна.NS wrote:Доверительные интервалы зависят от вероятности ничьи.Фиксированной вероятности ничьей нет. Она зависит, от силы соперников, или даже от их стиля.
KallistoУчастникЕсли будут считаться рейтинги по результатам таких матчей — народ будет бояться играть.
Народ и так боится играть.
Не хотите ли заодно ввести отдельные рейтинги на «5 секунд на ход», «10 секунд на ход» 😆 Результаты могут быть о-о-о-чень разные.
Нет, результаты будут похожими. Но чем больше времени, тем меньше будет разница между слабыми и сильными.
А до контроля «время на ход» мы не опустимсяKallistoУчастникЧто мешает скинуть все партии в .pdn и посчитать рейтинг ЭлоСтатом?
Глючный он. Я уж лучше своей программкой посчитаю.
Но тут дело в том, что в турнирах выступали разные версии программ. Так что мы по-любому хорошего рейтинга не получим.KallistoУчастникОдин посчитать по итогам турниров, пусть их и было немного. Но там каждая программа получит свой рейтинг.
OK. Но доверительные интервалы будут уж очень большие.
В шахматах еще ни у кого не появлялась идея посчитать рейтинг по результатам официальных турнировKallistoУчастникно в приведенном случае рейтинг посчитанный русским шашкам просто вне доверительного интервала.
А вот это ты зря. Доверительный интервал можно посчитать даже для такого метода. Нижняя граница будет несколько сотен пунктов.
KallistoУчастникНа самом деле. Ведь достоверность такого рейтинга просто никакая.
По такому малому количеству партий никакой способ составления рейтингов не поможет.Тут нужны тысячи (в крайнем случае сотни) партий. И применять методы расчета человеческих рейтингов здесь нет необходимости.
KallistoУчастникЕще было бы интересно выравнять рейтинги программ с человеческими. Может кто-то, имеющий рейтинг, играл с каким-нибудь движком довольно много?
Или может найдется человек с рейтингом, который сыграет большой матч в леталки против «Каллисто 1». Я предполагаю она играет где-то между кандидатом и мастером.
KallistoУчастникТут важно ещё и правильно этот самый «плюсик» подобрать. Вы же понимаете, что все эти цифры — «80%» и «+3 — +5» я взял с потолка. Нужен тестовый прогон и статистика. Если 80% — то плюсик может быть один, а если 70% или 90% — то число будет другое.
Об это Вам не нужно беспокоиться.
Лучше посоветуйте как определить, что шашка слаба и как посчитать количество нападений и защит.KallistoУчастникПонимаете, чаще всего сформулировать правило, которое действует в 100% случаях, очень трудно. Ну а если правило действует в 80% — как тогда быть ?
Вот именно такие правила нам и нужны.А расчет нужен для того, чтобы выявлять исключения.
KallistoУчастникА до него на протяжении 1мин 20 сек выдает небольшой минус — 10 — 20 единиц. Потом начинает рекомендовать верный bc5
Т.е. не все с Тундрой плохо
При серьезном контроле она бы так не ошиблась. -
АвторСообщения