Millennium The King Performance

Novedades, preguntas, bugs, tunning
manuel54
Avanzado
Avanzado
Mensajes: 371
Registrado: 20 Ene 2013 19:57

Re: Millennium The King Performance

Mensaje por manuel54 » 05 Jul 2020 13:23

este modelo lo tengo!, muy contento con ella, programa the Konen hermanos y ajedrez 960..
el de 960 aún no lo he probado, desconozco su fuerza o si tiene niveles...

Avatar de Usuario
Astron
Veterano
Veterano
Mensajes: 104
Registrado: 02 Jun 2018 19:12

Re: Millennium The King Performance

Mensaje por Astron » 05 Jul 2020 19:24

No entiendo bien lo que quieres decir con lo de Konen hermanos.

Avatar de Usuario
hayabusa
Veterano
Veterano
Mensajes: 175
Registrado: 23 Ene 2015 20:58
Ubicación: Argentina

Re: Millennium The King Performance

Mensaje por hayabusa » 06 Jul 2020 06:45

¡Hola!

Sin ánimo de desacreditar a nadie, y solo para expresar una diferente opinión y tratar de enriquecer el post, yo creo que la explicación que hace Astron sobre el concepto de "contempt" es totalmente errónea. En cambio, lo que sugería Tibono como alternativa sí me parece acertado.

Si consideramos la definición de "contempt factor" que podemos encontrar en chessprogramming.org:
The Contempt Factor reflects the estimated superiority/inferiority of the program over its opponent. The Contempt factor is assigned as draw score to avoid (early) draws against apparently weaker opponents, or to prefer draws versus stronger opponents otherwise.
Podremos entender que las traducciones "desprecio" y "orgullo" si son correctas, aclarando, por otro lado, que el término "draw" se refiere a "empate" o "tablas", y no a "sorteo".
Draw, the outcome of a chess game when it appears that neither side will win. Draws are codified by various rules of chess including stalemate, threefold repetition, and the fifty-move rule. A draw also occurs when neither player has sufficient material to checkmate the opponent or when no sequence of legal moves can lead to checkmate.
Concretamente lo que hace este factor de "desprecio/orgullo" es modificar el comportamiento de la máquina en situaciones de potenciales empates, pues le estaremos indicando mediante el mismo que tan bueno o que tan malo es empatar.

A fines prácticos, si vamos a enfrentar a la máquina contra un rival más fuerte, probablemente sea deseable setear su "contempt factor" en un número positivo (el empate es buen resultado), entonces será menos "orgullosa" y si el empate es alcanzable la máquina se aferrará a él.

En cambio, si la vamos a enfrentar contra un rival más débil, probablemente sea deseable setear su "contempt factor" en un número negativo (el empate no nos sirve), entonces será más "orgullosa" y ante una situación de potencial empate la máquina "despreciará" la fuerza de su rival e irá por la victoria .

A quien no le ha pasado de estar virtualmente "empatado" contra alguien de mayor fuerza y ante nuestra propuesta de "¿Tablas?" el rival ("orgulloso", pero diplomático) expresó: "¡Gracias, pero juguemos un poco más!".

O incluso, llegados a una instancia decisiva de un torneo, y más allá del rival a enfrentar, a veces un empate puede ser conveniente para la clasificación final y otras veces no. Entonces alterando este factor le diremos a la computadora como queremos que se comporte: que valore el empate y se aferre al medio punto si es que este es posible, o que lo desprecie totalmente y vaya por el punto completo.

Aquí un par de ejemplos:
Too little Respect
For stronger programs it might be dangerous to avoid draws by Fifty-move Rule, as happened for instance at the 1st World Computer Rapid Chess Championship in the game between HIARCS and Alaric aka TerraPi.
Too much Respect
An example of too much respect appeared during the WMCCC 1990 in Lyon, Mephisto versus Échec. Échec had something like +4 pawn-units for the final repeated position, while it had almost a won game otherwise.
Saludos,
Sebastián.

Avatar de Usuario
Astron
Veterano
Veterano
Mensajes: 104
Registrado: 02 Jun 2018 19:12

Re: Millennium The King Performance

Mensaje por Astron » 07 Jul 2020 09:10

hayabusa escribió: 06 Jul 2020 06:45 ¡Hola!

Sin ánimo de desacreditar a nadie, y solo para expresar una diferente opinión y tratar de enriquecer el post,
...
Sebastián.
Hola Sebastian, ¿Tienes la máquina y has jugado con ella?

Avatar de Usuario
hayabusa
Veterano
Veterano
Mensajes: 175
Registrado: 23 Ene 2015 20:58
Ubicación: Argentina

Re: Millennium The King Performance

Mensaje por hayabusa » 07 Jul 2020 13:02

Astron escribió: 07 Jul 2020 09:10
hayabusa escribió: 06 Jul 2020 06:45 ¡Hola!

Sin ánimo de desacreditar a nadie, y solo para expresar una diferente opinión y tratar de enriquecer el post,
...
Sebastián.
Hola Sebastian, ¿Tienes la máquina y has jugado con ella?
Hola Astron.

Tengo la Mephisto Berlin Professional 68020 y he jugado mucho con ella (o ella conmigo, para decirlo mejor). Entre sus múltiples opciones también permite alterar el valor del factor "contempt" (que por defecto es 0) para influir en el comportamiento de la máquina. Con valores negativos juega a las tablas y con valores positivos las evita a toda costa. El propio manual lo explica. No es nada nuevo que una máquina permita ajustar ese factor. Respecto a tu inquietud, que es lo importante, la respuesta concreta es no a ambas preguntas.

Saludos,
Sebastián

Avatar de Usuario
Astron
Veterano
Veterano
Mensajes: 104
Registrado: 02 Jun 2018 19:12

Re: Millennium The King Performance

Mensaje por Astron » 07 Jul 2020 16:38

La respuesta que voy a dar es muy larga, por eso la pondré en dos posts seguidos.

Hola Sebastián.
No te preocupes por mi inquietud, tengo muchos años y ya no me inquieta casi nada, solo cuando uno de mis pacientes está a punto de morir y estamos intentando evitarlo, eso si me inquieta.

Quiero aclararte que estoy de acuerdo contigo en lo que dices en tu primer mensaje de que cualquier debate es enriquecedor, y así me lo tomé, ¡no estés a la defensiva hombre!. La pregunta de si tenías la máquina no era por "inquietud", sino porque la respuesta es diferente, ya que si la tuvieras te haría referencias a la misma (sobre los datos que muestra en pantalla), mientras que si no la tienes la respuesta debe ser más completa. En cuanto a la Berlin professional no la conozco, aunque tengo 4 máquinas muy distintas y nomenclaturas similares en algunas de ellas no son extrapolables a las otras. De todas formas en este caso da igual.

Verás, como sabes usamos palabras propias solo para seres humanos para aplicarlas a las máquinas, porque así nos entendemos mejor, como por ejemplo "... la máquina está pensando", o la configuración de "cerebro continuo", etc, pero ni la máquina piensa, ni la máquina tiene cerebro. La máquina "calcula" y la máquina tiene un procesador no un cerebro. Pero cuando me topé con esta traducción de desprecio/orgullo me chocó, porque esas palabras me parecieron demasiado extrañas en un contexto ajedrecístico. De hecho en mi primera traducción del manual lo dejé así. Pero seguí insistiendo porque no me "cuadraba" eso. Y entonces estudié a fondo ese tema. Fué en la 2ª revisión del manual cuando lo cambié. En cuanto al término draw, drawn y drawish, siempre ha estado claro para todos que en un contexto ajedrecístico significa empate o tablas.

Todo este preámbulo para decir que realmente ¡no veo la contradicción!. Una máquina ni puede "despreciar" a nadie, ni puede tener "orgullo". Las máquinas solo saben de "números", y para ganar pueden utilizar su mayor potencial, que sería la FUERZA BRUTA, o, como dice el artículo de Xalons, DEBILITARLA de muchas maneras para que pueda ser más asequible para nosotros, de acuerdo al potencial ajedrecístico de cada uno.

Con esos "debilitamientos" lo que hacemos es eliminar alguna, o parte, de todas esas ramas de sus análisis que componen la 'fuerza bruta', mediante los niveles o las configuraciones. Una de ellas es el llamado 'contempt', porque de esa forma la máquina analizará más profundamente las posiciones para intentar ganar o "se conformará" (de nuevo estamos utilizando una atribución humana) con unas tablas. Que le llamemos 'desprecio', 'orgullo' o como yo prefiero 'criterio selectivo', es irrelevante, lo que hay que saber es para que sirve.

Yo he escrito ya muchos artículos aquí en la web, pero el mayor y mejor articulista de aquí es sin duda Xalons, lo digo porque él podrá corroborar lo que digo (en cursiva) a continuación:

Cuando escribes un artículo, lo escribes para mucha gente. En esta web la mayoría (por no decir todos) saben mucho de ajedrez, pero no necesariamente de datos técnicos u otros temas engorrosos, entonces tienes que hacerlo ameno, no muy largo, y sin abusar de esos datos, porque en caso contrario puede resultar aburrido o tedioso para el que lo lee, e incluso abandone su lectura. A veces hay que tocar algo, pero sin exagerar. Evidentemente eso va aplicado a según que entorno. Yo además de A.T.S. tengo estudios de electrónica, pero sé que la mayoría de la gente no (¡eso no va por tí Berger!), por eso en mi artículo dedico sólo un pequeño párrafo a este tema, pero podría haber escrito un par de páginas.

Lo primero que hay que saber es como funciona una tabla Hash. Este es un tema complicado y que mucha gente no termina de comprender, Tengo un artículo aquí sobre esto, que intenté hacerlo lo más entendible posible, pero aún así sé que mucha gente no habrá terminado de digerir. Por supuesto ahora aquí no voy a volver hablar de esto, doy por sentado que lo conoces bien.

Avatar de Usuario
Astron
Veterano
Veterano
Mensajes: 104
Registrado: 02 Jun 2018 19:12

Re: Millennium The King Performance

Mensaje por Astron » 07 Jul 2020 16:43

Decía antes que no veo la contradicción. Yo nunca he dicho que "contempt" no esté referido a tema de tablas. De hecho en el manual en inglés sobre esto dice:
This parameter has a scale of values from -2.00 to +2.00. By increasing the value, you increase the program’s aversion (i.e. ‘contempt’) for a drawn result. If the value is negative, The King will show more readiness to accept a drawn or drawish position.

Y esta es la traducción que yo he hecho:
Este parámetro tiene una escala de 21 valores de -2.00 a +2.00, en tramos de 0.20. Hace que el programasea menos o más selectivo en el análisis de las posiciones, siendo 0.00 el criterio selectivo normal. A más valor, más rechazo del program a repetir un resultado. A más valor negativo, mostrará más disposición para aceptar una posición repetida o 'redundante' en el análisis, llegando a la fuerza bruta con -2.00.

Como ves se utiliza la palabra "drawn" que todos sabemos que se refiere a tablas. Pero de nuevo estamos utilizando atributos humanos para una máquina. La máquina solo entiende de números. No puede haber una configuración en la que la máquina diga: "bueno me conformo con el empate" o "nada de empate, yo voy a por la victoria". Pero si puede haber una configuración en la que sea más fácil obtener unas tablas de la máquina que sufrir una derrota de ella. Pero eso sería una consecuencia, que a efectos prácticos puedes denominar como aversión, desprecio, etc. Como no sé si me estoy explicando bien, antes de seguir con el colofón final, te voy a poner un ejemplo típico de mi profesión, pero que tal vez haga que entiendas lo quiero decir en este párrafo. Hace muchos años se se comercializó unas pastillas que eran antialérgicas para niños, si le salía alguna erupción o tenía estornudos o lo que sea de origen alérgico le prescribían "Periactin". Pronto se observó que uno de los efectos secundarios era que aumentaba mucho el apetito. Tanto fué así que empezó a utilizarse muchísimo más como estimulante del apetito que como antialérgico, y se administraba incluso sin que el niño tuviera alergia alguna.

Aquí pasa igual, uno de los efectos secundarios de esta configuración de contempt, que yo nomino así en mi artículo "La otra opción inédita es la de poder configurar como va a usar la tabla Hash, pues se le puede debilitar haciendo que infrautilice dicha tabla..." es que la máquina se encamina a tablas más fácilmente o insiste más en la búsqueda de la victoria. Pero realmente es solo un "efecto secundario", perfectamente válido, y por eso las lecturas que se hace de este parámetro. pero eso se consigue mediante la tabla Hash.

¿Por qué lo sé?. Mi economía es austera, por eso antes de comprar otra máquina (ya tenía tres) tenía que comprobar si me valía la pena o no. Busqué y busqué, me informé y me informé, contrasté y contrasté... Hice un exhaustivo estudio antes de comprarla, el cual, junto con mi experiencia con la propia máquina cuando la tuve, dió lugar al artículo que escribí y a la traducción del manual. Habrás comprobado como en mi artículo incluso desdigo datos de la propia web de Millennium.

Digo esto porque habrás leído en mi artículo que una de las maravillas de esta máquina es la "pantalla de análisis", donde da una información muy valiosa. Una de las cosas que se puede deducir en esta información es la utilización que hace la máquina de la tabla Hash. Una de las cosas que hice fue introducir muchas partidas en su fase de medio juego y analizar las jugadas con la opción análisis y variando la configuración de 'contempt', e ir anotando los resultados de esos análisis (todo muy latoso y que necesita mucho tiempo).

Así deduje que la tabla Hash se infrautiliza según la configuración de "contempt". Esto hace que la máquina pueda no encontrar la victoria, pero sí las tablas, y entonces va a por ella (se "conforma"), o bien su análisis queda más abierto a seguir buscando la victoria y entonces va a por ella (no se "conforma"). Es decir, siguiendo mi ejemplo anterior, lo de las tablas es un efecto secundario, pero que si se quiere puede expresarse así. Yo preferí poner lo que he puesto en el artículo porque es lo que ocurre. La gente ve el resultado (el efecto secundario) pero no como se llega a él.

Por eso te ha dicho antes que realmente no hay contradiccón.

Saludos

Avatar de Usuario
hayabusa
Veterano
Veterano
Mensajes: 175
Registrado: 23 Ene 2015 20:58
Ubicación: Argentina

Re: Millennium The King Performance

Mensaje por hayabusa » 08 Jul 2020 18:29

¡Hola Astron!

Después de leer detenidamente todo lo que has escrito sigo sosteniendo que tus deducciones son incorrectas.

Primero algunas consideraciones generales:

- Si una máquina determina que su mejor opción es una línea que conduce al empate, pues no encuentra una alternativa de mejor valoración, entonces seguirá esa línea. Creo que en eso estamos de acuerdo.

- Ahora, si la máquina llega a una posición donde una de las líneas conduce al empate, pero existe una alternativa con mejor valoración, entonces seguirá esta última. Supongo que eso está claro también.

¿Entonces como hacer que la máquina elija una línea ligeramente perdedora (cuando tiene la posibilidad de seguir una que le lleva al empate) o que elija una línea que conduce al empate (cuando otra líneas le darían una pequeña ventaja)?

Bueno, como venimos diciendo, para ello se utiliza el factor de desprecio (hasta aquí nada nuevo).

Pero lo siguiente es lo que yo creo que te estás perdiendo:

Este factor indicado por el usuario se expresa en cantidad de peones y refleja la superioridad que hay entre la fuerza de una máquina y su eventual rival. En el caso de la Millennium, como tu nos cuentas, varía entre -2 y 2 (con incrementos de 20 centipeones).

Entonces la estrategia consiste en sumar el factor de desprecio al valor de la evaluación de aquellas líneas que conducen al empate.

Por ejemplo:

Si has de enfrentar a un rival más débil y eliges un factor de desprecio negativo para que la máquina evite los empates (ejemplo -0,8), cuando una de las líneas posibles conduzca a ese resultado su valoración ya no será cero (será -0,8). Luego muchas jugadas valuadas entre 0,0 y -0,8 (antes descartadas por malas) ahora serán mejores que un empate y ¡totalmente jugables! (ejemplo -0,7)

La máquina escogerá la mejor, se las arreglará para lidiar con esa pequeña desventaja y gracias a su mayor fuerza seguirá teniendo la oportunidad de ganar.

Ahora, si has de enfrentar a un rival más fuerte, y eliges un factor de desprecio positivo para que la máquina busque los empates (ejemplo 1,5), cuando una de las líneas posibles conduzca a ese resultado su valoración ya no será cero (será 1,5). Luego muchas jugadas valuadas entre 0,0 y 1,5 (antes mejores que un empate) ahora ¡serán descartadas por malas! (ejemplo 1,2)

En este caso la máquina resignará su pequeña ventaja (que por su menor fuerza no necesariamente le garantiza una victoria) y seguirá la línea que promete llevarla al empate (un buen resultado).

Por último, con el factor de desprecio que viene por defecto en la Millennium el valor de las líneas que conducen al empate será cero y la máquina jugará normalmente.

Obviamente, como te mostraba en un par de ejemplos que compartí antes, la elección del factor de desprecio es algo delicado. Pues se corre el riesgo de subestimar por exceso a un rival y luego terminar perdiendo partidas que tenían destino de empate; o de respetarlo demasiado, y luego terminar empatando partidas que estaban totalmente ganadas. Notar que la Millennium no permite ingresar valores exagerados de factor de desprecio.

Básicamente en eso consiste la implementación de un factor de desprecio y desde mi punto de vista (que obviamente puede estar errado) no se corresponde con lo que tu vienes explicando y has resumido en tu versión personal del manual.

Saludos,
Sebastián

Avatar de Usuario
tibono
Veterano
Veterano
Mensajes: 152
Registrado: 20 Ago 2015 23:07

Re: Millennium The King Performance

Mensaje por tibono » 08 Jul 2020 20:59

Hi chess friends,

Maybe worth pointing out "fuerza bruta", brute force, has its own setting available as part of the style definition = selectivity value 1. From the long english manual: "The style is also influenced by a ‘Selectivity’ factor. A high value for this parameter (maximum: 20) permits the program to analyse certain selected variations more deeply. A value of 1 results in ‘brute force’, i.e. every variation analysed to the same depth."

Something I am much interested in: Astron, I have no clue how you could deduct from the analysis display the usage made of hash tables. How please did you manage to do it? :thinking:

Thanks & kind regards,
Tibono

Avatar de Usuario
Astron
Veterano
Veterano
Mensajes: 104
Registrado: 02 Jun 2018 19:12

Re: Millennium The King Performance

Mensaje por Astron » 09 Jul 2020 22:33

Soy sanitario y mi tiempo con esta pandemia es ahora mucho menor que antes pues ahora trabajo casi 9 horas diarias y colaboro en varias webs de distinta temática (de ajedrez es solo esta) en las cuales tambien he publicado artículos y que tengo medio abandonadas por esta pandemia. No digo esto ahora por causa de este tema, pués los moderadores podrán dar fé de la de veces que les ha comentado lo de mi falta de tiempo en los emails privados cuando les he enviado los artículos y me han animado a seguir escribiendolos, siempre muy amablemente, pués su comportamiento siempre ha sido conmigo más que correcto, y eso era desde antes de la pandemia, imáginate ahora. Digo esto porque con esta respuesta daré por zanjado este tema, no solo por falta de tiempo, sino porque ya está agotado.

¡Menudo "batiburrillo" me has contado!, casi no he podido seguirlo del enredo que tiene, lleno de inexactitudes y de mezclas con otras cosas diferentes del contempt. Creo que no sabes muy bien como funciona un programa y por lo que deduzco tampoco sabes bien como funciona una tabla Hash.

Primero vamos a dejar algo muy claro. Esta máquina NO VALORA si el rival es fuerte o es débil, de hecho muy pocos micros dedicados lo hacen (sí que lo hacen casi todos los programas para PC) . Un programa está compuesto de una serie de algoritmos matemáticos para jugar al ajedrez lo mejor posible con la finalidad de ganar la partida. Para valorar al rival haría falta implementar otro algoritmo que hiciera esa valoración del rival comparando sus jugadas con respecto a las posibilidades reales de la partida... etc. Por ejemplo la DGT Centaur, tiene ese algoritmo y es capaz de valorar al rival y actuar en consecuencia, es una de las grandes características de esa máquina que la hace diferente a las demás y por ello muy "apetitosa" para los que somos amantes de estos aparatos.

Pero la mayoria de las máquinas no "miran hacia atras", tienen un programa informático compuesto de distintos algoritmos matemáticos que permiten el análisis de posiciones con una valoración de cada una de ellas y que van anotando en la tabla Hash. Mediante las distintas configuraciones modificamos los parámetros de esos algoritmos para que esas valoraciones puedan ser distinas. Por ejemplo cuando configuramos las "personalidades" que pueda adoptar la máquina (agresiva, conservadoras, etc.), lo que estamos haciendo es variar los parámetros que utiliza para valorar las posiciones, de forma tal que una misma posición puede recibir más o menos valor o puntos que otra, y por tanto hacer un movimiento distinto, segun esa "personalidad". Y así con todo tipo de niveles y configuraciones.

Es decir, la máquina cada vez que hacemos un movimiento, solo mira la posición que ha quedado en el tablero y todo lo que puede ocurrir después. Al rival no lo valora para nada, de hecho en sus análisis siempre presupone que su oponente va a hacer la mejor jugada posible. (Esto da lugar a que si tienes activada la opción "tutor" te valore la jugada que acabas de hacer, porque es inferior a la esperada por la máquina como mejor, pero eso NADA tiene que ver con una valoración de la fuerza del rival) y ¿que ocurre si el rival no hace esa jugada esperada?, para eso está la tabla Hash, que creo que deberías profundizar en ella.

Como todos sabeis, una máquina en su turno analiza todas las posibles posiciones del tablero con cada movimiento posible a realizar, y valora cada una de ellas, y así va profundizando hasta que se acaba su tiempo o su límite de profundidad de búsqueda o aquellas limitaciones que en niveles o configuraciones le hayamos puesto, y para ergonomizar mejor ese tiempo de que dispone utiliza la tabla Hash (¡aquí está de nuevo!), porque eso le ahorra mucho tiempo, y en el ajedrez el tiempo es oro. Pero si es un nivel sin tiempo, la tabla Hash actua de otra forma (evidentemente es modificada por ese nivel que hemos configurado, no por un cerebro pensante) En ese análisis realizado puede "ver" un mate, o puede "ver" unas tablas, o no "ver" ninguna de esas opciones.

Está claro que si "ve" el mate, irá a por él, pero si solo ve las tablas, irá a por ella, es decir, irá a por lo mejor que "vea" en ese análisis. Pudiera ser que con un uso normal de la tabla Hash la máquina viera un mate en el horizonte, pero que ese mate ya no lo viera si se infrautiliza esa tabla porque ya no llega hasta ese horizonte. Esa sería una posible consecuencia del distinto uso de esta tabla, pero puede haber otras.

La máquina está programada para conseguir el mejor resultado posible y como objetivo: 1º el jaque mate, 2º las tablas, o 3º retrasar lo más posible la derrota aunque "vea" un jaque mate del oponente. Esto último figura en los algoritmos de casi todos los programas, porque retrasando esa derrota propia que ya ha "visto", siempre existe la posiblidad de un error del oponente, y que gracias a la tabla Hash (¡aquí está de nuevo!), estará "ojo avizor" por si ese error se produce y de esa forma ya puede ir a por la victoria o las tablas. ¡Fijate la importancia de esa tabla!

Con lo que te he dicho comprenderás que la pregunta que me haces: "¿Entonces como hacer que la máquina elija una línea ligeramente perdedora (cuando tiene la posibilidad de seguir una que le lleva al empate) o que elija una línea que conduce al empate (cuando otra líneas le darían una pequeña ventaja)?" no tiene sentido. La máquina nunca elegirá un línea perdedora si ve otra que es mejor. Lo que hacemos con los niveles o configuraciones (contempt entra otros) es EVITAR que vea esa línea mejor, porque siempre elegirá lo mejor que "VEA". Eso es lo que hace el factor contemp, evitar que vea el mate, pero si el empate, o al revés, en distintos grados o medidas.

sigo en el siguiente post

Cerrado