Programmierte "Intelligenz"

fadade

BIOS-Overclocker(in)
Einen (sehr frühen) guten Morgen :D

hat sich mit dem Thema (guggst du Titel) schonmal jemand näher beschäftigt oder kennt gute Lektüre (PDF, Buch) dazu?
Weil ich finde das Thema sehr spannend, aber es ist natürlich auch sehr komplex. Deshalb frage ich mich ob man sowas als Mittel-Anfänger-Noob-Abiturient in gaaaaaannnnzzzz kleinem Maße evtl. auch programmieren kann :ugly::huh:

Anwendung wäre ja z.B. in der Computerlinguistik, aber das was ich mir da irgendwann mal zu überlegt habe, war eigentlich keine Intelligenz xD
-> Benutzer gibt einen Text ein
-> Programm schaut nach, was man dazu ausgeben kann
-> dann gibt es irgendeine der möglichen antworten aus
-> wenn keine mögliche Antwort existiert, ist das Programm intelligent und lernt vom User eine mögliche Antwort oder so ...

Aber im nachhinein fand ich das total BANANE^^
Mit Audio-Umsetzung gibt es sowas auch schon, jedenfalls hab ich das mal bei utube gesehen.

Also wie gesagt: "hat sich mit dem Thema (guggst du Titel) schonmal jemand näher beschäftigt oder kennt gute Lektüre (PDF, Buch) dazu?"
 
Ich hab mich mit KI noch kaum beschäftigt und kann dir deswegen nicht viel dazu sagen, aber das was du beschreibst ist ziemlich einfach umzusetzen.
Du brauchst nur ne Datenbank und durchsuchst sie dann einfach nach der Eingabe des Benutzers und wählst dann zufällig eine der möglichen Antworten aus.
Falls es keine möglichen Antworten gibt oder der Suchbegriff auch gar nicht in der Datenbank ist, dann fragst du den Benutzer einfach ob er denn eine Antwort oder den Suchbegriff hinzufügen will und speicherst das dann. Hat also eigentlich nichts mit Intelligenz zu tun, sondern nur mit der logischen Denkweise des Programmierers. Wenn man das so sieht gibt es eigentlich keine künstliche Intelligenz, denn es muss ja immer vorher festgelegt werden, was mit dem Input gemacht wird. Das einzige was du machen kannst ist dynamisch Möglichkeiten hinzufügen, was eben die Illusion des "künstlichen Lernens" hervorruft. Mit Audio ist es eigentlich ähnlich. Dort werden eben die gesprochenen Samples mit denen aus der Datenbank auf Ähnlichkeit verglichen.

lg Kok
 
jo, "Lernprozess" durch interaktion mit bestehender Intelligenz ... hmmm.....

Ich habe jetzt auch etwas gefuden, wo auf einem High-End-Rechner tausende kleine Programme liefen, die miteinander kommunizierten. Und so hat der /haben die Programmierer irgendwie eine gaaanz kleine "Intelligenz" geschaffen.
Aber bis ich so weit bin, vergehen wohl noch einige Lebensabschnitte :ugly:
 
Ich würd erstmal klein anfangen... Soll heißen mit so dingen wie Algorythmen, die den kürzesten Weg von A nach B suchen... da gibts unter anderem den A* (A-Star)-Algorythmus, den Bellemann-Ford und den Djikstra-Algorythmus... Danach musst du dann selber gucken für was du was basteln willst! Deine Idee ausm Startpost würde ich mal umsetzten, ist fürn Anfang garnicht so verkehrt, immer klein anfangen xD
Ansonsten gibt es da nicht wirklich viel... Kannst ja gucken ob du Infos über KI's aus Spielen bekommst, evtl. sogar vom Hersteller! Wenn das der Fall wäre, wäre das natürlich affengeil! :D Muss ja nicht gleich der komplette Quellcode sein, sondern mehr so ein "Wenn das, dann das"-Diagramm^^
 
KI aus Spielen zu bekommen,wäre natürlich echt nice, daran wäre auch ich interessiert. Obwohlich bezweifel, dass irgendein Hersteller das herausgeben wird. Außer Crytek vllt. weil die ihre Engine für lau rausgeben.
Sonst is KI auch sehr interessant generell. ich hab mich mal daran versucht "schwarmintelligenz" zu programmieren. D.h. eine große Anzahl von kleinen Einheiten, die alles nur aus ihrer Sicht warnehmen und dieser Schwarm soll dann bestimmte Aufgaben lösen. Also damals bin ich noch an der Darstellung verzweifelt... aber jetzt könnte ich eigentlich mal wieder einen Versuch wagen.
Anregungen für Aufgaben eines Schwarms: Erstmal sowas wie Fischschwarm: einfach mal schwimmen, vor einem hai ausweichen (und freuen und beobachten, wie sich der schwarm verhällt). Oder etwas, was platt gesagt Roboter machen könnten: Waldlöschroboter, die im Wald patrollieren, Brände melden, und löschen und sowas alles.

Irre interessant.


PS: andere frage... warum wird in diesem Thread fast nur mitten in der Nacht gepostet? -.-
 
Ich würd erstmal klein anfangen... Soll heißen mit so dingen wie Algorythmen, die den kürzesten Weg von A nach B suchen... da gibts unter anderem den A* (A-Star)-Algorythmus, den Bellemann-Ford und den Djikstra-Algorythmus... Danach musst du dann selber gucken für was du was basteln willst! Deine Idee ausm Startpost würde ich mal umsetzten, ist fürn Anfang garnicht so verkehrt, immer klein anfangen xD
Ansonsten gibt es da nicht wirklich viel... Kannst ja gucken ob du Infos über KI's aus Spielen bekommst, evtl. sogar vom Hersteller! Wenn das der Fall wäre, wäre das natürlich affengeil! :D Muss ja nicht gleich der komplette Quellcode sein, sondern mehr so ein "Wenn das, dann das"-Diagramm^^

Jo, also mit Algorithmen beschäftige ich mich schon indirekt. Häufig fällt mir irgendetwas (mehr oder weniger sinnloses^^) ein und das Versuche ich mit einem Programm darzustellen/lösen zu lassen .....
Und da komm ich sehr häufig auf Algorithmen, die da unter deinen crazy-names bekannt sind :D
Ne KI für ein Spiel wäre natürlich erstmal eine idee. Denke ich versuchs mal mit 4-Gewinnt und danach mit anderen spielen, die hier bei uns so im Regal stehen xD



KI aus Spielen zu bekommen,wäre natürlich echt nice, daran wäre auch ich interessiert. Obwohlich bezweifel, dass irgendein Hersteller das herausgeben wird. Außer Crytek vllt. weil die ihre Engine für lau rausgeben.
Sonst is KI auch sehr interessant generell. ich hab mich mal daran versucht "schwarmintelligenz" zu programmieren. D.h. eine große Anzahl von kleinen Einheiten, die alles nur aus ihrer Sicht warnehmen und dieser Schwarm soll dann bestimmte Aufgaben lösen. Also damals bin ich noch an der Darstellung verzweifelt... aber jetzt könnte ich eigentlich mal wieder einen Versuch wagen.

:huh:
Da kann ich mir ja jetzt nicht mal ansatzweise einen Ansatz ausdenken :D
..... mehrere Progs oder mehrere Threads in einem Prog? und dann einfach ... einer (irgendein Schwarmmitglied) setz die Variable Feuer oder Hai auf true und gibt ungefähr die Koordinaten durch ... tjo und die in der gegend ..... ineragieren eben dementsprechend ^^


PS: andere frage... warum wird in diesem Thread fast nur mitten in der Nacht gepostet? -.-

Da sowas nicht Jugendfrei ist. Stell dir ma vor, meine kleine Schwester programmiert mal eben eine Intelligenz, die uns Menschen anfängt zu kontrollieren :P :ugly:
Außerdem: aus meiner Sicht ist es jetzt 2 Uhr morgens. Und Folglich geh ich jetzt auchmal schlafen :lol:
cu^^
 
:huh:
Da kann ich mir ja jetzt nicht mal ansatzweise einen Ansatz ausdenken :D
..... mehrere Progs oder mehrere Threads in einem Prog? und dann einfach ... einer (irgendein Schwarmmitglied) setz die Variable Feuer oder Hai auf true und gibt ungefähr die Koordinaten durch ... tjo und die in der gegend ..... ineragieren eben dementsprechend ^^
Da sowas nicht Jugendfrei ist. Stell dir ma vor, meine kleine Schwester programmiert mal eben eine Intelligenz, die uns Menschen anfängt zu kontrollieren :P :ugly:
Außerdem: aus meiner Sicht ist es jetzt 2 Uhr morgens. Und Folglich geh ich jetzt auchmal schlafen :lol:
cu^^

Ja mehrer Threads. Und du musst versuchen ein Verhalten hinzukriegen, welches dem der echten Lebewesen recht nahe kommt... Und dann kannst du wie gesagt schon besagte Probleme lösen. Und mit Schwarm wesen lassen sich sehr interessante Probleme, interessant lösen! Mir fällt nur nix ein...

Ich hoffe mal, dass du deine kleine Schwester ins Bett geschickt hast, weil ich schon so früh antworte ... Aber heute nach ca. 1/2 der Facharbeit bin ich schon jez ziemlich kaputt :D
Morgen kommt mehr ;)

mfg
Lukas
 
Den Schwarm selbst in Threads zu unterteilen macht kaum Sinn, denn 1. wird der Overhead für den Thread Sprung auf der CPU viel zu groß für die relativ kleine Last, die ein Schwarmmitglied erzeugt. Die maximale Performance erreicht man wenn die Thread anzahl der logischen Kernanzahl entspricht. Alles darüber ist nur unnötiger Overhead und bremst aus.
2. Wären extrem viele Critical Sections o.ä. nötig um den Schwarm mit mehreren Threads zu berechnen. Ein Thread kann ja nicht einfach auf die Daten eines Schwarmmitglieds zugreifen. Was passiert wenn das im diesem Moment mehrere Threads gleichzeitig tun? Und das ganze mit Critical Sections auszustatten, sodass nicht mehrere Threads zugreifen können macht ebenfalls wenig Sinn, denn dann müsste ja für jedes Schwarmmitglied 1. ggf. gewartet werden, bis der andere Thread aus der CS raus ist, 2. sie muss betreten werden und 3. wieder verlassen. Das alles kostet in diesem Umfang ebenfalls viel Leistung. Im Extremfall könnten z.B. alle Threads auf die CS eines Schwarmmitglieds warten. In diesem Fall wärst du aufgrund des oben erwähnten Overheads sogar langsamer als wenn alles in einem Thread läuft.
Du kannst einzelne KI`s, die viel Leistung brauchen und nicht/kaum auf die Ergebnisse der anderen warten müssen in Threads laufen lassen, aber wie gesagt sollte das auch nicht in einer riesigen Threadanzahl ausarten.

Geh das ganze am Besten erst mal langsam und mit einem Thread an, das ist schon schwer genug. Die Schwarmmiglieder hast du ja in ner Liste oder sowas und dann gehst du die einfach durch und verarbeitest bei jedem Schwarmmitglied die Ergebnisse aller anderen. Dass manche dann nur die Ergebnisse der Anderen des letzten Updates verwenden macht nichts aus, du updatest ja relativ oft und wenn es realistisch wirken soll wirst du evtl. sowieso eine Verzögerung einbauen, denn nichts reagiert sofort. Als weitere Steigerung wäre dann z.B. auch noch möglich, dass du nur die Ergebnisse verwendest, die auch in einer bestimmten Reichweite sind, ein Mitglied also nicht auf ein anderes reagiert, welches 10km weg ist. :ugly:

lg KoK
 
Wo soll das ganze den Programmiert werden? Forms, WPF, C#, C++? Je nach dem würde ich mit dem WindowsTimer arbeiten, ist auf 55ms genau ;) Der normale Windowstimer ist so genau wie deine CPU schnell ist! ;) (umso höher der Takt, umso genauer...^^)
 
Wo soll das ganze den Programmiert werden? Forms, WPF, C#, C++? Je nach dem würde ich mit dem WindowsTimer arbeiten, ist auf 55ms genau ;) Der normale Windowstimer ist so genau wie deine CPU schnell ist! ;) (umso höher der Takt, umso genauer...^^)
55ms? pff is das lange -.-

Nimm den Highprecision timer, der im ns bereich misst. So muss das :D

Und wegen der Verwirrung: hat jez jemand vor das zu programmieren?
 
öhm welcher Timer soll das den sein, der nur auf 55ms genau ist?
Die Zeit, die du mit timeGetTime() misst ist normalerweise auf ~1-2ms genau und der QueryPerformanceCounter misst sogar etwa im ns Bereich.
Der hat übrigens auch nichts mit dem Takt der CPU zu tun, sondern ist ein selbständiges, vom Takt unabhängiges Teil in der CPU.

@Crysis Nerd: Das mit den Threads war weniger auf dich bezogen, sondern eher als Antwort auf seine Frage wie er das ganze Angehen soll, da er fragte ob das ganze mit mehreren Threads gemach wird.

lg Kok
 
Wo soll das ganze den Programmiert werden? Forms, WPF, C#, C++?

Also ich arbeite zur Zeit mit Visual C# (also C# und Forms^^)


Amaryllis - Einfhrung genetischer Algorithmen mit Anwendungsbeispiel
kannste dir mal angucken , ist imo auch für anfänger easy verständlich ^^

DAs ist echt mal eine verständliche Seite, danke für den Link:daumen:
(Gibts davon mehr? xDD )

55ms? pff is das lange -.-
[lustigkeit]Wobei du "lange" hier relativ verwenden solltest! Denn ich brauch mind 5minuten, um was trinen zu gehen, dazu gehört "überlegen was ikk trinke", "mich hier aus meiner butze rausquälen", "nach unten latschen" und und und :lol: [/lustigkeit]
ne ma im ernst ... ist 55ms in der Programmierwelt wirklich schon so lang?
Mich würde das eigentlich nicht stören, ob mir ein ergebnis nun 55ms später angezeigt wird oder nicht^^
nur bei extrem zeitintensiven sachen könnte ich das schon verstehen .....

Und wegen der Verwirrung: hat jez jemand vor das zu programmieren?
Also richtig vor hatte ich es eigentlich nicht, aber das wird irgendwie immer interessanter :D
Nächste Woche werde ich mich da ma ransetzen. Diese Woche is time = not available (deswegen poste ich auch fast nur nachts xD )


Das mit den Threads war weniger auf dich bezogen, sondern eher als Antwort auf seine Frage wie er das ganze Angehen soll, da er fragte ob das ganze mit mehreren Threads gemach wird.

Also mit meinem i7 (HT aus) stünden mir die 4 Kerne zur Verfügung. und somit wären 4 Threads optimal oder?
Aber für ne KI fände ich das schon arg wenig mit max. 4 (oder 8) Threads durch die Gegend zu gurken, da müsste einer ja fast alles machen, je nachdem, wieviele Schwarminstanzen (wenn man jetzt das Konzept weiterverfolgt) man erzeugt :ugly:
Allein meine normalen Programme sind immer mit 3 Threads erstellt, wobei ich da nicht weiß, ob das so üblich ist ;)


PS: ich hab mein Abi jetzt zwar mit 1,5 bestanden (ja gaaanz knapp xD ), aber das heißt noch lange nicht, dass ich der übelzte Godfather in Sachen Programmierung bin, also ich bin selbst mal gespannt, was ich da zustande bringe :D :P :ugly:
 
ne ma im ernst ... ist 55ms in der Programmierwelt wirklich schon so lang?
Überleg zb. mal: Damit ein Film nicht als ruckelig erscheint, brauchst du schon 25 fps, bei einem Spiel 30, wobei ich sogar 60 bevorzuge. Und selbst 1000 ms /25fps = 40 ms. Ja es ist recht viel...

Also mit meinem i7 (HT aus) stünden mir die 4 Kerne zur Verfügung. und somit wären 4 Threads optimal oder?
Aber für ne KI fände ich das schon arg wenig mit max. 4 (oder 8) Threads durch die Gegend zu gurken, da müsste einer ja fast alles machen, je nachdem, wieviele Schwarminstanzen (wenn man jetzt das Konzept weiterverfolgt) man erzeugt :ugly:
Allein meine normalen Programme sind immer mit 3 Threads erstellt, wobei ich da nicht weiß, ob das so üblich ist ;)
Ich verstehe nicht, was du meinst? Warum sollte ein Thread alles machen? Bei Beispielsweise 100 Schwarminstanzen, warum sollte nicht jeder Thread 25 machen? Aber wie gesagt: komm erstmal vom Thread denken ab, mach falls du es vor hast erstmal alle in einem Thread.
Und mit den 3 normalen Threads: Das ist machwerk von Visual Studio, so weit ich weiß. Aktiv nutzen tust du nur einen Thread, mit dem was du Programmiert hast. Die anderen beiden Threads werden dazu benutzt, MS die Weltherschaft zu erlangen oder was auch immer.
PS: ich hab mein Abi jetzt zwar mit 1,5 bestanden (ja gaaanz knapp xD ), aber das heißt noch lange nicht, dass ich der übelzte Godfather in Sachen Programmierung bin, also ich bin selbst mal gespannt, was ich da zustande bringe :D :P :ugly:

Also ich finde das Thema auch recht interessant, bin aber noch an anderen Projekten beteiligt und stinkfaul. Aber wenn du anfängst, sag mir mal Bescheid. Ich würde gerne das neuste hören immer ;)
 
Ja wie schon gesagt wurde sind 55ms verdammt lange.
4 Threads wären bei dir Optimal, aber ob das jetzt 4,5 oder 6 sind macht keinen großen Unterschied. Du bekommst halt nicht mehr Performance, aber so schlimm ist das auch nicht, sofern die Threads nicht aufeinander angewiesen sind. Nur wenn das ausartet und du zu viele Threads hast wird es hässlich von der Performance her :ugly:
So aufwendig ist deine KI übrigens auch gar nicht. Was soll da jetzt so groß berechnet werden, wofür du meinst so viel Leistung zu brauchen? In Spielen z.B. braucht das Rendering meistens noch mit Abstand die meiste Zeit, da dies nicht (hat sich mit DX11 gebessert) parallelisierbar ist. Was man in Threads packen kann ist Audio, Physik, Netzwerk, Partikelsysteme und evtl. teile der Spiellogik bzw. der KI. Das Rendering läuft fast immer nur in einem Thread.

lg Kok
 
Na denn werde ich es wohl mal alles in einem Thread laufen lassen .. und ggf. in Kauf nehmen: Man klickt auf nen Button mit der Aufschrift "Schwarm angreifen" oder so und dann gehts los .... 1% Fortschrit ..... 2%Fortschritt .... paar Runden BC2 -> 15% Fortschritt :D:D


Also ich finde das Thema auch recht interessant, bin aber noch an anderen Projekten beteiligt und stinkfaul.

Soso ... da sind wir beide ja ziemlich ähnlich :P
Btw .. was für andere Projekte machste denn so?^^
 
öhh was willst du denn dass passiert, wenn man auf Schwarm angreifen klickt?
Wenn ein Schwarm nicht aus Millionen besteht wird das alles seehr seehr viel schneller sein. Ich glaube du unterschätzt die Leistung eines heutigen PCs/die Aufwendigkeit deines Vorhabens etwas.

lg Kok
 
öhh was willst du denn dass passiert, wenn man auf Schwarm angreifen klickt?
keine Ahnung :ugly:

Ich glaube du unterschätzt die Leistung eines heutigen PCs
das kann sein, mit so aufwendigen sachen kenn ich mich eben nicht aus^^
ich weiß nur, dass mein PC (siehe Sig) für das Sortieren von ~613.000 deutschen Wörtern kaum Zeit benötigt, aber alle Wörter mit "A" oder "b" als anfangsbuchstaben in einer Datei zu speichern ne halbe Ewigkeit braucht xD
"String += [neuer teil];" schein da der übeltäter zu sein -.-

die Aufwendigkeit deines Vorhabens etwas.
da stimme ich dir zu :D :P
aber wie sagt meine Mutter immer: "Ach mach doch, was de willst" :ugly:


PS: 1500 Posts? :what:
 
Zurück