Schachcomputer.info Community

Zurück   Schachcomputer.info Community > Schachcomputer / Chess Computer: > Die ganze Welt der Schachcomputer / World of chess computers


Antwort
 
Themen-Optionen Ansicht

  #1  
Alt 16.05.2010, 22:57
Benutzerbild von Paisano
Paisano Paisano ist offline
Schachcomputer Koryphäe
 
Registriert seit: 15.12.2004
Ort: Borken-Singlis (Hessen)
Alter: 65
Land:
Beiträge: 1.247
Abgegebene Danke: 87
Erhielt 273 Danke für 76 Beiträge
Aktivitäten Langlebigkeit
1/20 20/20
Heute Beiträge
0/3 sssss1247
Der "richtige" Weg in der Schachprogrammierung ?

Hallo zusammen,

in der vergangenen Zeit wurde schon immer mal wieder hier und dort das Thema angerissen, die kürzlichen Meinungen dazu sind sicher endlich mal einen eigenen Thread wert.

Diskussionswürdige Fragen wären zum Beispiel:
  • Soll ein Programm möglichst stark spielen oder menschliche "Strategien" nachahmen ?
  • Sollte man mehr auf die Software eingehen ?
  • Wie ist "Schachwissen" zu bewerten ?
  • Was versteht man unter "Schachwissen" ?
  • Warum kann "Schachwissen" schlecht sein ?
  • Projekt Hydra - hat das noch etwas mit Computerschach zu tun ?
  • Muss ein Programmierer ein guter Schachspieler sein ?
  • Botwinniks "Pionier"
  • Welche Rolle spielte die Hardware in den Anfangszeiten des Computerschachs ?
  • Waren die Programmierer früher "besser" ?
  • Wie sind die bekannten Programmierer der Vergangenheit zu bewerten ? (Lang = clever ?, Morsch = primitiv ?, Schröder = effektiv ? usw.)
  • Können wir diese Fragen überhaupt objektiv beantworten oder haben wir die "Gute alte Schachcomputer"-Brille auf ?
Die vorstehenden Punkte hab ich einfach mal so, wie sie mir durch den Kopf gegangen sind, aufgeführt, gibt sicher noch einiges mehr, sie sollen nur den Bereich verdeutlichen, auf den sich der Titel des Threads bezieht.

Also, wer was zu sagen hat, raus damit

Grüße
Uwe
__________________
Der nächste Satz ist eine Lüge. Der vorhergehende Satz ist wahr.
Mit Zitat antworten
  #2  
Alt 17.05.2010, 09:23
Benutzerbild von mclane
mclane mclane ist offline
Lebende Foren Legende
 
Registriert seit: 16.04.2005
Ort: Lünen
Alter: 57
Land:
Beiträge: 3.807
Abgegebene Danke: 2.097
Erhielt 3.949 Danke für 1.471 Beiträge
Aktivitäten Langlebigkeit
14/20 19/20
Heute Beiträge
2/3 sssss3807
AW: Der "richtige" Weg in der Schachprogrammierung ?

man muß sehen das früher vieles durch die schwache hardware bedingt war, den geringen speicherplatz den man hatte. heute ist das alles kein probem mehr. aber damals....
damals mußte man sehr platzsparend und effizient programmieren.

ich würde sagen die programme von heute (PC) unterscheiden sich nicht viel von den programmen damals. z.B. die enormen Rechentiefen die heute Fakt sind, entstehen durch extremes Pruning. Also dem gegenteil von Brute-Force, wie es im B+P oder MM2 realisiert wird.

Nimmt man die Geschichte der Schachcomputer, hat sich das vorwärtsabschneiden von Ästen/Zügen aufgrund von positionellen Kriterien also als sehr erfolgreich gezeigt, obwohl es DAMALS als die Anfänge waren auf den bescheidenen CPUs (Mark V, B-Strategie, 1 oder 2 mhz 6502)
noch sehr oft zu Fehlern kam.

Mark V, Mephisto III, und sicherlich lassen sich noch diverse Andere finden, sind also gute Beispiele für intelligente vorwärtsabschneidende Programme, wie wir sie heute auf den PCs auch noch haben.

Eine Zeit lang dominierten die Gewaltprogramme, als B+P, MM2 und im Umfeld Constellation und PSH- kursierten. PSH war ja der Versuch einem Gewaltprogramm mittels If-Klauses (Wenn dann Bedingungen) konkret Sachverstand einzuhauchen.

Jeder Programmierer hatte so seine speziellen methoden der Variantenexplosion im Suchbaum Herr zu werden.

Lang setzte auf Asymmetrie in der Zuggenerierung, auf einen STATISCHEN Abtauschbewerter. In Folge der Spielstil.

Schröder war dazu ganz was anderes.
Kittinger hat seine Gewaltprogramme immer wieder neu frisiert und auch zuletzt selektiver gemacht.
Und Frans Morsch kam mit seinen Null-Move Programmen bei denen es IM SUCHBAUM keine Stellungsbewertung gab. Es gab ein Preprocessing mit einer ausführlichen Bewertung und dann IM SUCHBAUM nur relative Bonus/Malus Bewertungen. Das hatte den Effekt das mit zunehmender Rechentiefe die Fehlerhäufigkeit bei Abschätzungen wuchs , weil die relativen Bewertungen sich ja immer mehr von der Wurzel entfernten.

Sicherlich wäre es anders gekommen wenn Thomas Nitsche und Elmar Henne weitergemacht hätten. Vielleicht in Eigenregie. Es wäre dann experiementierfreudiger geblieben.
__________________
Die ganze Welt des Computerschachs
Mit Zitat antworten
  #3  
Alt 17.05.2010, 11:11
Benutzerbild von Mythbuster
Mythbuster Mythbuster ist offline
Forengrinch
 
Registriert seit: 06.04.2008
Ort: UNESCO Welterbe
Land:
Beiträge: 6.906
Bilder: 257
Abgegebene Danke: 1.463
Erhielt 4.614 Danke für 1.522 Beiträge
Member Photo Albums
Aktivitäten Langlebigkeit
7/20 16/20
Heute Beiträge
0/3 sssss6906
AW: Der "richtige" Weg in der Schachprogrammierung ?

 Zitat von Paisano Beitrag anzeigen
in der vergangenen Zeit wurde schon immer mal wieder hier und dort das Thema angerissen, die kürzlichen Meinungen dazu sind sicher endlich mal einen eigenen Thread wert.
Stimmt! Ich beschäftige mich seit den 80er Jahren mit der Schachprogrammierung und habe mal ein Programm in QBasic geschrieben. Seit einigen Jahren arbeite ich an "Bender", einem intelligenten Schachprogramm, welches einige Höhen und mehr Tiefen hat ... einige User aus dem Forum kennen das Programm schon von Partien "Chessguru - Bender" auf Chessgate ... wo das Programm mir schmerzlich demonstrierte, wo noch Lücken in den Bewertungsfunktionen sind. Es kommt derzeit auf ca. 2.000 Elo Punkte auf einem Notebook mit 1,3 GHz ULV CPU. Schachprogrammierung ist aus meiner Sicht ein durchaus spannendes Thema.


 Zitat von Paisano
Diskussionswürdige Fragen wären zum Beispiel:
Viele unterschiedliche Fragen, die teilweise einzeln schon seitenlange Antworten verdienen. Dann will ich wenigstens kurze Antworten versuchen.



 Zitat von Paisano
Soll ein Programm möglichst stark spielen oder menschliche "Strategien" nachahmen ?
Das hängt davon ab, zu welchem Zweck Du das Programm entwickelst und für welche Zielgruppe. Aus meiner Sicht ist eindeutig die "menschliche" Strategie zu bevorzugen. Aus dem einfachen Grund, da ich Programme zu Spielen nutze und nicht zum Selbstzweck wie es zum Beispiel im Nachbarforum zu beobachten ist. Tausende Partien im Sekundenblitz absolvieren zu lassen, um dann zu sehen, welches Programm vermutlich ein paar Elo Punkte besser "spielt" ... nein, das hat nichts mehr mit "Schach" zu tun ... aus meiner Sicht. Natürlich, es ist gut, eine Starke Analyse Engine zu haben ... aber dazu reichen meines Erachtens selbst Programme von vor einigen Jahren völlig aus.

Wenn man selbst gegen Programme spielen will, ist eine gewisse Nachvollziehbarkeit ein sehr wichtiger Punkt. Genau hier unterscheiden sich aus meiner Sicht "wissensbasierende" Programme von den üblichen Programme. Aber darauf werde ich weiter unten mit einem Beispiel eingehen.



 Zitat von Paisano
Sollte man mehr auf die Software eingehen ?
Wie meinst Du das?



 Zitat von Paisano
Wie ist "Schachwissen" zu bewerten ?
Was verstehst Du unter "zu bewerten"? Wie das Schachwissen in die Bewertung einfließt oder eher allgemein, welche Bedeutung Schachwissen für das Programm hat?

Ich denke, jeder Programmierer muss sich am Anfang die Frage stellen, welchen Weg er gehen will. Möglichst viel Wissen oder schnelle Bewertung mit extremen Rechentiefen ... jedes dieser Systeme hat Vor- und Nachteile.

Die Vorteile von viel Wissen:
- "Intelligentes" Spielverhalten.
- Interessanterer Spielstil.

Nachteile von viel Wissen:
- Langsamer
- Weniger Zugewinn an Spielstärke durch schnellere Hardware.
- Vermutlich immer modernen "schnellen Brütern" von der Spielstärke unterlegen.


Die Vorteile von wenig Wissen:
- schnelle Baumsuche mit extremen Rechentiefen.
- Programm profitiert dauerhaft von schnellerer Hardware.

Nachteile:
- Stil oftmals langweiliger und aus menschlicher Sicht unlogisch.



 Zitat von Paisano
Was versteht man unter "Schachwissen" ?
Schachwissen wird oft mit Bewertungsfunktionen verwechselt. Die Bewertungsfunktion setzt sich zusammen aus: Figurenwerte, Dynamik der Figuren (Anzahl der Zugmöglichkeiten etc.), Zentrumskontrolle, Königssicherheit etc. pp.
Das reine Schachwissen hingegen ist Theorie, die unabhängig einer speziellen Stellung greift.

Beispiele:
- Quadratregel
- Falsches Läufer Spiel

An dieser Stelle möchte ich ein Beispiel dafür geben, warum aus meiner Sicht Programme mit viel Wissen zu bevorzugen sind und warum sie menschlicher und interessanter spielen. Ich nehme dazu ein einfaches Endspiel: KLS - K

Wenn Du das theoretische Wissen hast, wie Du mit Läufer und Springer matt setzen kannst, wirst Du es instinktiv tun, ohne lange über jeden Zug nachdenken zu müssen. In der Regel wirst Du dies dann immer nach dem gleichen Schema tun, welches auch umstehende Zuschauer erkennen und verstehen! Das ist Wissen und menschlich!

Viele unserer alten Brettcomputer beherrschen dieses Endspiel problemlos: Der uralte Mephisto II von 1981, der Super Conny von 1984 und natürlich alle Lang Programme. Wie gesagt, selbst der Mephisto II "weiß", wie es geht und wird den Gegner matt setzen. Die Art und Weise, wie er es tut, wirst Du selbst problemlos verstehen und nachvollziehen, wenn Du selbst dieses Endspiel rudimentär beherrscht.

Viele der modernen Programme haben selbst dieses Wissen nicht mehr! Zum Beispiel kann Rybka 3 nicht mit Läufer und Springer das Spiel gewinnen, ohne entweder auf eine Datenbank zuzugreifen oder das Matt zu errechnen! Diue Züge einfach aus der Endspieldatenbank abzurufen, hat rein gar nichts mehr mit Intelligenz oder Spiel zu tun. Da die Hardware heute 1.000.000fach schneller ist, als die eines Mephisto II, lassen sich solche Positionen natürlich "errechnen", die benötigte Rechentiefe erreicht Rybka relativ schnell.

Jetzt könnte man sagen, es ist doch völlig egal, wie das Programm zum Ziel (Matt) gelangt, das Ergebnis zählt. Doch genau das sehe ich anders. Einerseits ist es für mich wesentlich beeindruckender, wenn das Programm aufgrund von Wissen zum Ziel gelangt und nicht einfach stupide rechnet bzw. in einer Datenbank abruft.

Ein anderer Punkt ist wesentlich entscheidender: Die Züge aus einer Datenbank oder auch nach der Suche (schnell aber dumm) sind oftmals effizienter, aber aus menschlicher Sicht nicht mehr nachvollziehbar. Sprich, es ist möglich, daß die Datenbank ein Matt in 14 ausgibt, welches zwar der schnellste Weg zum Ziel ist, aber aus menschlicher Sicht nicht nachvollziehbar! Ein Turnierspieler würde vielleicht 22 Züge brauchen ... die aber kann der Amateur dann auch nachvollziehen.

Bein Endspiel KLS - K mag das nicht soooo offensichtlich sein, aber wer mal KD - KT testet, merkt sehr schnell, wo die Unterschiede der unterschiedlichen Ansätze sind.



 Zitat von Paisano
Warum kann "Schachwissen" schlecht sein ?
Siehe oben: Schachwissen belegt Rechenleistung und verlangsamt das Programm.

Mittlerweile gilt es als unbestritten, dass Programme, die über viel Wissen verfügen, weniger von schnellerer Hardware profitieren als "dumme" Programme, die sich möglichst schnell so tief wie möglich in den Suchbaum eingraben ...

Das Ergebnis dessen ist bekannt: Es gibt Programme, die zwar im von Version zu Version dümmer werden, aber dennoch stärker spielen: Rybka 2 kannte zum Beispiel noch das "Falsche Läufer Spiel" ... Rybka 3 nicht mehr ...

Die Begründung: Es gibt nur selten Situationen, wo dieses Wissen greift und den "Sieg" bringt ... aber in jeder Partie verlangsamt das Wissen die Suche. Unterm Strich überwiegen somit die Vorteile den wenigen Punktverlusten, die eingefahren werden, weil das Programm einfach nicht weit genug rechnen kann, um zu sehen, daß es sich in die "falsche Läufer Falle" verstrickt hat ...



 Zitat von Paisano
Projekt Hydra - hat das noch etwas mit Computerschach zu tun ?
Kein Ahnung, ich habe mich nur wenig damit befasst.



 Zitat von Paisano
Muss ein Programmierer ein guter Schachspieler sein ?
Nein, absolut nicht. Richard Lang ist nur ein sehr mäßiger Spieler, der grade mal die Regeln beherrscht. Sicherlich kann es nicht Schaden, selbst gut spielen zu können und sicherlich sollte man starke Spieler im Team haben, um das Ergebnis testen zu können ... aber für die Programmierung ist das nicht nötig.



 Zitat von Paisano
Botwinniks "Pionier"
Aus meiner Sicht eine interessante Theorie, die man mal mit moderner Hardware umsetzen sollte .... allerdings halte ich viele Dinge für zu abstrakt, um tatsächlich umgesetzt zu werden ...



 Zitat von Paisano
Welche Rolle spielte die Hardware in den Anfangszeiten des Computerschachs ?
Ich denke schon. Da die Hardware im Vergleich zu heute sehr begrenzt war, mussten die Resourssen optimal ausgenutzt werden. Da die Hardware zu langsam war, um mit stupider Suche echte Fortschritte zu machen, mussten die Programmierer andere Wege suchen, um echte Fortschritte zu erzielen. Das Ergebnis waren selektive Suchverfahren und Programme mit viel Schachwissen.



 Zitat von Paisano
Waren die Programmierer früher "besser" ?
Ein deutliches "Ja!". Wenn man mal darüber nachdenkt, was ein Richard Lang (und andere Programmierer jener Zeit) aus 32, 64 oder 128 KB und 512 KiloByte RAM geholt hat! Das ist schon sehr beeindruckend, wenn man sich dagegen heutige Programme und Engines anschaut.



 Zitat von Paisano
Wie sind die bekannten Programmierer der Vergangenheit zu bewerten ? (Lang = clever ?, Morsch = primitiv ?, Schröder = effektiv ? usw.)
- Lang: Sehr viel Schachwissen, sehr selektive Programme.

- Morsch: Erster "moderner" Programmierer, ab ca. Magellan: Weniger Wissen, dafür schnelle, effiziente Suche mit großen Tiefen.

- Schröder: Ebenfalls viel Wissen, weniger selektiv, weniger Endspielwissen.

- de Koning: Ebenfalls sehr viel Wissen, allerdings weniger Endspielwissen als Langprogramme.



 Zitat von Paisano
Können wir diese Fragen überhaupt objektiv beantworten oder haben wir die "Gute alte Schachcomputer"-Brille auf ?
Warum nicht? Ich denke schon, daß Spieler, ab einer gewissen eigenen Spielstärke durchaus in der Lage sind, ein Urteil abzugeben. Das kann ich auch relativ leicht belegen:

Es wäre einfach (und günstiger) ein Netbook mit DGT Brett zu nehmen ... dann hat ma auch das Brettgefühl und etliche Programme zur Auswahl. Nun könnte man natürlich sagen, das zählt nicht, weil die Programme viel zu stark sind ... aber auch hier möchte ich widersprechen: Etliche moderne Programme lassen sich auf das Niveau eines Vancouver, einer V11 oder eines R30 drosseln .... trotzdem kenne ich kein Programm, welches mir auch nur ansatzweise den gleichen Spaß beim Spiel bietet, wie diese "alten Recken" ...

Nun ja, jedenfalls nutze ich zum eigenen Spiel auf dem Revelation zu 95% die Emulationen ...

Uff, war jetzt doch etwas mehr Text als beabsichtigt ...

Grüße,
Sascha
__________________
This post may not be reproduced without prior written permission.
Copyright (c) 1967-2024. All rights reserved to make me feel special. :-)
Mit Zitat antworten
  #4  
Alt 17.05.2010, 20:25
Benutzerbild von Paisano
Paisano Paisano ist offline
Schachcomputer Koryphäe
 
Registriert seit: 15.12.2004
Ort: Borken-Singlis (Hessen)
Alter: 65
Land:
Beiträge: 1.247
Abgegebene Danke: 87
Erhielt 273 Danke für 76 Beiträge
Aktivitäten Langlebigkeit
1/20 20/20
Heute Beiträge
0/3 sssss1247
AW: Der "richtige" Weg in der Schachprogrammierung ?

 Zitat von mclane Beitrag anzeigen
ich würde sagen die programme von heute (PC) unterscheiden sich nicht viel von den programmen damals. z.B. die enormen Rechentiefen die heute Fakt sind, entstehen durch extremes Pruning. Also dem gegenteil von Brute-Force, wie es im B+P oder MM2 realisiert wird.
Ich weiss nicht recht, für mich ist dafür in erster Linie die verfügbare schnelle Hardware und reichlich Speicher verantwortlich, allein extremes Pruning ging ja schon mit dem Mephisto III schief
und dessen Programmierer haben sicher eine Menge Zeit investiert, ihrem Programm das Unterscheiden zwischen guten und schlechten Varianten "beizubringen", mit Sicherheit mehr, als es die
heutigen Programmierer tun. Und das Erkennen, wo man Abschneiden kann und wo nicht, ist ja eines der elementarsten Probleme in der Schachprogrammierung...
 Zitat von mclane Beitrag anzeigen
Nimmt man die Geschichte der Schachcomputer, hat sich das vorwärtsabschneiden von Ästen/Zügen aufgrund von positionellen Kriterien also als sehr erfolgreich gezeigt, obwohl es DAMALS als die Anfänge waren auf den bescheidenen CPUs (Mark V, B-Strategie, 1 oder 2 mhz 6502)
noch sehr oft zu Fehlern kam.
ja, daß mit Brute Force langfristig nicht weiter zu kommen war, haben damals sehr viele Programmierer frühzeitig erkannt.
__________________
Der nächste Satz ist eine Lüge. Der vorhergehende Satz ist wahr.
Mit Zitat antworten
  #5  
Alt 17.05.2010, 22:38
Benutzerbild von Paisano
Paisano Paisano ist offline
Schachcomputer Koryphäe
 
Registriert seit: 15.12.2004
Ort: Borken-Singlis (Hessen)
Alter: 65
Land:
Beiträge: 1.247
Abgegebene Danke: 87
Erhielt 273 Danke für 76 Beiträge
Aktivitäten Langlebigkeit
1/20 20/20
Heute Beiträge
0/3 sssss1247
AW: Der "richtige" Weg in der Schachprogrammierung ?

Hallo Sascha,
danke für Deine ausführlichen und interessanten Ausführungen.

 Zitat von Mythbuster Beitrag anzeigen
Viele unterschiedliche Fragen, die teilweise einzeln schon seitenlange Antworten verdienen. Dann will ich wenigstens kurze Antworten versuchen.
Ja, wie gesagt waren die aufgeführten Punkte quasi als als Anregungen und Denkanstösse gedacht, da kann man sicher auf das eine oder andere Thema ausführlicher eingehen.
 Zitat von Mythbuster Beitrag anzeigen
Sollte man mehr auf die Software eingehen ?
Wie meinst Du das?
Hintergrund dieser Frage war, ob man beim Versuch, ein Schachprogramm zu verbessern (=höhere Spielstärke) mehr auf neue Programmiertechniken oder mehr auf Hardware-Optimierung gehen sollte.
Sicher eine schwierige Frage, auf die vermutlich nur Programmierer von starken Engines eine Antwort geben können. In Anbetracht der Tatsache, dass auch zukünftig immer schnellere Hardware verfügbar
sein wird, vermute ich, dass es mehr in diese Richtung gehen wird, die Frage, inwieweit man heutige Schachprogramme durch neue Programmiertechniken verbessern kann, kann ich nicht beurteilen
 Zitat von Mythbuster Beitrag anzeigen
Wie ist "Schachwissen" zu bewerten ?
Was verstehst Du unter "zu bewerten"? Wie das Schachwissen in die Bewertung einfließt oder eher allgemein, welche Bedeutung Schachwissen für das Programm hat?
Ja, hab ich zu vage formuliert, lässt sich am Besten an diesem Beispiel verdeutlichen: Kürzlich hat Manfred in diesem Thread https://www.schachcomputer.info/foru...ead.php?t=3522 festgestellt,
daß der TC2100 nicht "weiß", daß er mit dem Läufer allein nicht mattsetzen kann, die Partie ist aber faktisch Remis. Spielt es jetzt eine Rolle, ob das Programm nun Remis anzeigt oder +3,50 ??

Wie anfangs schon erwähnt gibt es sicher noch viele Punkte, auf die man näher eingehen kann, aber dafür braucht's mehr Zeit

Gruß
Uwe
__________________
Der nächste Satz ist eine Lüge. Der vorhergehende Satz ist wahr.
Mit Zitat antworten
  #6  
Alt 17.05.2010, 22:48
Benutzerbild von Mythbuster
Mythbuster Mythbuster ist offline
Forengrinch
 
Registriert seit: 06.04.2008
Ort: UNESCO Welterbe
Land:
Beiträge: 6.906
Bilder: 257
Abgegebene Danke: 1.463
Erhielt 4.614 Danke für 1.522 Beiträge
Member Photo Albums
Aktivitäten Langlebigkeit
7/20 16/20
Heute Beiträge
0/3 sssss6906
AW: Der "richtige" Weg in der Schachprogrammierung ?

 Zitat von Paisano Beitrag anzeigen
Kürzlich hat Manfred in diesem Thread https://www.schachcomputer.info/foru...ead.php?t=3522 festgestellt,
daß der TC2100 nicht "weiß", daß er mit dem Läufer allein nicht mattsetzen kann, die Partie ist aber faktisch Remis. Spielt es jetzt eine Rolle, ob das Programm nun Remis anzeigt oder +3,50 ??
Kurze Antwort: Ja! Die Begründung ist einfach. Wenn ein Computer weiß, mit welchem Material er mattsetzen kann oder im Gegenteil ein Remis noch erkämpfen kann, spielt dies eine wichtige Rolle in der Berechnung.

Hierzu ein Beispiel mit mehr Deutlichkeit. Ein Matt mit zwei Springern ist nicht möglich. Jetzt gibt es durchaus Situationen, in denen man so manchen Computer dazu bewegen kann, daß er im weiteren Verlauf "mit zwei Springern dasteht" ... statt zum Beispiel mit einem Springer und einem Bauern ... und schon stellt dieses "Nichtwissen" einen deutlichen Nachteil dar.

Es gibt eine nette Teststellung dazu. In dieser Teststellung hat der Computer die Wahl, ob er beide Springer retten kann oder nur einen Turm ... viele Computer entscheiden sich für die beiden Springer, weil der Nominalwert der beiden Springer höher ist, als der des Turmes ... wenn der Computer hingegen über das Wissen verfügt, daß zwei Springer nicht reichen, trifft er sofort die richtige Entscheidung, auch wenn er "das Ende" nicht sehen bzw. errechnen kann.

Als Beispiel kann man hier die V2 nehmen, die sofort den Turm schlägt und 0.00 anzeigt.

Gruß,
Sascha
__________________
This post may not be reproduced without prior written permission.
Copyright (c) 1967-2024. All rights reserved to make me feel special. :-)
Mit Zitat antworten
  #7  
Alt 17.05.2010, 23:16
HPF HPF ist offline
TASC R40
 
Registriert seit: 30.04.2005
Ort: München
Land:
Beiträge: 542
Abgegebene Danke: 0
Erhielt 1 Danke für 1 Beitrag
Aktivitäten Langlebigkeit
0/20 19/20
Heute Beiträge
0/3 ssssss542
AW: Der "richtige" Weg in der Schachprogrammierung ?

 Zitat von Paisano Beitrag anzeigen
Hallo zusammen,

in der vergangenen Zeit wurde schon immer mal wieder hier und dort das Thema angerissen, die kürzlichen Meinungen dazu sind sicher endlich mal einen eigenen Thread wert.

Diskussionswürdige Fragen wären zum Beispiel:
  • Soll ein Programm möglichst stark spielen oder menschliche "Strategien" nachahmen ?
  • Sollte man mehr auf die Software eingehen ?
  • Wie ist "Schachwissen" zu bewerten ?
  • Was versteht man unter "Schachwissen" ?
  • Warum kann "Schachwissen" schlecht sein ?
  • Projekt Hydra - hat das noch etwas mit Computerschach zu tun ?
  • Muss ein Programmierer ein guter Schachspieler sein ?
  • Botwinniks "Pionier"
  • Welche Rolle spielte die Hardware in den Anfangszeiten des Computerschachs ?
  • Waren die Programmierer früher "besser" ?
  • Wie sind die bekannten Programmierer der Vergangenheit zu bewerten ? (Lang = clever ?, Morsch = primitiv ?, Schröder = effektiv ? usw.)
  • Können wir diese Fragen überhaupt objektiv beantworten oder haben wir die "Gute alte Schachcomputer"-Brille auf ?
Die vorstehenden Punkte hab ich einfach mal so, wie sie mir durch den Kopf gegangen sind, aufgeführt, gibt sicher noch einiges mehr, sie sollen nur den Bereich verdeutlichen, auf den sich der Titel des Threads bezieht.

Also, wer was zu sagen hat, raus damit

Grüße
Uwe
Hallo Uwe,

langsam verstehe ich, warum Schachwissen nicht gefragt ist. Der Grund hierfür liegt nach meiner Auffassung im Bewertungs-Algorithmus. Der ist erforderlich, um Abschneidungen durchführen zu können, die notwendig ist, da ansonsten die Berechnung uferlos wird.
Schachwissen ist programmiertechnisch betrachtet schwierig durchzuführen. Man gibt einem Programmierer gewisse Regeln vor, nach der das Programm schreiben soll. Ich glaube mittlerweile, dass sehr gute Kenntnisse über das Schachspiel nur hinderlich sind. So sollen die 32 parallel geschalteteten Prozessoren beim Projekt Hydra ca. 200 Millionen Züge prüfen. Dies geht nur durch einen einfachen Algorithmus.

Die RWTH-Aachen hat dazu einen guten Artikel über den Bewertungsmodus geschrieben. Die Bewertung einer Stellung wird im Artikel exemplarisch durchgeführt.

Wie soll zum Beispiel das Endspiel LSK-K durchgeführt werden. Ein Matt sollte mit 50 Zügen erreicht werden. Ohne genauen Plan, ist es trotz sehr guter Hardware, kaum oder nicht erreichbar (unter einem vernünftigen Zeitlevel betrachtet). Betrachte nur mal die verschiedenen Regeln beim Freibauer. Der Turm soll voran gehen, der König hinter dem Bauer. Oder die Regel hinsichtlich zur Opposition der Könige. Wie verhält sich der gegnerisch König? Die Quadratregel usw. .
Früher gab es keine so starke Hardware wie jetzt. Sie war nicht entwickelt und teuer. Starke Prozessoren waren zu teuer, was gleichfalls auch für Speicher gilt. Dies gilt auch für den den 3 Grundbaustein beim Computerschach, der für die Steuerung der Suche und der Zugauswahl notwendig ist.

Man darf nicht vergessen, dass Schachcomputer Spielzeug waren und sind. Eine Randgruppe von Techniker und Programmierer wollten Beispiele für KI aufzeigen. Aus dieser Idee entstanden Schachcomputer als Beispiel und als Massenware. Hier sollte auch nicht vergessen werden, dass nur 3% von Schachspieler in der Welt einen Elowert von über 2000 besitzen. Einfache und preiswerte Schachcomputer reichen dafür allemal.


Paul
Mit Zitat antworten
  #8  
Alt 17.05.2010, 23:29
SörenH SörenH ist offline
Mephisto III
 
Registriert seit: 27.03.2007
Ort: Stuttgarter Raum
Land:
Beiträge: 45
Abgegebene Danke: 5
Erhielt 21 Danke für 10 Beiträge
Aktivitäten Langlebigkeit
0/20 18/20
Heute Beiträge
0/3 sssssss45
AW: Der "richtige" Weg in der Schachprogrammierung ?

Hallo,

ein Aspekt, den ich speziell bei der Programmierung von Brettcomputern bemerkenswert finde ist, dass man (vor allem damals) nicht die komfortablen Möglichkeiten des Debugging und Testen hatte, wie heutzutage am PC. Jetzt kann man mittlerweile bequem das Verhalten von "Embedded Hardware" auf dem PC simulieren. Früher gab es das nicht (oder nur eingeschränkt). Deshalb stelle ich mir die Fehlersuche sehr mühsam vor. Geschweige denn, dass man verschiedene Konzepte mal schnell testen konnte. Tja, die gute alte Zeit, da hat man noch viel mit Papier und Bleistift entwickelt.

Noch ein anderer Punkt, es wurde häufig darauf hingewiesen, dass die Schachprogramme von der Hardware-Entwicklung profitiert haben und man auch weniger Schachwissen in die Programme steckte. Das stimmt zum Teil. Es ist auch ein bisschen schade, weil bis heute die richtigen Werkzeuge fehlen, einen verbalen Plan "Gehe mit Deinem König ins Zentrum und halte mit dem Springer den Freibauern auf" erstmal zu entwickeln und dann in eine Bewertungsfunktion oder Algorithmus umzusetzen. Ich denke aber, dass die Fortschritte nicht nur von der Hardware kommen, sondern dass der Programmierung in erster Linie sein Programm ständig effizienter machen muss. Ich habe letztens die Dos-Programme Fritz, Fritz2 und Fritz3 auf einer alten Maschine mit Mattaufgaben getestet. Das war unglaublich, eigentlich ist die Matt-Suche recht trivial, es gibt eine sehr einfache Bewertungsfunktion (Matt oder nicht Matt). Und trotzdem haben sie für komplizierte Mattaufgaben unterschiedliche Zeiten gebraucht. Das ging von Fritz 3 zu Fritz 1 fast schon ins Zehnfache der Zeit auf derselben Hardware. Das allein zeigt, dass permanente Optimierung durchaus was bringen.

Gruss
Sören

Geändert von SörenH (17.05.2010 um 23:39 Uhr) Grund: Zweiten Abschnitt eingefügt
Mit Zitat antworten
  #9  
Alt 18.05.2010, 02:09
Benutzerbild von spacious_mind
spacious_mind spacious_mind ist offline
Schachcomputer Koryphäe
 
Registriert seit: 29.06.2006
Ort: Alabama, USA
Land:
Beiträge: 1.927
Abgegebene Danke: 47
Erhielt 327 Danke für 197 Beiträge
Aktivitäten Langlebigkeit
0/20 18/20
Heute Beiträge
0/3 sssss1927
Re: Der "richtige" Weg in der Schachprogrammierung ?

Ich bin kein Techniker und ich habe es auch schwer mit das Deutsch daher werde ich nichts ueber das Technische wieso und was Schreiben.

Ich hatte mal in ein Englisches Forum diese gleiche Fragen gestellet die ich jetzt hier mal versuche auf Deutsch zu schreiben. Die reaktion war interessant und es gab auch ein paar aufregungen

In den 30/40 iger Jahren da hatte der Hollaender Adrian de Groot Turnier Schachspieler (Profies und Amateure) fuer 10 plus Jahre verfolgt in Ihre Turniere und sie danach Fragen gestellt ueber Ihre spiele.

Es kam raus das ein Schachspieler egal ob er Profi ist oder Amateur nur durchschnittlich 6 Tief rechnet. Der bessere spieler durch erfahrung und durch seiner Natur sieht aber die positionen besser und sieht die Zukunft besser. Er ist aber nicht klueger und er rechnet auch nicht tiefer.

Als das Bericht raus kam da wollten naturlich die Welt Ihn zeigen das er falsch ist mit sein Bericht und die Russen und Amerikaner haben dann aehnliche Tests gemacht und mit den gleichen ergebnissen. Daher wurde der Adrian de Groot nie wiedersprochen.

Jetzt kommt der David Levy an in den 70iger Jahren und meldet zu der Welt das kein Computer Ihn in 10 Jahren schlagen wird und macht eine Wette daraus. Was naturlich alle hersteller und progammierer herausfordert Ihn zu schlagen. Und so faengt dann das rennen an schneller und schneller zu werden und egal wie man gewinnt.

Jetz naturlich wollte der David Levy damit nur Schlagzeilen machen und ein bischen beruehmtheit bekommmen. Die folgen im Grunde genommen waren ja egal. Die Schlagzeile und Buecher zu verkaufen war das wichtigste

Und die Welt von Schachprogrammieren lauft fort in eine Richtung wo wir jetzt stehen. Computer gegen Menschen schach ist Tot. Fasst niemand spielt gegen die neuen programme ausser fuer Analyse und die Interesse ist am Sterben fuer die Masse.

Genau zu der Zeit als der David Levy die Welt aufgefordert hatte, wenn man da zurueckgehen koennte und der David Levy anstatt eine ausforderung gemacht haette zum Motto das "kein Schachcomputer der das Spiel wie ein Mensch spielt Ihn nicht schlagen kann" und dann das Werk von Adrian de Groot als basis genommen haette. Zum Beispiel zu sagen:

Der menschliche Computer darf nicht mehr als 6 Tief rechnen und darf selektiv nur zb 4 Stellungen bis auf 12-18 gehen (als Beispiel).

Dann wer weiss, vielleicht haetten wir heutzutage richtige interessante schachprogramme die noch gegen menschen spielen in turniere und weltmeisterschaften und in schachclubs und uns begeistern wuerden mit ihren schachlichen wissen und raffinierten klugheit

Ein anderer weg waere ja auch gewesen die obige aussage auf geschwingikeit um zu rechnen und zu sagen fuer veranstaltungen darf der computer nur maximal 50 MHz haben was dann vielleicht den gleichen Ziel erreicht

Die programmierer muessten sich dann doch mit das schachwissen beschaeftigen und vielleicht das programm lehrnfaehigkeiten beibringen usw. Da programmierer ueber die Jahren besser werden und der mensch auch, mit so einen Standart haette man heute 30 Jahre spaeter verdammt gute Computer gegen Menschen Turniere gehabt und Computer schach waere nicht am sterben sondern eine Weltweite begeistheit

Aber nein die ehrgeiz das Spiel mit aller gewalt zu erobern durch maximum geschwindigkeit kaempft fuer den Tot anstatt fuer das leben !

So dreht sich das leben

Viele gruesse

Nick

Geändert von spacious_mind (18.05.2010 um 02:24 Uhr)
Mit Zitat antworten
  #10  
Alt 18.05.2010, 13:27
Benutzerbild von Mythbuster
Mythbuster Mythbuster ist offline
Forengrinch
 
Registriert seit: 06.04.2008
Ort: UNESCO Welterbe
Land:
Beiträge: 6.906
Bilder: 257
Abgegebene Danke: 1.463
Erhielt 4.614 Danke für 1.522 Beiträge
Member Photo Albums
Aktivitäten Langlebigkeit
7/20 16/20
Heute Beiträge
0/3 sssss6906
AW: Der "richtige" Weg in der Schachprogrammierung ?

Hallo Uwe,
hier noch einmal die Stellung, die ich gestern ansprach. Leider bin ich zu blöde, ein Brett in den Thread zu bekommen:

Weiß: Kg2
Schwarz: Ka1, Th1, Sh2, Sh3

Weiß am Zug!

Viele Programme ziehen hier vor, die beiden Springer zu schlagen ... um dann gegen König und Turm zu verlieren ... ein Gegenbeispiel ist hier die V2, die sofort den Turm schlägt und 0,00 anzeigt.


Zum Thema des "Falschen Läufers" hier eine bekannte Studie:

Weiß: Kg1, Tf2, Lf3, g2, h2
Schwarz: Kg5, Ta7, Lf5

Schwarz am Zug!

Auch wenn man es nicht glaubt: Diese Stellung ist ganz klar Remis! Hier zeigen sich die klaren Vorteile von Programmen, die das entsprechende Wissen haben.

Nur so am Rande: Im Gegensatz zu Rybka 3, beherrschen zum Beispiel die V2 und der Kultcomputer Mephisto III das "Falsche Läufer" Spiel ... nun frage ich mal provokant in die Runde: Welche Programme sind besser und interessanter?

Grüße,
Sascha
__________________
This post may not be reproduced without prior written permission.
Copyright (c) 1967-2024. All rights reserved to make me feel special. :-)

Geändert von Chessguru (18.05.2010 um 19:03 Uhr) Grund: Diagramme eingefügt
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Du bist nicht berechtigt, neue Themen zu erstellen.
Du bist nicht berechtigt, auf Beiträge zu antworten.
Du bist nicht berechtigt, Anhänge hochzuladen.
Du bist nicht berechtigt, deine Beiträge zu bearbeiten.

BB code ist An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.

Gehe zu

Ähnliche Themen
Thema Erstellt von Forum Antworten Letzter Beitrag
Off Topic: Wiki-Beitrag "Die Geschichte der Firma Fidelity" von Alwin Gruber blaubaer News & Infos - Forum + Wiki 2 30.04.2010 12:09
Partie: "Mini-Fernschach" Partie Magellan - Genius 68030 Paisano lichess 5 23.11.2009 22:16


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:00 Uhr.



Powered by vBulletin (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
©Schachcomputer.info