Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / Python Schachengine „Sunfish“
- By Lothar Jung Date 2021-08-31 18:43 Upvotes 1
Nur 111 Zeilen lang. 2.000 Elo. Leicht erweiterbar. Sofort lauffähig mit dem Pythoninterpreter oder (schneller) JIT Py.py.

SourceCode und Erläuterungen im Unterforum Schachprogrammierung.

Lothar
- - By Lothar Jung Date 2021-08-31 19:36 Edited 2021-08-31 19:47
Hier ist der Link zur Python-Engine „Sunfish“ mit allen Infos:

https://forum.computerschach.de/cgi-bin/mwf/topic_show.pl?tid=12459

Also „ran an den Speck“!

Python ist kompakt und leistungsfähig.

Man muss sich das mal durch den Kopf gegen lassen. Eine Schachengine in nur 111 Zeilen. Für Interpreter und JIT.
2.000 Elo. Erweiterbar! Steigerungsfähig! Auf Vereinsniveau!

Einführungskurse in Python sind auch verlinkt.

Du kannst das!!!

Lothar
Parent - - By Kurt Utzinger Date 2021-08-31 19:48
Lothar Jung schrieb:


Einführungskurse in Python sind auch verlinkt.

Du kannst das!!!

Lothar

Lothar


Wer kann das?
Mfg Kurt
Parent - By Lothar Jung Date 2021-08-31 19:53 Edited 2021-08-31 20:14
Du kannst das, der Peter, Armin, Benno, Jörg, Frank, Ingo, Robert, Dieter, Chess Player, Lothar …..und einige Andere.

Vielleicht schaut auch Dietrich Kappe vorbei.

Weitere Python Schachengines findet ihr hier:

https://forum.computerschach.de/cgi-bin/mwf/topic_show.pl?tid=12272

Viele Grüße

Lothar
- - By Lothar Jung Date 2021-08-31 20:42 Edited 2021-08-31 20:55 Upvotes 1
Hier ist eine ausgezeichnete englischsprachige Beschreibung des Programms „Sunfish“:

http://www.itu.dk/people/thdy/papers/sunfish.pdf

Lothar
Parent - - By Lothar Jung Date 2021-09-01 08:48
Mein Python Schachprojekt hat zwei große Vorteile:

1. Man lernt dabei die leicht zugängliche moderne Programmiersprache Python kennen, die auch für die KI zentral ist.

2. Es wird keine IDE benötigt. Änderungen und Fehlersuche lassen sich bequem über den Interpreter oder einen Python-Editor, der die Python Syntax beherrscht, bewerkstelligen.

Lothar
Parent - - By Thorsten Czub Date 2021-09-01 10:00
Wie bekommt man das dingen denn nun ans laufen ?
Z.B. in einer schach GUI die UCI kann ?!
Parent - - By Lothar Jung Date 2021-09-01 11:53 Edited 2021-09-01 12:21
Hallo Thorsten,

Du mußt die aktuelle Windowsversion von Python herunterladen und installieren.

https://www.python.org/downloads/

Dann kannst Du den Pythoncode laden und ausführen.

Für die Verwendung in einer GUI muß der Pythoncode mit PyPy compiliert werden, um als UCI-Engine starten zu können.

Hier der Compiler für den Download:

https://www.pypy.org/

Viel Spaß

Lothar
Parent - - By Thorsten Czub Date 2021-09-01 16:57 Upvotes 1
Ich möchte eigentlich nur die engine in shredder oder arena laufen lassen.
Aber ich bekomme sie nicht installiert.
Arena z.b. sucht nur nach *.exe
Und shredder wo man z.b. auch .bat angeben kann sagt mir mit pypy -u uci.py immer das es keine uci engine ist.
Klar kann ich die engine auf Kommando ebene laufen lassen aber in einer software mit brett wo ich auch die level richtig einstellen kann ist das doch bequemer.
Parent - By Lothar Jung Date 2021-09-01 17:06 Edited 2021-09-01 17:44
Hallo Thorsten,

erst mal ein großes Lob für diesen wichtigen Schritt.

Jetzt geht es ums Compilieren unter PyPy, also ein ausführbares UCI- exe Programm zu erstellen.

Hast Du das Nachstehende beachtet?

Sunfish is self contained in the sunfish.py file from the repository. I recommend running it with pypy or pypy3 for optimal performance.

If you want a more "fancy" terminal experience, run fancy.py instead. (Note this requires the python-chess package.)

It is also possible to run Sunfish with a graphical interface, such as PyChess, Arena or your chess interface of choice. Sunfish' can communicate through the XBoard/CECP protocol by the command pypy -u xboard.py. Ruxy Sylwyka has a note on making it all work on Windows.

http://www.talkchess.com/forum3/viewtopic.php?t=51430

You can play sunfish now on Lichess (requires log in) or play against Recursing's Rust port, also on Lichess, which is about 100 ELO stronger.

Bin jetzt leider „im Abflug“ nach Frankreich.

In zwei Tagen bin ich wieder mit meinem Notebook einsatzbereit.

Viele Grüße

Lothar
Parent - - By Lothar Jung Date 2021-09-02 17:01
Hallo Thorsten,

bist Du schon weiter gekommen?

Grüße

Lothar
Parent - - By Thorsten Czub Date 2021-09-02 17:05
Nein gar nicht.
Das kompilieren erscheint mir sehr kompliziert. In meinem basic compiler ist das total easy.

Man klickt einfach mit der maus auf kompilieren und findet im vorher festgelegten ordner die exe.
Aber klar. Muss ja auch dinge geben die schwierig sind, sonst könnte sich das gute nicht vom schlechten separieren,
Parent - By Lothar Jung Date 2021-09-02 23:34
Soll ich den Entwickler kontaktieren, um uns zu helfen?
Parent - - By Jörg Oster Date 2021-09-02 17:42
Thorsten Czub schrieb:

Ich möchte eigentlich nur die engine in shredder oder arena laufen lassen.
Aber ich bekomme sie nicht installiert.
Arena z.b. sucht nur nach *.exe
Und shredder wo man z.b. auch .bat angeben kann sagt mir mit pypy -u uci.py immer das es keine uci engine ist.
Klar kann ich die engine auf Kommando ebene laufen lassen aber in einer software mit brett wo ich auch die level richtig einstellen kann ist das doch bequemer.


Was auch richtig ist, Sunfish kann kein UCI, sondern nur CECP (xboard).
Parent - - By Thorsten Czub Date 2021-09-02 18:57
Glaube ich nicht weil:

Zitat:
1.-download and install pypy3 (for the best performance) from here:
https://www.pypy.org/download.html
2.-open a .txt document
3.-rename it like Sunfish.txt
4.-write on this Sunfish.txt:
D:\pypy3.7-v7.3.3-win32\pypy3 -u uci.py
(maybe you have other location on your PC for pypy3)
5.-save and rename Sunfish.txt like Sunfish.bat
6.-put Sunfish.bat in sunfish-master installation folder on your PC
7.-install Sunfish.bat like UCI engine.

THAT'S ALL ! SUCCESS !


Quelle:
http://www.talkchess.com/forum3/viewtopic.php?f=2&t=51430&sid=6cedaf6cb30184d5a5f1e513ce5bcabe&start=50
Parent - - By Jörg Oster Date 2021-09-02 20:37 Upvotes 1
Hast ja recht!
Rudimentäres UCI wurde später noch hinzugefügt. Sorry.
Parent - By Jörg Oster Date 2021-09-03 12:03
Unter Linux erhalte ich jeweils doppelte Ausgaben,
Code:
uci
id name Sunfishid name Sunfish

id author Thomas Ahle & Contributorsid author Thomas Ahle & Contributors

uciokuciok

ucinewgame
isready
readyokreadyok

position startpos
go depth 12
info depth 1 score cp 84 time 1 nodes 25 pv d2d4info depth 1 score cp 84 time 1 nodes 25 pv d2d4

info depth 2 score cp 42 time 10 nodes 159 pv d2d4 e7e5info depth 2 score cp 42 time 10 nodes 159 pv d2d4 e7e5

info depth 3 score cp 80 time 20 nodes 318 pv d2d4info depth 3 score cp 80 time 20 nodes 318 pv d2d4

info depth 4 score cp 43 time 88 nodes 1358 pv d2d4 d7d5info depth 4 score cp 43 time 88 nodes 1358 pv d2d4 d7d5

bestmove d2d4 ponder d7d5bestmove d2d4 ponder d7d5

quit

was die Probleme beim Erstellen als UCI-Engine erklären könnte.
Parent - - By Thorsten Czub Date 2021-09-03 11:57 Edited 2021-09-03 12:00
Wenn es kein UCI kann wieso hat es ( sunfish) im Verzeichnis dann 2 dateien, eine namens UCI und eine namens xboard ?!
Parent - - By Lothar Jung Date 2021-09-03 12:09 Edited 2021-09-03 12:27
Es kann beschränktes UCI:

As it is now, Sunfish doesn't really support UCI. There is only some very preliminary code submitted by @ryanhs back in 2017.
One feature it doesn't support is mixing position fen and moves.
On the other hand, mixing position startpos and moves is actually supported, so it shouldn't be too hard to add this feature.

Öffne „Browse Code“
Dort befinden sich alle benötigten Files.

Der file „sunfish.py enthält den Hauptcode.
uci.py und xboard.py den Code für die Schnittstellen.
Diese müssen zusammen mit sunfish.py compiliert werden.
engines.json die Einstellungen für xboard. Für uci muß der json file entsprechend geändert werden.
Diese Files müssen alle in einem Verzeichnis stehen.

Ich würde auch mal fancy.py ausprobieren.

Lothar
Parent - - By Thorsten Czub Date 2021-09-03 12:37
Lothar Jung schrieb:

Es kann beschränktes UCI:

As it is now, Sunfish doesn't really support UCI. There is only some very preliminary code submitted by @ryanhs back in 2017.
One feature it doesn't support is mixing position fen and moves.
On the other hand, mixing position startpos and moves is actually supported, so it shouldn't be too hard to add this feature.

Öffne „Browse Code“
Dort befinden sich alle benötigten Files.

Der file „sunfish.py enthält den Hauptcode.
uci.py und xboard.py den Code für die Schnittstellen.
Diese müssen zusammen mit sunfish.py compiliert werden.
engines.json die Einstellungen für xboard. Für uci muß der json file entsprechend geändert werden.
Diese Files müssen alle in einem Verzeichnis stehen.

Ich würde auch mal fancy.py ausprobieren.

Lothar


Ich habe es jetzt unter arena als UCI engine laufen. Danke.
Das geht aber nur mit der manuellen Installation weil keine exe datei sondern batch datei.
Parent - - By Lothar Jung Date 2021-09-03 13:43
Hallo Thorsten,

danke schön. Du bist der Erste im Forum, bei dem das Unterforum „Schachprogrammierung“ Früchte trägt.
Herzlichen Glückwunsch! Ich freue mich mit Dir.

Wie spielt sich die Engine unter Arena?
Wieviel kN/sec erreicht sie.
Liegt sie auf mittlerem Vereinsniveau?
Sicher kann man mit einer guten allgemeinen Eröffnungsbibliothek und TB 6 etwas nachhelfen.

Grüße

Lothar
Parent - - By Thorsten Czub Date 2021-09-03 17:22
Das Programm zeigt bei mir unter arena rechentiefe und bewertung an. Auf Turnierstufe kommt es so in den 8.
Andere informationen werden mir nicht angezeigt. Kann sein das das unter anderen oberflächen anders ist.
Parent - - By Lothar Jung Date 2021-09-03 17:28 Edited 2021-09-03 17:30
Das sieht stark nach einem interpretierten Programm aus. Auch wegen dem .bat Fileformat.
Compiliert mit py.py müßte es tiefer rechnen.
Wurde eine py Runtime wegen JIT installiert?
Parent - - By Thorsten Czub Date 2021-09-03 17:32 Edited 2021-09-03 17:34
Keine Ahnung was du meinst aber es ist anzunehmen das es interpretiert wird. Da es mir nicht gelungen ist es zu compilieren.
Mir erschien das alles zu kompliziert. Ich kenne python nicht.

Ich benutze einen alten i3 laptop als plattform.
Parent - - By Lothar Jung Date 2021-09-03 17:38 Edited 2021-09-03 17:44
Mit Python hat das nichts zu tun.

Es gibt interpretierende  Sprachen (Basic), Runtime-Compiler Sprachen (Just-in-Time, JIT wie VB Basic und C#) oder compilierte Sprachen (wie C , C++).

py.py ist ein JIT-Compiler, als muß eine Runtime.exe mit installiert sein.

Der .bat Datei fehlt eine runtime.exe.
Parent - By Thorsten Czub Date 2021-09-03 18:28
Also es läuft ja, ob es nun interpretiert wird oder irgendeine exe es ablaufen lässt ist mir relativ egal.
Es läuft und spielt schach,

Wie gesagt ich habe das listing in pypy reingepackt und dann mit dem bat gestartet. Aus der oberfläche weil ich ja ein gut erkennbares brett möchte, und spielstufen sollen schliesslich auch über die GUI eingegeben werden.
Parent - By Lothar Jung Date 2021-09-01 13:05 Edited 2021-09-01 13:52
Wie Python lernen?

In 10 Meilensteine:

1. Installieren

2. Kommandozeile, Python als Taschenrechner

3. Algebra mit Variablen

4. Schleifen „for …“ while ….“

5. Entscheidungsanweisungen „if….else“

6. Input/Output, „input“ , „print“, Compilieren

7. Klassen „class“

8. Suchalgorithmus Mini/Max

9. Mengen, Arrays, Strings

10. Module

Wo: https://www.python-kurs.eu/python3_interaktiv.php

Lothar

PS: Es ist nie zu spät!
Up Topic Hauptforen / CSS-Forum / Python Schachengine „Sunfish“

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill