|
|
||||
![]() Ein Zwerg trumpft auf!
Was soll ich mehr sagen als dass der Schachzwerg den 2Robot (ca. 1500 Elo) in der ersten Partie besiegt hat. Der 2Robot hatte nie eine Chance; der Zwerg hat zwar nicht immer die besten Züge gespielt aber klar gewonnen. Der Zwerg spielte auf Level 5 und 2Robot auf E7. (also jeweils 30 sekunden pro Zug) Vielleicht war es ja ein Zufall ... aber der Einstand des Zwerges war auf jeden Fall sehr gut! [Event "Aktiv"] [Date "2009.08.09"] [Round "?"] [White "Schachzwerg"] [Black "2Robot"] [Result "1-0"] [ECO "B06"] [Annotator ",Helmut"] [PlyCount "153"] [TimeControl "30 sec/move"] {1024MB, Fritz11.ctg, AMD4850E} 1. d4 g6 2. e4 Bg7 3. Nc3 c6 4. Nf3 e6 5. Be2 Ne7 6. Bf4 O-O 7. O-O d5 8. a4 Re8 9. h4 dxe4 10. Nxe4 Nd5 11. Bg5 Qb6 12. Nd6 Rf8 13. Nxc8 Rxc8 14. c4 Nf6 15. Rb1 Ne4 16. c5 Qb4 17. Be3 Nd7 18. Ng5 Nxg5 19. hxg5 Rd8 20. Rc1 Qxb2 21. Rb1 Qa3 22. Qc2 b5 23. axb5 cxb5 24. Rb3 { ?? (Ta1 !)} Qa5 25. c6 Qc7 26. Qc3 Nb6 27. Rxb5 Nd5 28. Qc4 Rd6 29. Rc5 Rad8 30. Rd1 f5 31. Bf3 Qe7 32. c7 Rc8 33. Bxd5 exd5 34. Qc3 {?? (Txc5)} Qe4 35. Rb5 Re6 36. Rb7 f4 37. Rb8 Ree8 38. Rxc8 Rxc8 39. Bc1 Qe2 40. Rf1 Qg4 41. Qc5 Qxg5 42. Qxa7 Re8 {??} 43. Qb8 Qe7 44. c8=Q Rxc8 45. Qxc8+ Kf7 46. Qc6 Qd8 47. Bxf4 Bxd4 48. Qb7+ Ke6 49. Qxh7 Kf5 50. Be3 Bxe3 51. Qh3+ {?} Kf6 52. Qf3+ {?} Kg5 53. Qxe3+ Kf5 54. Qd3+ Kf6 55. Rd1 Ke5 56. Qe3+ Kf6 57. Qf4+ Ke6 58. Re1+ Kd7 59. Qf7+ Kd6 60. Qe6+ Kc5 61. Rc1+ Kb4 62. Rb1+ Kc4 63. Rc1+ Kb4 64. Rb1+ Kc4 65. Rc1+ Kb3 {??} 66. Qe3+ Ka4 67. Qd4+ Kb5 68. Qb2+ Ka6 69. Ra1+ {(Tb1!)} Qa5 70. Qe2+ Kb6 71. Qe6+ Kc7 72. Qe7+ Kb6 73. Qd6+ Kb7 74. Rb1+ Qb4 75. Rxb4+ Ka7 76. Qb6+ Ka8 77. Qa6# 1-0
__________________
Grüße ... Helmut ______________ Es gibt genau 10 Arten von Menschen. Die, die binär verstehen, und die, die es nicht verstehen. |
|
||||||||||||
AW: AVR-MAX Schachzwerg
Andererseits hat der 2Robot ja höchstwahrscheinlich im 65.Zug das Remis durch 3fache Stellungswiederholung verpasst (was du offensichtlich mit den "??" ausdrücken willst) Und wenn der Zwerg öfter auf diese Weise gewonnene Stellungen "verschenkt", wird ihn das sicher einige ELO kosten... Gruß, Robert |
|
||||
AW: AVR-MAX Schachzwerg
Andererseits hat der 2Robot ja höchstwahrscheinlich im 65.Zug das Remis durch 3fache Stellungswiederholung verpasst (was du offensichtlich mit den "??" ausdrücken willst) Und wenn der Zwerg öfter auf diese Weise gewonnene Stellungen "verschenkt", wird ihn das sicher einige ELO kosten...
Warum der Robot da kein Remis wollte ist mir ein Rätzel! Eine sehr große Schwäche des Zwergs ist sicherlich dass er die 3 Züge Remis Regel nicht kennt und alleine dadurch wird er viele gewonnene Partien nicht gewinnen! Nach den ersten Gehversuchen fällt mir aber als dringend nötige Verbesserung(en) folgendes ein: 1) Zurückname von zumindest 2 Halbzügen (wenn man sich vertippt hat man derzeit keine Chance das wieder gut zu machen) Stufe ich als relativ einfaches erstes Übungsbeispiel der Programmierung ein. 2) Stellungseingabe Müsste auch relativ einfach gehen, aber .... reicht der Speicher? 3) 3 Züge Remis: ist aber vermutlich aufwendig (bzw. kostet viel Speicher), oder?
__________________
Grüße ... Helmut ______________ Es gibt genau 10 Arten von Menschen. Die, die binär verstehen, und die, die es nicht verstehen. |
|
||||||||||||
AW: AVR-MAX Schachzwerg
Stimmt.
Warum der Robot da kein Remis wollte ist mir ein Rätzel! Eine sehr große Schwäche des Zwergs ist sicherlich dass er die 3 Züge Remis Regel nicht kennt und alleine dadurch wird er viele gewonnene Partien nicht gewinnen! Nach den ersten Gehversuchen fällt mir aber als dringend nötige Verbesserung(en) folgendes ein: 1) Zurückname von zumindest 2 Halbzügen (wenn man sich vertippt hat man derzeit keine Chance das wieder gut zu machen) Stufe ich als relativ einfaches erstes Übungsbeispiel der Programmierung ein. Zitieren:
2) Stellungseingabe Müsste auch relativ einfach gehen, aber .... reicht der Speicher? Zitieren:
3) 3 Züge Remis: ist aber vermutlich aufwendig (bzw. kostet viel Speicher), oder? ![]() Sorry für meine vielen Spekulationen - mit Schachprogrammierung hatte ich auch noch nix zu tun. Das wird sich hoffentlich bald ändern... ![]() Gruß, Willi |
|
||||
AW: AVR-MAX Schachzwerg
Vielleicht in der Form zu realisieren, dass man bei Bestätigung des eigenen Zuges zunächst die -noch- aktuelle Position kopiert und dann erst die Änderung in das Array schreiben lässt. Beim Aufruf der Rücknahme würde die Kopie zurückgeschrieben und beide Halbzüge wären zurückgenommen. Den Zugzähler muss man freilich auch noch zurücksetzen...Der sollte reichen!
![]() Und einen (internen) Zugzähler hat das gerät nicht .... glaube ich! Man schreibt doch "nur" eine kleine Routine, die jede Zelle des Brett-Arrays mit einem der jeweiligen Figur entsprechenden Wert überschreibt. Oder sehe ich da was falsch? Im Netz gibt es sicher Minimax-basierende Sourcen, die sich vom Ursprungsprogramm nur um genau diese kleine Erweiterung unterscheiden - da könnte man ggf. "abkupfern"...
Ich meine irgendwo (mag evtl. hinter einem Link von Ed Schröder's Prorammierseite gestanden sein) gelesen zu haben, dass dies in der Tat recht aufwändig ist. Aber auch da kann man auf bereits vorhandene Sourcen zurückgreifen - und wenn es nur dazu gut ist um zu sehen wie das funktioniert. Der Programmplatz sollte aber auch hierfür ausreichend sein. Mir stellt sich eher die Frage, inwiefern der Programmablauf durch eine solch' umfangreiche Prüfroutine ausgebremst wird - weil zu langsam wäre ja wieder kontraproduktiv...
![]() Zuerst bleibt für mich einmal die Software zu übersetzten (nur eine Kleinigkeit zu ändern z.Bsp einen Text) und erfolgreich auf den Zwerg zu bringen. Und alleine das ist für einen Newcomer nicht die einfachste Aufgabe! Besonders wo man ja auch anderes zu tun hat. Mal sehen! Als allererstes bekommt der Robot aber die Gelegenheit sich für den verlust zu revanchieren!
__________________
Grüße ... Helmut ______________ Es gibt genau 10 Arten von Menschen. Die, die binär verstehen, und die, die es nicht verstehen. Geändert von Helmut (10.08.2009 um 13:25 Uhr) |
|
||||||||||||
AW: AVR-MAX Schachzwerg
Apropos "Holzhammer": Mir wurde heute schon mal gesagt, ich wäre wohl für's eher Grobe zuständig - also in dem Sinne... ![]() ![]() Zitieren:
Und einen (internen) Zugzähler hat das gerät nicht .... glaube ich! Zitieren:
Theoretisch einfach ... aber das möglichst platzsparend zu programmieren ... ![]() Ich glaube jetzt aber nicht, dass das soooo speicheraufwändig würde - Versuch macht kluch... Zitieren:
Dies stell ich mir auch am Schwersten vor ... würde aber vermutlich einen sofortigen Spielstärkeschub bringen da dann das Gerät gewonnene Partien nicht mehr so leicht Remis geben kann! Zitieren:
Hast du auch einen Zwerg? ![]() Zitieren:
Zuerst bleibt für mich einmal die Software zu übersetzten (nur eine Kleinigkeit zu ändern z.Bsp einen Text) und erfolgreich auf den Zwerg zu bringen. Und alleine das ist für einen Newcomer nicht die einfachste Aufgabe! Besonders wo man ja auch anderes zu tun hat. Mal sehen! Zitieren:
Als allererstes bekommt der Robot aber die Gelegenheit sich für den verlust zu revanchieren! ![]() Gruß, Willi |
|
||||
AW: AVR-MAX Schachzwerg
Nach den ersten Gehversuchen fällt mir aber als dringend nötige Verbesserung(en) folgendes ein: 1) Zurückname von zumindest 2 Halbzügen (wenn man sich vertippt hat man derzeit keine Chance das wieder gut zu machen) Stufe ich als relativ einfaches erstes Übungsbeispiel der Programmierung ein. 2) Stellungseingabe Müsste auch relativ einfach gehen, aber .... reicht der Speicher? 3) 3 Züge Remis: ist aber vermutlich aufwendig (bzw. kostet viel Speicher), oder? ich habe inzwischen den Sourcecode auf der Orginalseite des Entwicklers weiter studiert und entdeckt dass die verwendete Version das eigentlich unterstützt. Auch Hash-Tables waren Teil dieser Micromax Version. Aus Speichergründen würde jedoch bei der Konvertierung für den Microcontroller (man hat ja nur 1 Kb; 32 byte werden je Suchtiefe verbraucht und der Rest grossteils für die Speicherung des Brettes) der Hash entfernt. Die dreimalige Stellungswiederholung fiel somit auch raus da der Hashtable dazu verwendet wurde. Sieht so aus als ob der Speicher das Hauptproblem unseres Controllers ist der viele Verbesserungen/Erweiterungen blockiert. Vielleicht gibt es pinkompatible Microcontroller mit mehr RAM !? Müsste man mal überprüfen. Ansonsten kann aus dem Zwerg schwer ein Riese werden. ![]()
__________________
Grüße ... Helmut ______________ Es gibt genau 10 Arten von Menschen. Die, die binär verstehen, und die, die es nicht verstehen. |
|
||||||||||||
AW: AVR-MAX Schachzwerg
![]() Auch ich habe mir heute die Sourcen angesehen und selbige Feststellung getroffen. Zitieren:
Auch Hash-Tables waren Teil dieser Micromax Version. Aus Speichergründen würde jedoch bei der Konvertierung für den Microcontroller (man hat ja nur 1 Kb; 32 byte werden je Suchtiefe verbraucht und der Rest grossteils für die Speicherung des Brettes) der Hash entfernt. Die dreimalige Stellungswiederholung fiel somit auch raus da der Hashtable dazu verwendet wurde.
Ich meine aber bei der Durchsicht der älteren Sourcen auch gesehen zu haben, dass die dreifache anfangs nicht über den Hash abgefangen wurde. Wenn ich mich da jetzt nicht vertue, kamen die Hashtables (wenn man das so nennen will) erst später hinzu. Ich müsste da noch einmal nachlesen - jetzt aber schmerzen erst mal die Augen... ![]() Zitieren:
Sieht so aus als ob der Speicher das Hauptproblem unseres Controllers ist der viele Verbesserungen/Erweiterungen blockiert.
Vielleicht gibt es pinkompatible Microcontroller mit mehr RAM !? Müsste man mal überprüfen. Ansonsten kann aus dem Zwerg schwer ein Riese werden. ![]() Unter Umständen ist es aber auch möglich, externen Speicher anzusprechen? Ich denke, der Controller verfügt angeblich über ach so viele Ports? Da sollte das doch auch irgendwie möglich sein? Gruß, Willi PS: Wenn ich ehrlich bin wäre mir ein 8-bit-Controller lieb, der neben 64k ROM auch selbiges an RAM bietet. Dann kann man bei Programmaufruf den ganzen Quatsch vom ROM ins RAM kopieren und gewinnt wieder was an Geschwindigkeit. Man könnte es dann so hinbiegen, dass nach verlassen der Bibi diese aus dem RAM gelöscht und der nun freie Speicher für Hashzwecke genutzt wird. ![]() Damit wäre eine externe Speichererweiterung vom Tisch, weil ein 8-bitter ohne Hilfsmittel sowieso nicht auf mehr als 64k zugreifen kann. |
|
|||||||||||
AW: AVR-MAX Schachzwerg
Der Atmega 644(40 pin) ist nicht pinkompatibel mit dem Atmega88p (28 pin).
Man könnte die freien IOs dazu mißbrauchen externen SRAM anzusteuern, die Zugriffe würden aber sehr langsam sein und damit wäre der Zwerg ziemlich schwach. Es gibt leider auch keine 8Bit Mikrocontroller mit 64 KB SRAM. Es gibt schöne Prototypen Boards mit 32 Bit Mikrocontroller(AT91SAM7S256) 256 KB Flash ROM und 64 KB RAM. Damit ließe sich etwas anfangen. Man muß zwar auch noch basteln um Tasten und 7 Segment LEDs anzuschließen, hätte dann aber eine Basis für Schachprogramm Experimente. Geändert von Dirk (12.08.2009 um 17:41 Uhr) |
![]() |
|
|