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.
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? 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, Nö, das ist kalter Kaffee, das war Stoff für die Jugendillustrierten meiner Flegeljahre: http://kc85-museum.de/diverses/verschiedene/schachcomputer/sc2/jugendtechnik/seite1.jpg http://kc85-museum.de/diverses/verschiedene/schachcomputer/sc2/jugendtechnik/seite2.jpg http://kc85-museum.de/diverses/verschiedene/schachcomputer/sc2/jugendtechnik/seite3.jpg Früher als wir Schachprogramme auf 8bit Rechnern wie Z80 in Assembler geschrieben haben, mag das noch Ansrpuchsvoll gewesenen sein, aber heute ist jede Drohnensteuerung anspruchsvoller da unter Echtzeitbedingungen.
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.
Hier ein paar gute Ansätze, zum Nachdenken, Ausprobieren, Coden https://qz.com/502325/an-ai-computer-learned-how-to-beat-almost-anyone-at-chess-in-72-hours/ https://medium.freecodecamp.org/simple-chess-ai-step-by-step-1d55a9266977 So etwas wäre für mich ein heisses Thema :-) Kann man super in einer Bachelorarbeit untersuchen, such mal bei deiner Uni / Lehrstühlen nach Forschung in verwandten Gebieten und knüpfe dort an. Professoren sind begeistert über etwas Eigeninitiative.
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...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.