Hallo.
Ich bin zwar noch nicht ganz so weit, aber in nicht allzu ferner Zukunft
muss ich ja mal meine Bachelorarbeit schreiben. Ich studiere Informatik
an einer TU und hab mir so meine Gedanken gemacht, wie das ganze
ablaufen wird. Ich beschäftige mich privat gerade damit, eine
Schachengine in C (Programmiersprache) zu programmieren und diese zu
optimieren. Dabei wird eine Menge an Code und Algorithmen anfallen. Eine
Schachengine ist nebenbei bemerkt ein Programm, dass Schach spielen kann
und die "besten" Züge analysiert & findet, in der Regel dabei sogar
stärker ist als jeder menschliche Großmeister.
Jetzt kam bei mir die Frage auf, ob ich das einfach später als meine
Bachelorarbeit verpacken kann. Ist es möglich, dass man bei der
Bachelorarbeit einfach sein eigenes Thema auswählt? Es gibt ja schon
sehr viele Schachengines (Stockfish, Fritz, Crafty, Komodo etc.), ich
erfinde das Rad nicht neu. Allerdings ist es schon relativ
fortgeschritten so etwas zu programmieren und die ganzen Konzepte
dahinter anzuwenden, zudem habe ich irgendwo vernommen, dass man bei der
Bachelorarbeit nichts "neues" erfinden muss. Reicht sowas aus? Wäre
natürlich ziemlich geil, wenn ich jetzt schon die "Vorarbeit" für meine
Bachelorarbeit fertig machen würde.
Danke für jede Hilfe!
Es schrieb:> Eine> Schachengine ist nebenbei bemerkt ein Programm, dass Schach spielen kann> und die "besten" Züge analysiert & findet,
...ach nee, wirklich?
Es schrieb:> in der Regel dabei sogar> stärker ist als jeder menschliche Großmeister.
...ok, wusste ich nicht, dass es da so viele gibt, die besser als (ich
;-) und) GMs sind ;-)
Es schrieb:> Ist es möglich, dass man bei der> Bachelorarbeit einfach sein eigenes Thema auswählt?
was sagt dein Prof dazu?
Es schrieb:> Allerdings ist es schon relativ> fortgeschritten so etwas zu programmieren und die ganzen Konzepte> dahinter anzuwenden,
...meinst du! Schon mal richtig(!) Schach (auch gegen eine "Maschine")
gespielt?
Es schrieb:> Reicht sowas aus?
wenn man denn "umsonst" seinen Abschluss (Bachelore ist einer, ist mir
neu...;-)...) machen will...
Es schrieb:> Reicht sowas aus?
...dann sollte der Prof schon sehr dement sein!
...kannst du überhaupt Schach spielen? Wahrscheinlich nicht,. denn sonst
würdest du nicht solch bekl...p...t... Fragen stellen!
Bachelorarbeiten bei MINT Fächer sollen meist Hilfen sein um aktuelle
Forschung oder Entwicklung voranzutreiben.
Die Wahrscheinlichkeit, dass du jemanden findest, der etwas, was du
zuhause aus Spaß für dich gemacht hast, als Bachelorarbeit durchwinkt,
halte ich für sehr gering.
Es schrieb:> Reicht sowas aus?
Das ist natürlich eine Frage an Deinen Prof, die Dir hier auch keiner
beantworten kann.
Abseits der reinen Spielstärke gibt's aber schon deutliche Unterschiede.
Schau Dir mal den Sourcecode von Gull an und dann von Demolito - beide
in C, beide von der Spielstärke her ganz gut, aber bei einem studierten
Informatiker wüßte ich, bei welchem von beiden ich Respekt hätte und wem
ich das um die Ohren hauen würde.
@50c
Danke für deinen debilen Beitrag.
@Gerald M.
Huh? Seit wann das denn? Die Bachelorarbeiten, die ich jetzt so gesehen
habe, bestehen nur aus Recherche und wiedergeben dessen, was man in
anderen Quellen gelesen hat. Hab sogar irgendeine gefunden, in der
jemand einen Film angeschaut und anschließend analysiert hat. Dafür gab
es dann den Bachelor, aber ist auch kein MINT, klar. Trotzdem, ist das
ziemlich aussagekräftig dafür, was diese Arbeit doch eigentlich ist. Von
Forschung voranbringen kann man bei der Bachelor-Thesis doch wirklich
nicht sprechen?! Man kann sich im Internet diverse Arbeiten
herunterladen und sich selbst davon überzeugen.
Höhr nicht auf die Dummschwätzer. Das Theme der Bachelorarbeit ist egal.
Auf das Anwenden deiner wissenschaftlichen Kompetenz kommt es an. Ohne
dich ausbremsen zu wollen, bist du die sicher, dass du dazu in der Lage
bist? Namenhafte Unternehmen haben für solche "Späße" Mio. von Dollar
ausgegeben, bis sie eine "brauchbare" Lösung hatten.
Du musst Dir überlegen, was Deine Schachengine von anderen
unterscheidet, dass sie für einen Lehrstuhl interessant sein könnte.
Verwendest Du z.B. einen besonderen Algorithmus oder Datenstruktur,
der/die bisher noch nicht in Schachengines verwendet wird? Dann könnte
das inkl. Vergleich mit bestehenden Lösungen für einen
Algorithmen-Lehrstuhl interessant sein.
Benutzt Du ein neues Entscheidungsmodell, das die menschliche Psyche und
Denkfehler mit einbezieht, dann könnte es für Spieltheorie- oder
Psychologie-Lehrstühle interessant sein.
Nutzt Du eine besondere Programmiersprache, Compiler, ungewöhnliche
Zielhardware oder besondere Software-Engineering-Methoden, dann könnte
es bei Lehrstühlen, die sich mit diesen Themen beschäftigen, reinpassen.
Eine 08/15-Schachengine, die das gleiche wie alle anderen kann, nur in
schlechter und langsamer, wird dagegen wenig Anklang finden.
Wobei diese Kiste, bzw. deren Programm mehrere heftige Programmfehler
hat.
Wenn du sie beseitigen kannst und dann damit ein GM Niveau ereichsts,
dann hat es was. Wenn nicht, dann lass es sein.
Lass dich von den Trollhasen hier nicht zu sehr runterziehen.
Das Thema einer Bachelorarbeit ist völlig egal. Und die, die ihre
Bachelorarbeit in irgendeinem Institut als Handlanger irgendeines Profs
schreiben der zu beschäftigt/faul für die Recherche seiner eigenen
Forschung ist, können einem oft Leid tun.
Das Einzige was zählt ist, einen Prof zu finden, der bereit ist deine
Arbeit zu betreuen und zu bewerten. Zumindest an meiner Hochschule muß
das nichtmal ein Prof aus dem eigenen Studiengang sein.
Such dir einen Prof, dem akademische Blendgranaten möglichst egal sind
(das sind auch meist die, die fachlich viel drauf haben), frag ob er
Zeit und Lust hat deine BA zu betreuen und gut ist. Es gibt Profs denen
macht es Freude zu sehen, wenn ihre Studenten mit Herzblut an ihr Thema
gehen. Es interessiert keine Sau, von wem das Thema vorgegeben wird.
Außer jenen, die billige Arbeitskräfte suchen damit sie den Ruhm dieser
Jenen in die Welt hinaustragen.
Und solche BAs machen weder zu Schreiben noch zu Lesen wirklich Freude,
sodass der Wert der BA fragwürdig wird...
Es schrieb:> Ist es möglich, dass man bei der> Bachelorarbeit einfach sein eigenes Thema auswählt?
Frag deinen Supervisor. Ich habe mir ein eigenes Thema gesucht das ich
für eine Firma behandle, Supervisor war damit happy. Natürlich musst du
Rücksprache halten da dein Supervisor das ganze benotet und dir sagen
muss ob und wie du das Thema behandeln musst.
> ich> erfinde das Rad nicht neu.
Das muss kein Hals und Beinbruch sein, ich mach eine
Markübersucht/Produktentwicklung.
> Reicht sowas aus?
Frag deinen Supervisor. Du musst hald einen strikten top down approach
verwenden. Und es wäre ratsam das Projekt vorher nirgends anderst zu
veröffentlichen.
Wenn du krampfhaft ein hässliches Baby zu deiner Bachelorarbeit umformen
willst wirst du und dein Supervisor vermutlich nicht happy am Ende.
Es schrieb:> Jetzt kam bei mir die Frage auf, ob ich das einfach später als meine> Bachelorarbeit verpacken kann.
Jein, es darf keiner Wissen, daß sie schon vorher fertig war. Aber
Kenntnisse von vorher darf man natürlich einbringen.
> Ist es möglich, dass man bei der> Bachelorarbeit einfach sein eigenes Thema auswählt?
Ja. Bloss ob dein Prof/Betreuer gerade Schach als Thema akzeptiert,
weisst du noch nicht.
> Es gibt ja schon> sehr viele Schachengines (Stockfish, Fritz, Crafty, Komodo etc.), ich> erfinde das Rad nicht neu. Allerdings ist es schon relativ> fortgeschritten so etwas zu programmieren und die ganzen Konzepte> dahinter anzuwenden, zudem habe ich irgendwo vernommen, dass man bei der> Bachelorarbeit nichts "neues" erfinden muss.
Richtig. Bachelor ist die Ausbildung zum aktuellen Stand der Technik.
Darüberhinausgehende Forschung erlernt man erst im Master.
Warum nicht? Du musst halt einen Prof finden, der mitmacht. Für eine
Bachelor Arbeit wäre das schon ok. ABER:
1) Entscheidend für die Note wäre nicht (oder nur im geringeren Maße)
die erreichte Spielstärke, sondern vor allem der saubere, innere Aufbau
und die ordentliche Dokumentation (Literaturrecherche, vergleichen der
möglichen Algorithmen, Implementation usw.)
2) Ich würde einen objektorientierten Ansatz verlangen, also C++ oder
C#/Mono, oder evtl. auch Rust/nim, swift usw.
2⁵ schrieb:> 2) Ich würde einen objektorientierten Ansatz verlangen
Was macht OOP denn in besonderem Maße geeignet? OOP nur verwenden um OOP
willen hat man im Hype der 90er mal gemacht.
Xx schrieb:> Oop abzulehnen kann nur von einem nicht-itler kommen...
Oder von einem, der sich um effiziente Echtzeit-Programmierung bemüht
und OOP diesbezüglich auf den Prüfstand stellt.
Mich würde mal daher mal interessieren, ob bspw. eine Coptersteuerung
besser in C++ oder C programmierbar ist. Schachengine ist diesbezüglich
ein schlechter Benchmark, weil die Aufgabenstellung weder nach Echtzeit
verlangt noch die Ressourcen beschränkt sind. Dann gewöhnt sich der
Student noch an resourcenverschleudernd zu programmieren, weil er noch
nicht in der Lage ist den "Preis" für "akademisch saubere" Software
einzuschätzen.
Die Bachelorarbeit ist DAS Zeugnis, das Du beim Einstellungsgespräch
mitbringst. Ob Du mit 10 in Latein ne 1 hattest spielt keine Rolle.
Und Du machst den Bachelor ja nicht zum Spaß, sondern als Einstieg in
die Berufswelt.
Ja, also der Ansatz mit C Schach-Algorithmen nachzubilden, reicht wohl
nicht mehr heutzutage. Da gibt es ja schon zuhauf Varianten.
In der heutigen Zeit wäre es in einer Bachelor-Arbeit doch viel
interessanter ein "lernendes Modell" zu untersuchen. Also AI Algorithmen
angewandt im Bereich eines Schachspiels.
Daraus würde sich für mich z.B. eine interessante Problemstellung
ergeben:
Schlägt ein herkömmlicher Algorithmus oder ein Schachprogramm auf z.B.
Stufe ELO x1 ein AI Programm, also Modell, das von einem prof.
Schachspieler auf ähnlicher Stufe ELO x1 trainiert wurde. Lass x1 z.B.
2000, das ist schon ein gutes Niveau. Nehme an, dass Du nicht auf der
Stufe spielst, deswegen bräuchtest du eine Person, die dir hilft. Oder
du kannst das Experiment auf deiner Stufe (=?) machen.
Danach, könntest du hypothetisch beide Modelle gegeneinander antreten
lassen (in welcher Form auch immer CPU vs. CPU). Nach vielen Spielen
könntest du dir die Statistik berechnen, z.B. um eine Signifikanz zu
ermitteln.
Du könntest z.B. theoretische Grundansätze, Machbarkeit, fundierte
Erkenntnisse usw. in einer Bachelorarbeit ermitteln und dann in der
Masterarbeit das ganze ausbauen...
Das wäre schon eher was z.B. ein Thema, was auch mich interessieren
würde, und vielleicht viele andere. Da gab es ja das Spin off, das
Google gekauft hatte, denke es heisst wohl DeepMind, wo ein realer
Spieler gegen einen AI - Gegner antrat.
Ich habe letztens auf youtube einen Evolutions-Simulator gesehen.
Vielleicht könntest du damit etwas machen. Dieser Typ hat eine bestimmte
Art von beweglichem Objekt mit einer recht übersichtlichen Software
simuliert - da gibt es aber noch viel mehr das man simulieren könnte.
Xx schrieb:> Oop abzulehnen kann nur von einem nicht-itler kommen...
Umgedreht wird ein Schluß draus: OOP als einzig angebrachtes Paradigma
zu sehen kann nur von Java-Geschädigten kommen, die dann auch nicht in
der Lage sind, die Paradigmenwahl sachlich zu begründen, sondern direkt
zu ad hominem greifen.
Stockfish beispielsweise gibt's in C++ (wobei da aber nicht wahllos mit
C++-Features herumgesaut wird, nur weil sie existieren und cool sind)
und als C-Port, der übrigens etwas schneller ist, aber nicht viel. Und
als Assemblerport, der deutlich schneller ist als beide.
Was es hingegen so gut wie gar nicht gibt, sind Engines in funktionalen
Sprachen, und wenn, dann eher als Spielzeug-Engines. Das kommt daher,
daß "state is evil" zu sehr viel Kopiererei führt, was die Performance
in den Keller zieht.
Kurioserweise gibt's auch kaum etwas in Lisp, obwohl Lisp erstens im
ersten KI-Zyklus prominent war und Schach damals als das Paradebeispiel
der ganzen Disziplin galt.
Insofern wäre bei einer Bachelor-Arbeit auch interessant, welches
Paradigma sich aus welchen Gründen überhaupt eignet oder auch nicht.
Ohne weitere Begründung "muß OOP sein" ist da schon ziemlich flach.
C. A. Rotwang schrieb:> Schachengine ist diesbezüglich> ein schlechter Benchmark, weil die Aufgabenstellung weder nach Echtzeit> verlangt noch die Ressourcen beschränkt sind.
Die Ressourcen sind immer beschränkt, denn wenn man zwei Engines hat,
die exakt dasselbe machen, aber die eine bekommt das in der halben Zeit
hin, dann ist letztere Engine stärker und wird bei statistisch gesehen
ausreichend langen Matches mit Sicherheit gewinnen.
Deswegen gibt es ja einen Assemblerport von Stockfish.
> Dann gewöhnt sich der> Student noch an resourcenverschleudernd zu programmieren, weil er noch> nicht in der Lage ist den "Preis" für "akademisch saubere" Software> einzuschätzen.
Wobei ich da nicht zwingend einen Konflikt sehe. Wie Knuth es schon
populär gemacht hat: "premature optimization is the root of all evil."
Im Wesentlichen, weil man bei sauber geschriebener Software wesentlich
leichter Optimierungen auf algorithmischer Ebene vornehmen kann, die vom
Gewinn her deutlich über den Mikro-Optimierungen liegen.
Auch ein noch so genial zusammengehackter Bubblesort wird bei größeren
Datenmengen immer einem akademisch geschriebenen Heapsort unterlegen
sein.
Es schrieb:> Danke für jede Hilfe!
Mach ne vergleichende Arbeit verschiedener Engines und deren
Kernkonzepte,
das reicht oft für ne Bachelorarbeit. Wenn es nicht reicht spinne ein
paar eigene Konzepte zusammen, und wenn es nur ein verbessertes
Protokoll ist mit dem sie mit der Aussenwelt kommunizieren oder nen
Schachserver zur Einbindung verschiedener Engines, ...
Rein an eine Engine würde ich mich nicht wagen wenn ich da nicht schon
nebenher schon was gemacht hätte, Verbesserungen sind nur schwer messbar
oder mit viel Aufwand oder du hast nen völligen anderen Ansatz den man
mal anhand eines Prototypen untersuchen will.
Klomann schrieb:> und wenn es nur ein verbessertes> Protokoll ist mit dem sie mit der Aussenwelt kommunizieren
Das wäre so ziemlich das Letzte, was sinnvoll wäre, denn die Hauptstärke
eines Protokolls ist seine Verbreitung, weil man das dann leicht in jede
GUI einbinden kann. Mit einem neuen Proptokoll müßte man dann auch noch
eine GUI oder Testumgebung selber programmieren, und das alles ohne
jeden Nutzen.
Es gibt zwei Protokolle, Winboard und UCI, und letzteres hat sich auf
breiter Front durchgesetzt.
Winboard wird (abgesehen von Crafty, aus historischen Gründen) nur noch
von Anfängern eingesetzt, aus dem einzigen Grund, weil die Engine
während des Rechnens keine Kommandos verarbeiten können muß, so daß man
das ohne Threading realisieren kann.
> oder nen Schachserver zur Einbindung verschiedener Engines,
Gibt's seit Ewigkeiten.
Nop schrieb:> Umgedreht wird ein Schluß draus: OOP als einzig angebrachtes Paradigma> zu sehen kann nur von Java-Geschädigten kommen, die dann auch nicht in> der Lage sind, die Paradigmenwahl sachlich zu begründen, sondern direkt> zu ad hominem greifen.>> Stockfish beispielsweise gibt's in C++ (wobei da aber nicht wahllos mit> C++-Features herumgesaut wird, nur weil sie existieren und cool sind)> und als C-Port, der übrigens etwas schneller ist, aber nicht viel. Und> als Assemblerport, der deutlich schneller ist als beide.>> Was es hingegen so gut wie gar nicht gibt, sind Engines in funktionalen> Sprachen, und wenn, dann eher als Spielzeug-Engines. Das kommt daher,> daß "state is evil" zu sehr viel Kopiererei führt, was die Performance> in den Keller zieht.>> Kurioserweise gibt's auch kaum etwas in Lisp, obwohl Lisp erstens im> ersten KI-Zyklus prominent war und Schach damals als das Paradebeispiel> der ganzen Disziplin galt.
Prust, wenn man nicht informiert ist...
Gerade in Lisp gibt es eine sehr saubere Schach-Implementation,
Bachelorarbeitswürdig:
http://www.iqool.de/Chennai---Ein-Schachprogramm-in-Common-Lisp.html
Nop schrieb:> Was macht OOP denn in besonderem Maße geeignet? OOP nur verwenden um OOP> willen hat man im Hype der 90er mal gemacht.
Ich denke, eine Schach Engine kann man sehr gut in C programmieren. OOP
würde ich verlangen, da es eine Abschlussarbeit eines Informatikers ist.
Gerade ein Informatiker sollte in seiner Abschlussarbeit zeigen, dass er
OOD kann, zumal es keine Arbeit bei einer Firma ist. IMHO geht es bei
einer Abschlussarbeit ohne externen Bezug nicht primär ums Ergebnis,
sondern wie das Ergebnis erreicht wurde. Grad bei einem Thema wie z.B.
eine Schach-Engine, bei der nicht mehr an Hochschulen geforscht wird,
wird man mehr Augenmerk auf die Umsetzung legen. Würde das Thema jetzt
auf eine konkrete Umsetzung auf einen µC erweitert werden, dann könnte
man IMHO wieder über plain C reden.
Aber eine Engine auf einem PC, da sollte ja auch ein bisschen GUI dabei
sein. Will man dann wirklich eine Informatiker das in C programmieren
lassen? Ich sage ja nicht, dass dies nicht geht, habe ich vor 30 Jahren
ja selbst gemacht. Aber ein frisch Ausgebildeter sollte hier in OOD
bewandert sein und dies auch in seiner Abschlussarbeit zeigen sollen!
Was anderes ist es, wenn man die Arbeit extern erfolgt oder wenn intern
davon profitiert wird, z.B. bei hausinternen Tools, Online-Systemen oder
Lernumgebungen. All das sehe ich hier nicht.
Nop schrieb:> Insofern wäre bei einer Bachelor-Arbeit auch interessant, welches> Paradigma sich aus welchen Gründen überhaupt eignet oder auch nicht.> Ohne weitere Begründung "muß OOP sein" ist da schon ziemlich flach.
Dies wäre natürlich noch mehr einer Abschlussarbeit würdig, da dies ja
fast impliziert, Engines in verschiedenen Paradigmen aufzubauen und dann
zu vergleichen. Eine Plain-C Engine ohne diese Diskussion wäre aber für
einen Informatiker (IMHO) noch flacher...
Michael B. schrieb:> Prust, wenn man nicht informiert ist...
Ja, so wie Du.
> Gerade in Lisp gibt es eine sehr saubere Schach-Implementation
Das ist eine Spielzeug-Engine, die dermaßen schwach spielt, daß sie in
der CCRL nichtmal auftaucht. Es reicht gerade mal für einen Negamax.
Genau das ist aber typisch für LISP-Engines, daß sie rudimentär
implementiert und dann aufgegeben werden.
2⁵ schrieb:> Ich denke, eine Schach Engine kann man sehr gut in C programmieren. OOP> würde ich verlangen, da es eine Abschlussarbeit eines Informatikers ist.
OOP hat seine Stärken da, wo man tatsächlich Objekte hat, und das sind
wenig überraschend GUIs und Simulationen, aus letzterem kam OOP ja mal
her. Wenn man jetzt in anderen Bereichen OOP nur um seiner selbst willen
verlangt, dann ist das absehbare Ergebnis, daß die eigentlichen Stärken
nicht ausgenutzt werden, weil sie in dem Kontext eben nicht vorhanden
sind.
Beispielsweise ist GUI-Programmierung in reinem C möglich, habe ich auch
schon gemacht, aber den Horror will man sich einfach nicht antun.
Man kann natürlich bei einer Schach-Engine z.B. ein Springer-Objekt
haben, aber dann verflacht OOP zu syntaktischem Zucker, weil die Objekte
quasi-statisch sind. Daraus wäre meine Schlußfolgerung, wenn schon OOP
gefordert wird, dann als Arbeit lieber eine Simulation von irgendwas zu
machen, denn GUIs sind ja heute auch schon langweilig.
> Würde das Thema jetzt> auf eine konkrete Umsetzung auf einen µC erweitert werden, dann könnte> man IMHO wieder über plain C reden.
Wäre sogar eine Option, wenn man die Ein/Ausgabe einfach über SIO macht
und sich damit die ganze Oberfläche spart. Interessant wäre auch ein
Netzwerk von mehreren Controllern, die z.B. über CAN gekoppelt sind, und
wo dann die Engine auf mehreren Knoten verteilt läuft. Da hat man dann
auch schon Aspekte von Systemdesign dabei. Aber vielleicht Overkill für
eine Bachelor-Arbeit.
> Aber eine Engine auf einem PC, da sollte ja auch ein bisschen GUI dabei> sein. Will man dann wirklich eine Informatiker das in C programmieren> lassen?
GUI-Programmierung wäre (auch mit OOP) ein wenig so, als würde man einen
Maschbauer daran messen, ob er eine Feile richtigherum halten kann.
Zur Programmiersprache:
Es wäre kein Problem, die Engine von C in C++ umzuschreiben, sobald ich
fertig bin.Schneller/Stärker wird sie dadurch allerdings nicht.
Stockfish wird in C++ höchstwahrscheinlich entwickelt, weil C++ sich
sehr gut eignet, wenn man in einem großen Team arbeitet. Und Stockfish
hat nun einmal über 100 Devs, die ständig Änderungen einführen. Für ein
1-Mann-Team ist dieses Argument allerdings hinfällig.
Zur Spielstärke von meiner Engine:
Bei meiner Engine peile ich eine Spielstärke von ca. 3000 Elo an. Der
beste menschliche Spieler (Magnus Carlsen liegt momentan bei 2826). Das
liegt über dem Niveau von diesen alten Schachcomputern, die C. A.
Rotwang da in seinem Beitrag anspricht.
Zum Aufbau des Codes:
Natürlich werde ich peinlich genau darauf achten, dass ich sauber
arbeite. Jeder Abschnitt wird kommentiert werden, alles wird schön in
separate Dateien aufgeteilt, wie das auch bei dem Code von Demolitio
(von Nop angesprochen) der Fall ist. So eine einzige Datei, in der
tausende Zeilen an Code unkommentiert untereinander geklatscht worden
sind wie bei Gull, wird hier nicht passieren. Aber ich glaube das ist
auch selbstverständlich.
Zur Einzigartigkeit meiner Engine:
Ja, also ich hätte erst einmal geplant verschiedene Methoden zur
Stellungsbewertung aus anderen Engines zu kombinieren. Natürlich ist das
kein neuer großer Wurf. Wie gesagt, ich dachte, dass man bei der
Bachelorarbeit sowieso nichts neues erfinden muss. Die Frage ist
natürlich, ob ich einen Betreuer von dieser Idee überzeugen kann.
Ansonsten schaue ich mir auch mal diese AI-Engines an. Es gab da auch
mal ein Beispiel. Matthew Lai hat für seine Master-Thesis die
Schachengine "Giraffe" entwickelt, die auf diesem AI-Prinzip basiert.
Gegen sich selbst spielen und dabei an Spielstärke gewinnen. Dieser
Matthew Lai wurde danach sofort bei Deep Mind (Google) angestellt, die
Alpha Go entwickelt haben. ;)
Ob ich jetzt in meiner Bachelorarbeit das Gleiche leisten soll/muss, wie
in dieser "prominenten" Masterarbeit, ist natürlich fragwürdig.
2⁵ schrieb:> Dies wäre natürlich noch mehr einer Abschlussarbeit würdig, da dies ja> fast impliziert, Engines in verschiedenen Paradigmen aufzubauen und dann> zu vergleichen.
Dann wäre auch eine Spielzeug-Engine wieder eine Option, denn solange
man dasselbe prozedural, objektorientiert und funktional aufbaut, muß es
ja nicht stark spielen, um vergleichbar zu sein (also in punkto
Performance und auch Entwicklungszeit). Als Informatiker sollte man ja
auch mit funktionalen Sprachen etwas anfangen können, auch wenn eine
Schach-Engine da keine sonderlich dankbare Anwendung ist.
Ja, ich kann auch in Haskell (funktionale Programmiersprache)
programmieren. Allerdings werde ich in Haskell ganz sicher keine
Schach-Engine schreiben. ;)
Es schrieb:> Ja, also ich hätte erst einmal geplant verschiedene Methoden zur> Stellungsbewertung aus anderen Engines zu kombinieren. Natürlich ist das> kein neuer großer Wurf. Wie gesagt, ich dachte, dass man bei der> Bachelorarbeit sowieso nichts neues erfinden muss. Die Frage ist> natürlich, ob ich einen Betreuer von dieser Idee überzeugen kann.
Nein, dadurch erfindest du nix neues, aber einfach so den Code anderer
open source engines zu kopieren und zu vergleichen ist keine
Eigenleistung und damit nicht Bachelor würdig.
Es schrieb:> Bei meiner Engine peile ich eine Spielstärke von ca. 3000 Elo an.
Soso, du willst also innerhalb von 6 Monaten eine Schach engine von Null
auf aufbauen, und gleich mal eine Elo von 3000 zu erreichen. Troll doch
weiter...
Es schrieb:> Zur Spielstärke von meiner Engine:>> Bei meiner Engine peile ich eine Spielstärke von ca. 3000 Elo an. Der> beste menschliche Spieler (Magnus Carlsen liegt momentan bei 2826). Das> liegt über dem Niveau von diesen alten Schachcomputern, die C. A.> Rotwang da in seinem Beitrag anspricht.
Naja die wahre Spielstärke von Schach Engines hängt weniger von der
Programmierung als von der Hardware ab. Ein tolles Schach-System zeugt
weniger von der intellektuellen als von der finanzielle Potenz des
Entwicklers. Die besseren Entwickler kitzeln auch aus limitierter
Hardware das selbe wie pedantisch-saubere Programmierer aus ihren
OOP-Boliden.
Von den Schach- engines finde ich perönlich einzig Deep Blue als
Referenz für eine Studentenarbeit tauglich, weil es sich hierbei um
Soft- und Hardwareentwicklung handelt.
https://de.wikipedia.org/wiki/Deep_Blue.
Also eine "Engine" aka Maschine im wahrsten Wortsinne, nicht nur einen
Algorithmus ohne Schweiss den als effizioente Implementierung zu
realisieren.
"Programmieren" kann auch Manfred aus Mannheim - der programmiert jeden
Tag - seinen Videorecorder.
C. A. Rotwang schrieb:>> Zur Spielstärke von meiner Engine:>>>> Bei meiner Engine peile ich eine Spielstärke von ca. 3000 Elo an. Der>> beste menschliche Spieler (Magnus Carlsen liegt momentan bei 2826). Das>> liegt über dem Niveau von diesen alten Schachcomputern, die C. A.>> Rotwang da in seinem Beitrag anspricht.
Lass dir dazu was sagen: Deine Engine wird eher bei 2500 sein, als bei
3000. Es sei denn, du steckst viel, viel mehr Zeit hinein, als für eine
Bachelorarbeit angemessen ist. Ausserdem solltest du selber > 2000 Elo
spielen, oder mit einem guten Spieler zusammen arbeiten, sonst kapierst
du gar nicht, warum dein Programm gegen eine 1.99$ HandyApp ständig
verliert.
Ich spiele bei ca. 2200 Elo, und war schon 1993 bei der MikroWM in
München dabei, darf also durchaus behaupten, eine gewisse Ahnung zu
haben.
Nicht umsonst wirft man Stockfish und ein paar anderen Engines vor,
Plagiate zu sein...
Schachengine - gähn. Das reisst nun niemanden vom Hocker. Dazu bist du
20 Jahre zu spaet.
Es gibt Millionen spannenderer Aufgabenstellungen wie eine Schach
Engine.
Eine solche Arbeit sollte neu, spannend, interessant und fuer Zuschauer
packend sein.
Schachmatt schrieb:> Nicht umsonst wirft man Stockfish und ein paar anderen Engines vor,> Plagiate zu sein...
Dann nenn mal bitte die Fakten, warum Stockfish ein Plagiat sein soll.
Troll alarm.....
Elo 3000 schon klar...
Dann auch noch selbst implementiert als Bachelor Arbeit. Wo du 9 Wochen
oder so Zeit hast?
Konzept erstellen vielleicht... Fertig implementieren niemals.
Und nein. Software Entwicklung ist NICHT, dass man einfach direkt
losimplementiert.
Es schrieb:> Jetzt kam bei mir die Frage auf, ob ich das einfach später als meine> Bachelorarbeit verpacken kann. Ist es möglich, dass man bei der> Bachelorarbeit einfach sein eigenes Thema auswählt?
Nein. Haha. Jetzt was haben und später als BA verkaufen?
das ist unterschleif und würde zu 5.0 - nicht bestanden führen.
glaub nicht, dass wir Betreuer so blöd sind und das nicht kapieren.
Warum sollte ich überhaupt dieses Thema erlauben? Was hab ich davon
außer dem Aufwand zur Betreuung?
Sprich doch bitte erst mal mit einem oder deinem Prof bevor du grosse
luftschlösser baust...
Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
Groß- und Kleinschreibung verwenden
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang