Laden...

AntMe! und KI

Erstellt von DavidT vor 16 Jahren Letzter Beitrag vor 14 Jahren 7.690 Views
DavidT Themenstarter:in
998 Beiträge seit 2007
vor 16 Jahren
AntMe! und KI

Hallo,

bin eben auf AntMe! gestoßen. Sieht ja ganz lustig aus, hat das schon mal jemand ausprobiert?

Mir ist klar das es für die meisten hier Unterforderung pur ist, aber um son bissl was über KI zu lernen bestimmt nicht verkehrt.

Was sagt ihr dazu?

Gruß David

J
3 Beiträge seit 2007
vor 16 Jahren

Ich hab AntMe schon im letzten Jahr getestet. Für Einsteiger gut zu empfehlen. Der Multiplayermodus ist da schon etwas anspruchsvoller. Es wird der komplette Sourcecode geliefert, was für angehende Spieleentwickler einen Einblick in diese Materie gibt. Gedacht ist Antme für Schüler und programmierende Kinder, um diese in die Softwareentwicklung spielerisch einzuführen.
Mittlerweile bin ich bei Project Hoshimi gelandet, was mehr Anforderung an eine intelligente Strategie stellt.

Erfahrung ist eine nützliche Sache.
Leider macht man sie immer erst kurz nachdem man sie brauchte...

S
142 Beiträge seit 2007
vor 16 Jahren

Ist ganz interessant.... "Programmieren" lernt man damit zwar nicht, aber es ist schon toll um Leuten die mal einsteigen wollen, bzw gerade anfangen den Syntax der Sprache zu lernen einige Prinzipien zu vermitteln.

Wenn ich einen kleinen Bruder hätte (vorausgesetzt er hätte die Bereitschaft & Auffassungsgabe) würde ich ihm versuchen Auntme näherzubringen.

2.760 Beiträge seit 2006
vor 16 Jahren

Ich denke schon das man dabei programmieren lernen kann aber halt eher in einem recht abgesteckten Rahmen. Es ist irgendwie klar das man danach keine Multi Tier Geschäftsanwendung programmieren kann aber es setzt trotzdem die gleiche Logik voraus die man überall brauchen wird. Eigentlich ist es einfach ein Framework 😜

Gelöschter Account
vor 16 Jahren

ein paar monate habe ich auch mit antme rumgespielt. ist ganz nett und auf den ersten blick kann man damit auch nciht wirklich programmieren lernen, jedoch man kann das bis ins excess treiben. wenn dann globale gedächtnisse und zustandsautomaten umgesetzt werden, dann hat das sehrwohl mit programmieren zu tun.

D
67 Beiträge seit 2009
vor 14 Jahren

Ist zwar schon ne weile her das hier was gepostet wurde, aber ich bin neulich wieder auf das Spiel gestoßen und muss sagen des es doch ziemlich Spaß macht.

Wie JAck30lena schon schrieb kann man ne Menge an Ideen reinbringen.

Nicht nur für Anfänger sondern auch für Fortgeschrittene ein toller Zeitvertreib.

S
443 Beiträge seit 2008
vor 14 Jahren

Ja, das Teil ist toll, meiner Ansicht nach ist das Framework dahinter auch nicht schlecht programmiert (abgesehen vom Naming -> umlaute in MethodenNamen)

Falles jemand mal vor hat sich mit KI zu beschäftigen hat er hier die "perfekte" Spielwiese. Einerseits kann man sich selbst mit den Einstellungen der Ameise spielen, andererseits kann man div. Algorithmen einbauen damit sich der Haufen selbst organisiert.

Ich finds ne tolle Idee und ne gute Umsetzung

mbg
Rossegger Robert
mehr fragen mehr wissen

Montag morgen ist die beste Zeit um eine erfolgreiche Woche zu beginnen

6.911 Beiträge seit 2009
vor 14 Jahren

Falles jemand mal vor hat sich mit KI zu beschäftigen hat er hier die "perfekte" Spielwiese

Da empfehle ich eher die "klassische" Variante um KI zu lernen (zB mit dem Ameisen-Algorithmus das Traveling-Salesman-Problem zu lösen oder mit Partikelschwärmen eine Funktion zu optimieren, ...) denn dabei versteht man dann mehr über die Hintergründe der Algorithmen und lernt somit auch gleich für welche Einsatzgebiete welches Verfahren sich besser eignet als andere bzw wie sich das Verändern der Parameter auswirkt.

Durch das Spiel wird einem gleich einmal suggeriert dass man KI verstanden hat obwohl man nur eine Lösung zusammengehackt hat ohne zu Wissen wie warum welche Parameter gesetzt werden und für was diese stehen. Viele die glauben sie wissen was KI ist können nicht einmal was mit dem Begriff Fehlerfunktion was anfangen 😉

Es gibt natürlich auch ander die verstehen was KI ist und wie sie anzuwenden ist - diese hacken keine Lösung zusammen 😉

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

S
443 Beiträge seit 2008
vor 14 Jahren

ich hab gestern gegoogelt, aber ich habe für "Fehlerfunktion" keine Erklärung gefunden die ich verstanden hätte.
Dürfte ich Dich bitten mir dieses Wissen näher zu bringen?

// Edit:
ich schreib einen suchalgorithmus auf basis des Evo. Algorithmus, was ja, soweit gelesen als Grundlage für eine KI dienen kann, ich behaupte aber nicht das ich verstanden habe was ein KI ist, zumal ich glaube, das mein Programm nie intelligent werden wird.

mbg
Rossegger Robert
mehr fragen mehr wissen

Montag morgen ist die beste Zeit um eine erfolgreiche Woche zu beginnen

1.361 Beiträge seit 2007
vor 14 Jahren

Intelligenz (lat.: intelligentia „Einsicht, Erkenntnisvermögen“, intellegere „einsehen, verstehen“) bezeichnet im weitesten Sinne die geistige Fähigkeit zum Erkennen von Zusammenhängen und zum Finden von Problemlösungen.

Beschränken wir uns auf das Probleme lösen. Oft gibt es bei Aufgaben widersprüchliche Ziele. (kürzerster Weg aber nicht durch die Wand; hoher Erlöß aber geringe Kosten; das Wetter von Morgen so genau wie möglich aber auch so früh wie möglich)
Wir Menschen verrechnen diese Ziele oft intuitiv irgendwie miteinander und finden dann eine mehr oder weniger gute Lösung. (Andere Menschen verrechnen die vielleicht anders, weshalb die dann mit unserer Lösung nicht zufrieden sind)

Zur Modellierung, mathematischen Beschreibung und zum algorithmischen Problemlösen müssen diese Zielgrößen aber zumeist quantisiert und so miteinander verrechnet werden, dass der PC das versteht.
Manchmal kann man all das so in eine einzige Funktion gießen, dass die "gute" Problemlösung dann erreicht wird, wenn diese Funktion maximal, bzw. minimal wird.
(Beispielsweise stellen die BWLler wilde Formeln auf und nennen die dann Gewinn, Rendite, Rentabilität, ... um alles auf eine einzige Größe zu bringen, welche maximiert werden soll. Entscheidungen gelten dann als "gut", wenn sie diese Zahl vergrößern)

Und wenn man nun den Fall einer zu minimierenden Funktion hat (die beiden Fälle kann man im Grunde ineinander überführen), dann kann man diese auch als Art Fehlerfunktion ansehen. Denn Fehler will man klein halten. Und die "beste" Lösung wird dort erreicht, wo der Fehler minimal ist. (Beispeilsweise könnte bei der Wegfindung der Umweg im Vergleich zur Luftlinie der "Fehler" sein, den man minimieren will)

Und meistens kann man erst jetzt sich "intelligente" Lösungsfinder bauen, die nicht wild alle Lösungen ausprobieren und bewerten, sondern gezielt und mh... halt intelligent auf die richtige Lösung (das Minimum der Fehlerfunktion) zusteuern.

beste Grüße
zommi

PS: Das mit dem Erkennen von Zusammenhängen ist noch eine ganz andere Intelligenzleistung, die noch viel weniger gut verstanden ist.

6.911 Beiträge seit 2009
vor 14 Jahren

Dürfte ich Dich bitten mir dieses Wissen näher zu bringen?

Habs erst jetzt gelesen und da hat zommi schon eine gute Antwort dafür gegeben.

Die Fehlerfunktion in Bezug auf KI ist am offensichtlichsten beim überwachten Lernen von künstlichen Neuronalen Netzen und entspricht der Summe der Abweichungen von Sollausgabe zu tatsächlicher Ausgabe. Während des Lernen gilt es diese zu minimieren - d.h. den Fehler durch Anpassung der Gewichte möglichst gering zu machen. Ausgehend von der Fehlerfunktion werden/wurde die Lernverfahren (zB Backpropagation als Gradientenabstiegsverfahren) entwickelt.

Aber wie zommi schon erklärt hat lässt sich die Fehlerfunktion auch als "Gütefunktion" ansehen.

ich schreib einen suchalgorithmus auf basis des Evo. Algorithmus, was ja, soweit gelesen als Grundlage für eine KI dienen kann,

Dann wirst du sicher eine Art Kostenfunktion, Fitnessfunktion oder ähnliches zur Bewertung verwenden -> der Überbegriff dafür wäre die Fehlerfunktion.

Und meistens kann man erst jetzt sich "intelligente" Lösungsfinder bauen, die nicht wild alle Lösungen ausprobieren und bewerten, sondern gezielt und mh... halt intelligent auf die richtige Lösung

Das würde ich als Heuristik bezeichnen 😉 (im Gegensatz zu Brute-Force das alle Lösungen probiert).

Edit:

ich hab gestern gegoogelt,

Siehe auch: Fehlerminimierung

mfG Gü

PS: Welchen Suchalgorithmus und welchen evolutionären Algorithmus verwendest du - würde mich interessieren denn ich hab mit Simulated Annealing - ist zwar nicht evolutionär aber auch (meta) heuristisch - die besten Erfahrungen gemacht (sowohl Geschwindigkeit als auch Güte des Ergebnisses).

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

S
443 Beiträge seit 2008
vor 14 Jahren

Ok, soweit ich das verstanden habe, ist eine Fehlerfunktion keine Funktion im herkömmlichen Sinn wie eine Methode im Code, sprich etwas das was tut, sondern eher ein Begriff oder Wert der mir hilft zu bestimmen wie nahe ich an der Besten Lösung bin.

Aus meinem Programm:
Ich benütze ja wie bereits erwähnt den Evolutionären Algorithmus. Bei diesem dreht sich im Endefekt alles um die Fittnes einer Popolation.
bei mir ist die höchste zu erreichende Fittnes 200 (wie das jetzt auch immer berechnet wird). Diese Zahl ist allerdings weder praktisch noch theoretisch zu erreichen! soweit ich gesehen habe ist der höchste Wert um die 120.
Falls ich Deine gut verständliche Erklärung verstanden habe könnte man zu diesem Beispiel sagen, "Die Fehlerfunktion beträgt/ergibt 80"? und sollte so gering wie möglich gehalten werden.

Kann man den Satz so stehen lassen?

mbg
Rossegger Robert
mehr fragen mehr wissen

Montag morgen ist die beste Zeit um eine erfolgreiche Woche zu beginnen

T
574 Beiträge seit 2008
vor 14 Jahren

mir raucht nur vom Lesen schon das hirn ...

6.911 Beiträge seit 2009
vor 14 Jahren

ist eine Fehlerfunktion keine Funktion im herkömmlichen Sinn wie eine Methode im Code

Nein ist keine Methode sondern eine Funktion im mathematischen Sinne - lässt sich aber auch als Methode darstellen 😉

"Die Fehlerfunktion beträgt/ergibt 80"? und sollte so gering wie möglich gehalten werden.

Kann so stehen bleiben.

Ich benütze ja wie bereits erwähnt den Evolutionären Algorithmus. Bei diesem dreht sich im Endefekt alles um die Fittnes einer Popolation.
bei mir ist die höchste zu erreichende Fittnes 200

Ich nehme mal an dass es konkret ein genetischer Algorithmus ist und dabei geht es nur darum die fittesten Chromosomen der Population zu bestimmen um diese zu vermehren. Daher ist es nicht (unbedingt) nötig einen Wert für die Fitness anzugeben, sondern es reicht die Fitness jedes Chromosom zu bestimmen und die Population dann danach zu sortieren. So stehen an vorderster Stelle autmatisch die fittestesten.
In den meisten Fällen ist der Zielwert der Fitness (bzw mathematisch betrachtet das Optimum der jeweiligen Funktion) nicht bekannt ist und daher eignet sich oben erwähntes Vorgehen besser.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

S
443 Beiträge seit 2008
vor 14 Jahren

In den meisten Fällen ist der Zielwert der Fitness (bzw mathematisch betrachtet das Optimum der jeweiligen Funktion) nicht bekannt

Ja mein algorithmus hinkt ein bisschen, habe ich schon festgestellt, wie ich begonnen habe habe ich viel über die verschiedenen algorithmen gelesen und schön langsam glaube ich, ich habe einige Teile vermischt. Wie ich die 200 ausgerechnet habe dachte ich mir auch "Kann die Evolution in der realen Welt auch mal ein Maximum erreicht haben?" und so hinkt diese Funktion ein bisschen.

Ich habe mir damals und auch heute Deine vorgeschlagene Heuristik angesehen, ich hab sie damals zusammenfassend eine "springende Tiefensuche" genannt. aber aufgrund der ungeheurlichen datenmengen habe ich mich für den evo entschieden. für 0,5% der Datenmenge erhalte ich bereits nach dem 2. Durchlauf 120.000 Populationen die eine Fitness ausgeben (10.000 davon sind für den nächsten Schritt vorgesehen). und ich weis nicht wie weit er da "springen" müsste um die nächste lokale Tiefe finden zu können).

aber besten dank für die Anregungen und Erklärungen !!!

@tkrasinger
Rat mal wie es mir beim programmieren geht, mittlerweile begrüsse ich meinen Laptop wenn er fertig hochgefahren ist

mbg
Rossegger Robert
mehr fragen mehr wissen

Montag morgen ist die beste Zeit um eine erfolgreiche Woche zu beginnen

6.911 Beiträge seit 2009
vor 14 Jahren

Ich habe mir damals und auch heute Deine vorgeschlagene Heuristik angesehen,

Welchen Vorschlag von mir meinst du konkret. Ich weiß jetzt nicht welchen du meinst.

für den evo entschieden. für 0,5% der Datenmenge erhalte ich bereits nach dem 2. Durchlauf 120.000 Populationen die eine Fitness ausgeben (10.000 davon sind für den nächsten Schritt vorgesehen)

Wie hast du den genetischen Algorithmus (GA) implementiert?
Eine Fitness gibt jedes Chromosom zu jeder Zeit aus - ob die gut oder schlecht ist ist eine andere Frage.

Ein GA wird in der Regel so umgesetzt (auf das wesentlichste beschränkt):1.Wahl der Parameter: Größe der Population (zB 5000) = Anzahl der Chromosomen, Vermehrungs (zB 0,25)- und Mutationsrate (zB 0,1) 1.Initialisierung der Gene jedes Chromosom mit Zufallswerten (im Idealfall aus dem Wertebereich der Lösung) 1.Bewertung der Fitness jedes Chromosoms (dazu die Liste der Chromosomen nach der Fitness sortieren) 1.Auswahl der Chromosomen die sich vermehren (zB über Truncation Selection oder besser über Tournament-Selection und Berücksichtigung der Vermehrungsrate). Die mit höherer Fitness vermehren sich eher als die niedrigerer Fitness. 1.Mutation einiger Chromosomen (prozentuale Auswahl gemäß Mutationsrate). 1.Wenn die Abbruchbedingung nicht erreicht ist gehe zu Schritt 3. Abbruchkriterien können sein: Anzahl der Iterationen oder ein Qualitätskriterium wie das Unterschreiten eines bestimmten Fehlers.

Die Populationsgröße bleibt dabei konstant, somit werden Chromosome mit schlechter Fitness automatisch ausgeschieden. Ein auffrischen des Gen-Pool erfolgt durch die Mutation (zufällige Verschiebung des Genvektors im Wertebereich der Lösung).

Daher verstehe ich nicht warum sie bei dir wächst - gut ist auch eine Möglichkeit aber ist mir in der Verwendung nicht bekannt. bzw. verwende ich den GA wie ich es gerade skizziert habe.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

S
443 Beiträge seit 2008
vor 14 Jahren

ich meinte den Vorschlag bzgl. Simulated Annealing
Irgendwie hat mir der einfach nicht zugesagt.

Wie habe ich ihn implementiert:
Hierbei sei erwähnt, dass ich in der Benamsung der einzelnen Begriffe schon festgestellt habe dass ich mich gelegentlich vertan habe. Zum Beispiel das Wort Chromosom kommt bei mir nicht vor.

ich hab mal ne datenbasis. Wichtig ist, die hat ein Datum und ein Datensatz kennt die, die davor waren, sprich, sie sind untereinander verknüpft (aber immer nur in eine Richtung)
(der Datensatz vom 10.01 kennt den vom 09.01 und 08.01, der vom 09.01 kennt den vom 08.01 und 07.01)
Es sollte auch erwähnt werden, das nach dem zusammenbauen (ist ein längerer Vorgang) alle Element in einer Liste vorliegen. (der vom 10.01 und vom 09.01)

Dann erstelle ich die Gene, da sich die Datenbasis auch von der Struktur her ändern kann muss ich das zur laufzeit machen,
und da ich so flexibel wie möglich sein muss erstelle und kompiliere ich dll's welche ich dann in der Datenbank ablege.
Ein Gen hat im endefekt eine Methode im Stil von:

return {linker Operand} == ({rechter Operand} - allele);

der linke und rechte Operand werden aufgrund der Struktur der Datenbasis ermittelt.
z.b. dataRow[0].Property == (dataRow[1].Property - allele)
dataRow ist die Klasse die z.b. den 10.01 darstellt, der Indexer ist so geschrieben, dass bei [0] der 10.01 zurückkommt und bei [1] der 09.01
ist ein bisschen komisch, aber war eine Vorgabe.
Die 'allele' ist der von Dir erwähnte "Zufallswert (im Idealfall aus dem Wertebereich der Lösung)" (Ich habe den Idealfall)

Nun habe ich meine drei Teile die ich zur generierung benötige
Datenbasis (List<DataRow>)
Gene (List<Gen>)
Allelen (List<Allele>)

nun kommt der GA zum Einsatz und steckt mal alles zusammen.

foreach Gen
  foreach Allele
    pops.Add( CreatePopulation(gen, allele, dataRows) );

beim ersten Durchlauf erhalte ich ca. 3000 Populationen welche mal in die Datenbank gespeichert werden.

der nächste Durchlauf startet mit der Zeile

List<Population> fittestPopulations = pops.GetFittest();
// fittestPopulations.Count == 500 - 600

ich nehme alle Gene und "idealisiere" meine Allelen um keine sinnlosen Berechnungen zu machen
danach erstelle ich wieder die Populationen, mit dem unterschied dass ich das bestehende Gen-Allele Paar 'kopiere' und das neue Gen-Allele Paar dazugebe

foreach Gen
  foreach Allele
    pops.Add( CreatePopulation(fittestPop.Genom, gen, allele, dataRows) );

und erhalte, eigentlich mit dem gleichen schema wie oben beschrieben so an die 120.000 neue Populationen.

Was noch zu bearbeiten ist, ist sicher die GetFittest() Methode. Die gibt mir noch viel zu viel zurück

Wie berechne ich die Fittnes?
von allen Populationen suche ich mir die raus, die am meisten dataRows hat. (z.b. 100)
wenn eine andere Population z.b 14 hat, erhält die mal die CountFitness 14 (%)
die zweite Fittness ermittle ich mir mit dem ansehen der einzelnen dataRows. nach einem bestimmten Kriterium sind sie gut oder schlecht.
z.b. 7 sind gut, dann ergibt das 50 (%) -> ergibt in summe 64 (%) von 200 (%).
die ist sicher auch noch zu bearbeiten, vorallem in Richtung gewichtung der einzelnen Werte und vielleicht dem erfinden anderer Kriterien.
Fürs testen, und weiter bin ich noch nicht, reicht es mir wenn nicht immer 0 (%) zurückkommt.

mbg
Rossegger Robert
mehr fragen mehr wissen

Montag morgen ist die beste Zeit um eine erfolgreiche Woche zu beginnen

6.911 Beiträge seit 2009
vor 14 Jahren

Hallo spike24,

ich werde nicht schlau aus dem was du erreichen willst. Ein genetischer Algorithmus (sowie alle anderen Heuristiken dieser Art) zielen darauf ab etwas zu Optimieren (die Fehlerfunktion). Bei dem was du gepostet hast kann ich nicht erkennen was die Zielsetzung ist (vielleicht weil ich über deine Problemstellung zu wenig weiß oder vielleicht weil du die nicht ganz korrekte Herangehensweise verwendest).

Vielleichts kannst du ein neues Thema erstellen damit wird dort das Problem lösen können. Für AntMe! ist es ein wenig zu Off-Topic 😉

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

S
443 Beiträge seit 2008
vor 14 Jahren

Noch ist keine Optimierung zu erkennen, da es ganz einfach noch keine gibt.
Ich bin gerade beim Erstellen des Programmes und habe ehrlich gesagt keine Ahnung was da rauskommen wird, sprich ich muss die Optimierungen erst vornehmen, mom. bin ich im einbauen von Multithreading um es von dieser Seite her mal flott zu machen. Weiters mache ich die letzte Arbeit des Programmes, die GUI. danach kommen optimierungen.

neuen Thread brauchen wir nicht, da ich jetzt keine konkrete Frage habe.

bevor ich was frage sollte ich mir mal das reinziehen.
Evolutionäre Algorithmen - Begriffe und Definitionen

mbg
Rossegger Robert
mehr fragen mehr wissen

Montag morgen ist die beste Zeit um eine erfolgreiche Woche zu beginnen

6.911 Beiträge seit 2009
vor 14 Jahren

Noch ist keine Optimierung zu erkennen, da es ganz einfach noch keine gibt.

Glaube du hast meine obige Antwort nicht verstanden 😉

Ein genetischer Algorithmus (sowie alle anderen Heuristiken dieser Art) zielen darauf ab etwas zu Optimieren (die Fehlerfunktion).

Daring geht es bei Optimierung nicht um die Laufzeit des Codes sondern um Optimierung im mathematischen Sinne, d.h. das Min-/Maximum einer Funktion zu finden. Wenn das nicht die Zielsetzung ist dann sind genetische Algorithmen fehl am Platz 😉

Ich bin gerade beim Erstellen des Programmes und habe ehrlich gesagt keine Ahnung was da rauskommen wird,

Das ist nicht gut 😉 Eine grobe Ahnung von dem was rauskommen soll sollte schon vorhanden sein, oder glaubst du dem Computer alles. Zumindest für eine Plausibilitätsprüfung sollte das Ergebnis grob abgesteckt werden können. Wie sollst du sonst wissen ob das Ergebnis im zulässigen Bereich ist, etc.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

S
443 Beiträge seit 2008
vor 14 Jahren

Eine grobe Ahnung von dem was rauskommen soll sollte schon vorhanden sein, oder glaubst du dem Computer alles. Zumindest für eine Plausibilitätsprüfung sollte das Ergebnis grob abgesteckt werden können. Wie sollst du sonst wissen ob das Ergebnis im zulässigen Bereich ist, etc.

Ok, ein bisschen übertrieben ausgedrückt, soviel weis ich schon damit ich die Sache überprüfen kann ob das stimmt was da rauskommt, klar.
Aber eben die mathematische Optimierung fehlt noch.
Ich habe eh in meinem Beitrag erwähnt das es zwei stellen gibt die eben zu überarbeiten sind.

Was noch zu bearbeiten ist, ist sicher die GetFittest() Methode. Die gibt mir noch viel zu viel zurück

Wie berechne ich die Fittnes?
von allen Populationen suche ich mir die raus, die am meisten dataRows hat. (z.b. 100)
...
Fürs testen, und weiter bin ich noch nicht, reicht es mir wenn nicht immer 0 (%) zurückkommt.

Hier sehe ich auch die Optimierung im Mathematischen Sinne zu erledigen, und die fehlt halt noch komplet. Ich programmiere mal den Alg. allgemein und diese Optimierunge nehme ich dann mit einem Freund vor, da er mehr Ahnung von diesem Thema hat.

mbg
Rossegger Robert
mehr fragen mehr wissen

Montag morgen ist die beste Zeit um eine erfolgreiche Woche zu beginnen

6.911 Beiträge seit 2009
vor 14 Jahren

Aber eben die mathematische Optimierung fehlt noch

Sorry - aber es hat den Anschein da fehlt noch mehr (Grundlagen) 😉
Die Optimierung im mathematischen Sinne wird durch den gesamten Algorithmus durchgeführt und zwar derart dass die Fehlerfunktion (oder Kostenfunktion oder sonst was) minimiert oder maximiert wird. Der genetische Algorithmus (sowie andere Algorithmen) sind nur das Werkzeug welche die Optimierung durchführen.

Wie der GA funktioniert habe ich schon oben erwähnt.

Ich programmiere mal den Alg. allgemein und diese Optimierunge nehme ich dann mit einem Freund vor, da er mehr Ahnung von diesem Thema hat.

Diese Optimierungen die du meinst sind Feinheiten des Algorithmus und können vorerst außen vor bleiben - wichtiger wäre dass der GA in seinen Grundzügen korrekt umgesetzt ist. (Hoffentlich hat dein Freund mehr Ahnung von dem was gemacht werden soll.

mfG Gü

PS: Es ist nicht böse oder sonst wie gemeint. Ich stelle nur fest dass eben die Grundlagen in dieser Hinsicht fehlen. Daher auch mein Vorschlag dass du einen neuen Thread eröffnest dann können wir dieses Problem vom Grund auf angehen.

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"