![]() |
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:
Also, wer was zu sagen hat, raus damit;) Grüße Uwe |
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. |
AW: Der "richtige" Weg in der Schachprogrammierung ?
Zitieren:
Zitieren:
Zitieren:
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. Zitieren:
Zitieren:
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. Zitieren:
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. Zitieren:
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 ... Zitieren:
Zitieren:
Zitieren:
Zitieren:
Zitieren:
Zitieren:
- 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. Zitieren:
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 |
AW: Der "richtige" Weg in der Schachprogrammierung ?
Zitieren:
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... Zitieren:
|
AW: Der "richtige" Weg in der Schachprogrammierung ?
Hallo Sascha,
danke für Deine ausführlichen und interessanten Ausführungen. Zitieren:
Zitieren:
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:o Zitieren:
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 |
AW: Der "richtige" Weg in der Schachprogrammierung ?
Zitieren:
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 |
AW: Der "richtige" Weg in der Schachprogrammierung ?
Zitieren:
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 |
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 |
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 |
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 |
AW: Der "richtige" Weg in der Schachprogrammierung ?
Hallo Alle,
Es sein schwere fragen, was ,wie ,warum etc Was wil ein programierer selbst von sein programm? Nur Starkte, order etwas anders ein programieren sodas das programm besser spielt aber nicht starker Durch neue versionen von alle programmierer denke sie was sie machen das beste ist fur sein programm,dann die grosse wo aus das programm kann sein Schachwisse braucht raum,wann sie das nicht haben,dann muss mann etwas fallen lassen,aber wass? Wie reagiert ein programm auf die mhz die ehr vorhanden hast? Immer schneller wolte nicht sagen das es programm die beste zuge spielt! Was breng mann in?,was sein die starke punkte das programm? was muss ich andern? wann ich ander, geht das nicht von die starke punkte ,die das programm jetz beherst? So alles ist nicht so einfach,auch Rykba hast schachwissen,ehr rechnet nur nicht tief,das wolte sagen ,es ist nicht so wie es tiefste rechnet gewinnt positionel ist Rykba sehr gut.stimmt das ehr immer noch problemen hast mit falsche laufers Aber wie viel partien auf WM order etwas habben wir gesiehen wobei das passierte? Erst was dar Schredder wobei, chessbase damals auch shredderbase gesagt werden,dann war dar Rykba 1,0 unt wie! Mann kann einfach nicht 1-2-3 sagen ,das Rykba schlecht ist,das hast ehr siehen lassen uber die jahre, ehr gewinnt alles,das ist nicht nur gluck unt auch nicht allein dum tief rechnen ist mein meinung Aber jeden soll hier ein idee order meinung uber mochen haben,kein problem Das macht es spass finden ich Ich hab auch nicht alle weisheit uber schachcomputers,unt wissen auch nicht alles,unt das wolte ich auch nicht;) Dann ist es spass um von andern zu lesen was sie wissen, unt dan bleibt mann hungry unt interesante threads zu machen. Mfg,Hans |
AW: Der "richtige" Weg in der Schachprogrammierung ?
Hallo Hans,
ich will Rybka nicht schlechter machen, als es ist. Es ist derzeit vermutlich die Engine mit der höchsten Elo Zahl. Und das, obwohl oder sogar weil es weniger Wissen als andere Programme hat! Rybka 2 kannte das "Falsche Läufer Spiel" sogar noch ... und auch andere Grundlagen. Der Programmierer hat sehr viel Wissen mit Absicht entfernt, um die Engine schneller zu machen ... wie man sieht, überwiegen letztendlich die Vorteile! So paradox es sich anhört, scheint man tatsächlich aktuell vor der Wahl zu stehen: Möchte ich ein "intelligentes Programm mit viel Wissen (nach menschlichem Maßstab) oder möchte ich ein möglichst effizientes Werkzeug, welches die maximale Leistung aus der Optimierung der reinen Suche und Suchgeschwindigkeit erzielt ... auch auf Kosten von Attraktivität des Stils. Gruß, Sascha |
AW: Der "richtige" Weg in der Schachprogrammierung ?
Zitieren:
sehr schöne Stellungen um Wissen eines Programms zu testen. Ich habe diese mal meiner Lieblingsengine Hiarcs 12 sowie Shredder12 vorgesetzt. Man wird nicht enttäuscht, denn schon in dem 1. Variante findet diese die richtige Lösung. Es sind also nicht alle modernen Programme dumm ;) Gruß Guido |
Re: AW: Der "richtige" Weg in der Schachprogrammierung ?
Zitieren:
Zitieren:
Hallo Sascha, In meiner Alternatieven Welt haette heute man den Rybka geflucht als ein schummler und be... sch...ummler... und wuerde nie mitspielen duerfen in Turniere. (Seine angegebenen 6 ply waeren ja naturlich 9 ply in der realitaet) :) (scherz) gruss Nick |
AW: Der "richtige" Weg in der Schachprogrammierung ?
Zitieren:
|
AW: Der "richtige" Weg in der Schachprogrammierung ?
Zitieren:
Wobei ich bei dieser Stellung vermute, daß hier eine fest programmierte "Regel" greift, was das vorhandene Material betrifft, also ähnlich einer Stellung KS - K oder KL - K, bei der von vielen Computern sofort ungenügend Material reklamiert wird (hab ich eben mal mit dem Novag Primo ausprobiert), also vielleicht kein "reines" Schachwissen. Ebenfalls aus genanntem Thread eine Stellung von Christian, die mir auch sehr gut gefällt.
Zitieren:
Gruß Uwe |
AW: Der "richtige" Weg in der Schachprogrammierung ?
Zitieren:
Gruß, Sascha |
AW: Der "richtige" Weg in der Schachprogrammierung ?
Mein Schredder hat bei beiden Beispielen, innerhalb einer Sekunde Remis!
Bzw. in der Mitte Kc2! Gruß Karl-Heinz |
AW: Re: Der "richtige" Weg in der Schachprogrammierung ?
Hallo Nick,
Zitieren:
Zitieren:
Zitieren:
Zitieren:
*Eine riesige Datenbank = Gedächtnis beim menschlichen Spieler *Lernfähigkeit = Fehler nicht wiederholen *Stellungsmuster erkennen = ohne Berechnung bestimmte Stellungen beurteilen können Ob das jemals möglich sein wird ? Vielleicht kommt es ja irgendwann mal wieder zu einer Situation, wo schnellere Hardware nichts mehr bringt und die Programmierer sich wieder mehr mit der Entwicklung von "intelligenterer" Software beschäftigen müssen, um Fortschritte zu machen ? Zitieren:
ein schöner Gedanke, der aber (leider) durch finanzielle Interessen zunichte gemacht wird. Zitieren:
Grüße Uwe |
AW: Re: Der "richtige" Weg in der Schachprogrammierung ?
Hallo zusammen,
bevor ich damit anfange, meinen eigenen Senf zu dem Thema abzugeben, möchte ich gleich zu Beginn betonen, daß ich ein wirklich ein Fan der menschlich spielenden, selektiven, intelligenten Programme bin. Allerdings frage ich mich auch des Öfteren, ob diese Vorliebe nicht reine Romantik ist. Wie toll wäre es, einen wirklich intelligenten Computer im Sinne von Künstlicher Intelligenz zu schaffen! Andererseits ist das Schach eigentlich kein Problem, zu dessen Lösung man Intelligenz braucht. Theoretisch geht es ja nur um Variantenbäume. Wer die alle stumpfsinnig ohne Stellungsbewertung bis zum Matt durchrechnet, spielt perfekt. Die Endspieldatenbanken zeigen es - sie sind durch simples Ausprobieren aller Möglichkeiten entstanden. Es gibt für jede Stellung nur drei mögliche Bewertungen: Gewonnen, remis, verloren. So einfach ist das. So etwas wie "Intelligenz" brauchen wir also nur deshalb, weil wir die Grundstellung (noch?) nicht bis zum Matt ausanalysieren können. Insofern stellt sie eigentlich nur einen Notbehelf dar, und eine erschöpfende Berechnung wäre mathematisch in jedem Fall vorzuziehen - bitte vergeßt nicht, daß es das Ziel des Spiels ist, mattzusetzen, ergo möglichst starke Züge zu machen - in keiner Schachregel steht etwas von Ästhetik oder so. Wie gesagt, ist der Gedanke, unser menschliches Denken in der Maschine nachzuahmen, sehr reizvoll. Aber daß man für eine optimale Maschine die Methoden der Natur manchmal abwandeln muß, kann man z.B. in der Luftfahrt sehen: Ursprünglich vom Vogelflug inspiriert, haben sich doch völlig unterschiedliche Antriebssysteme als optimal (für eine Maschine) herausgestellt - jedenfalls habe ich noch kein Flugzeug gesehen, das mit den Flügeln schlägt. Vielleicht ist es im Computerschach ja genauso. Insofern verdammt die schnellen dummen Programme bitte nicht zu sehr - sie gehen einfach den im Sinne der Problemlösung vielversprechendsten Weg. Rechentiefe bringt Spielstärke - die Endspieldatenbanken haben die größte Rechentiefe und spielen perfekt... Viele Grüße, Dirk |
AW: Re: Der "richtige" Weg in der Schachprogrammierung ?
Zitieren:
|
AW: Re: Der "richtige" Weg in der Schachprogrammierung ?
[QUOTE=Supergrobi;30823]Hallo zusammen,
bevor ich damit anfange, meinen eigenen Senf zu dem Thema abzugeben, möchte ich gleich zu Beginn betonen, daß ich ein wirklich ein Fan der menschlich spielenden, selektiven, intelligenten Programme bin. Allerdings frage ich mich auch des Öfteren, ob diese Vorliebe nicht reine Romantik ist. Wie toll wäre es, einen wirklich intelligenten Computer im Sinne von Künstlicher Intelligenz zu schaffen! Andererseits ist das Schach eigentlich kein Problem, zu dessen Lösung man Intelligenz braucht. Theoretisch geht es ja nur um Variantenbäume. Wer die alle stumpfsinnig ohne Stellungsbewertung bis zum Matt durchrechnet, spielt perfekt. Die Endspieldatenbanken zeigen es - sie sind durch simples Ausprobieren aller Möglichkeiten entstanden. Es gibt für jede Stellung nur drei mögliche Bewertungen: Gewonnen, remis, verloren. So einfach ist das. So einfach ist das eben nicht. Die Varianten, die zu untersuchen sind, geben noch keine Auskunft über den Sieg oder Verlust. Die Bewertung ist das Problem. Die Bewertung einer Stellung wird mit einer Zahl beschrieben. Leider gibt es keine allgemeine Formel um zu dieser Zahl zu kommen. Wird diese Zahl falsch bestimmt, gibt es vielleicht ein Remis, wenn behaupt. Paul |
AW: Re: Der "richtige" Weg in der Schachprogrammierung ?
Zitieren:
ich gehe davon aus, wie in einer Endspieldatenbank alls Varianten bis zum Ende zu rechnen. Der Ausgang einer Partie ist immer Sieg für Weiß, Sieg für Schwarz oder Remis. Dazwischen gibt es nichts. Insofern orientiert sich auch der absolute wert einer beliebigen Position an diesen drei Werten. Das Problem ist nur, daß wir in den meisten Positionen (noch?) nicht so weit rechnen können, dann müssen wir irgendwas bewerten, was nicht Matt oder remis ist. Aber das liegt eher an unseren begrenzten Möglichkeiten als am Charakter des Spiels. Viele Grüße, Dirk |
AW: Re: Der "richtige" Weg in der Schachprogrammierung ?
Hallo Hartmut,
Zitieren:
Und warum sollte man sich denn unbedingt eine schwächere Engine zulegen wollen? Für mich sind die heutigen Engines sowieso nur noch Analyse-Instrumente; und dafür ist die Spielstärke nunmal entscheidend. Selbst auf einem relativ schwachbrüstigen Netbook sind moderne Engines gut geeignet, die Fehler unserer Schachcomputer (oder auch unsere eigenen) recht sicher aufzudecken. Ich würde mal davon ausgehen, dass die wenigsten Engine-Anwender wirklich selber dagegen spielen, sondern ebenfalls hauptsächlich damit analysieren... viele Grüße, Robert |
AW: Re: Der "richtige" Weg in der Schachprogrammierung ?
Hallo,
Zitieren:
Gruß, Michael |
Alle Zeitangaben in WEZ +2. Es ist jetzt 01:56 Uhr. |
Powered by vBulletin (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
©Schachcomputer.info