Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi KI (https://www.delphipraxis.net/142148-ki.html)

Seamann 22. Okt 2009 20:43


KI
 
Hallo an alle,

ich halte in unserem Informatikkurs ein Referat über künstliche Intelligenz.
Ist ja ein sehr interessantes Thema, aber doch arg theorielastig.

Jetzt wollt ich fragen, ob es die Möglichkeit gibt eine "kleine" KI (muss nicht viel können, nur um ein bisschen zu zeigen wie das in der Praxis aussehen kann) zu programmieren.
Hab schon gedacht vl was in richtung Tic Tac Toe gegen den Computer.
Das ganze soll das Referat nur ein bisschen "aufpeppen" und als Hinführung dienen. Ich erwart gar nicht dass ich da eine mords KI hinbekomme (weiß ja nicht was für ein Ausmaß sowas animmt)
Allerdings fehlt mir noch der Ansatz, um über das Programmieren nachzudenken (Wie genau funktioniert eine KI, vl ja sogar ein Beispiel ;-)).

Kennt jemand Lektüre wo man sich ein bisschen mehr in das Thema einlesen kann (im optimal Fall sogar gleich für Delphi) oder vl hat ja auch jemand hier eigene Erfahrungen die mir weiterhelfen könnten.

Torpedo 22. Okt 2009 20:49

Re: KI
 
Das könnte dich interessieren:
http://de.wikipedia.org/wiki/Neuronales_Netz

Zu dem Thema gibt es auch hier in der DP einiges (auch Beispielprojekte)

Codewalker 22. Okt 2009 21:56

Re: KI
 
Es gibt recht gute Beispiele für TicTacToe-KIs. Man kann auch eine "einfache" KI dafür über einen endlichen Automaten realisieren (Stichworte: DFA, endlicher deterministischer Automat). Wikipedia ist da zwar formal korrekt, aber für den Einstieg undankbar. Manche Unis bieten auch von Vorlesungen Videos (z.B. RWTH Aachen, http://videoag.fsmpi.rwth-aachen.de/?course=09ss-fosap . Leider scheinbar nicht alle öffentlich verfügbar).

fkerber 22. Okt 2009 21:59

Re: KI
 
Hi!

KI ist ja nun ein äußerst weites Feld - in welche Richtung willst du denn konkret gehen?


Grüße, Frederic

mleyen 22. Okt 2009 22:05

Re: KI
 
Man sollte sich ersteinmal fragen, wie man "künstliche Intelligenz" definiert.

Dabei kann man z.B. von fest definierten Aufgaben ausgehen, oder auch von 'lernenden' Fähigkeiten.
Z.B. das Neuronale Netz: Hier wird ein undefinierter Ausgangspunkt mehr und mehr beschrieben, bzw es wird gelernt, wie es etwas handzuhaben ist.

Andererseits sprechen viele von KI bei z.B. einem (wie in deinem Beispiel) TicTacToe-Bot.
Dieser Bot kann so programmiert werden, dass er genau ausrechnen kann, wo er hinklicken muss um am wahrscheinlichsten zu gewinnen, bzw. um nicht verlieren zu können.

Ich behaupte mal das es reicht, die 'fest definierte'-KI zu beschreiben.
Diese würde sich in deinem Fall für jedes freie Feld eine Priorität errechnen, wie sinnvoll es wäre dort das X zu setzen.
Der Bot entscheidet sich dann später für das Feld mit der höchsten Priorität.

Seamann 22. Okt 2009 22:15

Re: KI
 
@Torpedo: naja, neuronales Netz wird doch eher was für den theoretischen teil sein.

@codewalker: super, werd ich mich morgen gleich mal in der richtung umschaun.

@fkerber: kommt drauf an was du meinst. theoretisch werd ich halt auf technik, momentaner stand, möglichkeiten, usw eingehen (bin erst am informieren...hab noch nix zusammengeschrieben, da das referat ja erst im dez oder so fällig ist). praktisch bin ich offen für alles. es sollte halt für mich (und meinen klassenkameraden) verständlich sein.
Im grunde will ich einfach auch ein bisschen was praktisches zeigen, weil nur 30 min gelaber über theorie is doch bissel langweilig (sowohl zu halten, als auch zum zuhören :-D)
Das mit dem tic tac Toe war nur ma son Gehirnfurz von mir, weil ich das halt grad programmiert habe. Also wenn du andere Ideen hast woran man eine Ki vorführen könnte...gerne ;-)

@mleyen:
Zitat:

Diese würde sich in deinem Fall für jedes freie Feld eine Priorität errechnen, wie sinnvoll es wäre dort das X zu setzen.
Der Bot entscheidet sich dann später für das Feld mit der höchsten Priorität.
wie erechne ich wie sinnvoll es ist in ein feld zu setzen? spontan würde ich da mit IF´s vorgehen, aber da muss es doch noch eine andere alternative geben, oder?

fkerber 22. Okt 2009 22:23

Re: KI
 
Hi!

Erstmal noch: Herzlich willkommen in der DP ;)


Ich denke, du hast meine Frage noch nicht ganz verstanden:
Das Problem ist (in meinen Augen): es gibt nicht "KI" als Thema, sondern KI ist ein Überbegriff der imho zu groß gewählt ist, um darüber ein sinnvolles Referat halten zu können. Du solltest dich daher meiner Meinung nach auf ein Gebiet der KI beschränken, um darüber dann ein ein spezielleres aber auch fundierteres Referat halten zu können. Als Anregung mal ein paar Themen, die man unter dem Begriff KI zusammenfassen kann: Bilderkennung, Bewegungserkennung in bewegten Bildern, Plangenerierung, neuronale Netze, Robotik, Baysian Networks, Vererbungsnetze, Graphensuche, Reason-Maintenance-Systeme...


Grüße, Frederic

mleyen 22. Okt 2009 22:34

Re: KI
 
Zitat:

Zitat von Seamann
wie erechne ich wie sinnvoll es ist in ein feld zu setzen?

Das kann man auf verschiedenste Weisen angehen.
Ich habs damals in einem ähnlichem Fall wiefolgt gemacht:

Zuvor habe ich jegliche Aktion, auf die der Bot später prüfen soll, im voraus definiert.
Dabei habe ich jeglicher Aktion einen Prioritätsfaktor zugewiesen.
ZB "sterb ich im nächsten Zug, wenn ich in diesem Feld setze?" Falls ja, dann setzte Priorität = Minimum , oder "Wieviele Möglichkeiten zu gewinnen hab ich noch, nachdem ich in diesem Feld gesetzt habe?" Bei 3 setze Priorität+30 | etc etc...)

So hangel ich mich durch alle Möglichen Aktionen und Einflussfaktoren des Spiels durch.

Das beste aber an der Geschichte ist:
Ich kann dem Bot eine dynamisch starke K.I. einstellen.
Wie?
Bei zB einem perfektem Bot nimmt der immer das Feld mit der höchsten Priorität.
Bei einer mittelstarken KI, lässt der Bot zufällig eines der Felder zu, welches 17% weniger Priorität hat als das maximale Feld.

Das war jetzt wirklich nur ein ganz grober Aufbau meiner damaligen Vorgehensweise, und ich hoffe jetzt nicht den Thread in ein anderes Thema zu ziehen.

Btw: Herzlich willkommen in der DP. :dp:

fkerber 22. Okt 2009 22:55

Re: KI
 
Hi!

Ein allgemeines Vorgehen wäre, sich eine Bewertungsfunktion zu überlegen, die in etwa folgendes macht:
Für eine gegebene Spielfeldsituation wird eine Zahl errechnet - je besser die Situation für einen selbst ist, desto größer ist die Zahl. Für das TicTacToe-Spiel kannst du dann jeweils die drei Felder, die beim nächsten Zug entstehen könnten, bewerten lassen und das mit der besten Bewertung nehmen.

Eine mögliche Bewertungsfunktion wäre z.B. die Anzahl Spalten + Anzahl Zeilen + Anzahl Diagonalen, in denen X noch gewinnen kann (die also nur X und frei enthalten) - (Anzahl Spalten + Anzahl Zeilen + Anzahl Diagonalen, in denen O noch gewinnen kann (die also nur O und frei enthalten)) - unter der Annahme, dass du selbst X bist.



Grüße, Frederic

DP-Maintenance 23. Okt 2009 03:21

DP-Maintenance
 
Dieses Thema wurde von "Luckie" von "Sonstige Fragen zu Delphi" nach "Programmieren allgemein" verschoben.
hat nichts mit Delphi direkt zu tun.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz