Delphi-PRAXiS
Seite 2 von 5     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Evolutionäre Programmierung - programmiert auch Ihr evolutionär? (https://www.delphipraxis.net/165412-evolutionaere-programmierung-programmiert-auch-ihr-evolutionaer.html)

Delphi-Laie 29. Dez 2011 15:59

AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?
 
Iwo Asnet, bitte keine Belehrungen. Ich bin mir der Defizite dieses Vorgehens selbst bewußt, das müßte doch aus dem Eröffnungsbeitrage offensichtlich geworden sein. Außerdem schrieb ich, daß ich nicht die Ausdauer (wegen nicht überschäumenden Interesses) habe, mich in alle Subtilitäten hineinzudenken. Andere schreiben über nur eine Sortiervariante eine Dissertation! Was erwartest Du von einem Hobbyprogrammierer?

Zitat:

Zitat von Luckie (Beitrag 1143632)
"Evolutionär"? Ich würde die Methode als "Versuch und Irrtum" bezeichnen. ;)

Luckie, was macht die Evolution wohl sonst?

Ich habe das aus dem Buch, das ich mir zulegte, weil Du darob schriebst. Im letzten Kapitel ging es darum, wie die (auto-)evolutionäre Programmierung zu funktionstüchtigen, schnellen und nebulösen Sortieralgorithmen führt.

Zitat:

Zitat von Phoenix (Beitrag 1143641)
Zitat:

Zitat von Delphi-Laie (Beitrag 1143580)
Also bin ich „Dünnbrettbohrer“ und „schraube“ an allem möglichen Parametern und Variablen umher (veränderte Startwerte, veränderte Typen, Laufbereiche bei Schleifen usw. usf.), bis der Algorithmus anscheinend / offensichtlich fehlerfrei funktioniert. Das dauert i.d.R. nur Stunden, und bis auf eine Ausnahme gelang es mir bisher auch immer....
Wie schätzt Ihr das Restrisiko ein, daß man doch Fehler dabei einbaut bzw. übersieht? Ist das in Euren Augen eine praktikable, akzeptable Programmiermethodik?

Gegenfrage zu dem letzten Satz:
Wie oft musst Du Dir sowas hinterher nochmal angucken / etwas ändern, wenn es in irgendwelchen Fällen dann doch nicht passt, und wie lange bist Du dann wieder damit beschäftigt (inkl. neu Eindenken, 'rumprobieren' bis es auch in dem Fall passt)?

Nicht allzu oft - "gefühlt".

Namenloser 29. Dez 2011 17:13

AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?
 
Also machen andere das auch :lol:

Ja, ich mache das gelegentlich, wenn ich z.B. seit Stunden irgendeinem mir unverständlichen Fehler auf der Spur bin. Allerdings dauert es so nach meiner Erfahrung meistens länger, zum Ziel zu kommen, als wenn man sich wirklich mal konzentriert mit dem Code auseinandersetzt, und überlegt an die Sache rangeht. Aber nicht immer hat man dazu noch die Energie, vor allem wenn man schon eine längere Coding-Session hinter sich hat und/oder müde ist.

Ich kann mich z.B. noch daran erinnern, wie ich vor etwa einem Jahr einen Algorithmus geschrieben habe, um eine antialiaste Linie mit variabler Dicke und abgerundeten Enden (und Alphatransparenz) zu zeichnen (und das mit Festkomma-Arithmetik). Ich hatte mir natürlich erst nen tollen Algorithmus auf Papier skizziert, nur in der Praxis haute das nicht so recht hin – z.B. erschienen vollständig horizontale Linien einen Pixel dünner als minimal schräge, oder es gab plötzlich 1 Pixel große Lücken oder Überlappungen bei den runden Enden, oder an einer Kante funktionierte das Antialiasing plötzlich nicht mehr richtig... letztenendes also Rundungs-Probleme.

Leider gab es zig Stellen, wo irgendwas gerundet wurde (oder hätte gerundet werden können/müssen), und die Kombinationsmöglichkeiten von Abrunden, Aufrunden, mathematischem Runden, gar nicht Runden (Festkomma), nur 0.5 addieren/subtrahieren etc. waren schier endlos. Ich habe mehrere Stunden versucht, den Fehler analytisch zu finden, aber schließlich aufgegeben, und dann einfach so lange rumprobiert, bis es klappte. Hat mich zwei Nachmittage gekostet... :oops:

edit: @Mavarik: Ja, der Debugger ist für diese Vorgehensweise ein sehr nützliches Tool.

Luckie 29. Dez 2011 17:40

AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?
 
@Delphilaie: Ich habe ja nichts dagegen gesagt, ich fand die Bezeichnung nur sehr schön. Und was für ein Buch meinst du und was habe ich dazu geschrieben? :gruebel:

Namenloser 29. Dez 2011 17:51

AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?
 
[OT]Btw auf dem 28C3 (nein, ich war nicht dort ;)) gab es einen Beitrag zur automatisierten, evolutionären Algorithmus-Entwicklung mithilfe von Grafikkarten. Hoffentlich gibt es wieder Videomitschnitte von den Vorträgen; ich finde, das klingt recht spannend.[/OT]

Delphi-Laie 29. Dez 2011 18:26

AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?
 
Zitat:

Zitat von Luckie (Beitrag 1143658)
@Delphilaie: Ich habe ja nichts dagegen gesagt, ich fand die Bezeichnung nur sehr schön.

Die stammt doch nicht von mir! Dafür ist sie viel zu schön.

Zitat:

Zitat von Luckie (Beitrag 1143658)
Und was für ein Buch meinst du und was habe ich dazu geschrieben? :gruebel:

Wer suchet, der manchmal sogar findet (nicht in den Foren, sondern in einem meiner Bücherregale): Daniel Hillis: Computerlogik.

Ich besorgte es für einen schlappen Ecucent (+ die obligatorischen 3 Ecu Versandkosten pauschal) von den Amazonen aufgrund einer lobenden Erwähnung in einem der beiden großen Delphiforen. Ich bin mir sehr sicher, daß ich über dieses Buch in einem Deiner Beiträge las. Dummerweise finde ich diesen Beitrag nicht wieder.

Edit: Oder las ich darob irgendwo auf Deiner Internetseite?

Luckie 29. Dez 2011 18:37

AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?
 
Ach das: http://www.michael-puff.de/Programmi...volution.shtml

Furtbichler 29. Dez 2011 19:12

AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?
 
Zitat:

Zitat von Delphi-Laie (Beitrag 1143647)
Zitat:

Zitat von Luckie (Beitrag 1143632)
"Evolutionär"? Ich würde die Methode als "Versuch und Irrtum" bezeichnen. ;)

Luckie, was macht die Evolution wohl sonst?

Dummerweise ist der Begriff belegt. Ein komisches Buch, das rumfrickelndes rumprobierendes Rumprogrammieren mit einem evolutionären Prozess vergleicht. Weiterhin müsstest Du mir mal den Sortieralgorithmus zeigen, bei dem man durch rumschrauben (schon wieder 'Rum', das bringt mich auf eine Idee.. Grog!) von Parametern irgendetwas erreichen kann.

Ansonsten ist Evolution nichts anderes als Versuch und Irrtum, wie Luckie schon sagte.

Also Hobbyprogrammierer kann man es so halten. Ich bin Hobbytischler und versuche dennoch, mit den richtigen Werkzeugen, dem richtigen Verständnis und den richtigen Techniken mein Hobby auszufüllen. Das ist aber eine Charakterfrage: Der eine wurschtelt gerne in seiner Freizeit rum, der andere fühlt sich erst wohl, wenn die Holzverbindung ohne Schrauben und Leim perfekt hält.

PS: Das, was Lucke darstellt, ist in der Tat 'Evolution'. Nur hat das nix mit dem Rumwurschteln zu tun, das manche dann als 'programmieren' bezeichnen. Es ist ein Gedankenexperiment. In der Tat kann man tolle Programme / Strategien entwickeln, in dem man ein Ziel vorgibt und dann einen genetischen(!) Algorithmus auf ein paar Programmzeilen loslässt. Irgendwo hab ich dazu mal ein lustiges Beispiel gesehen: Es ging um eine Simulation eines Schwarmes, der Futter finden sollte. dabei konnte er das Feld in einer bestimmten Strategie absuchen, sozusagen sein Programm. Das bestand aus Anweisungen wie "Laufe vorwärts", "laufe nach links" etc.

Die Evolution hat nun die Strategie/das Programm so verändert, das der Schwarm das Futter in optimal geringer Zeit gefunden hat. Echt lustig. Wenn ich nur wüsste, wo das war... Na, hier ist was ähnliches.

Delphi-Laie 29. Dez 2011 19:26

AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?
 
Zitat:

Zitat von Furtbichler (Beitrag 1143670)
Zitat:

Zitat von Delphi-Laie (Beitrag 1143647)
Zitat:

Zitat von Luckie (Beitrag 1143632)
"Evolutionär"? Ich würde die Methode als "Versuch und Irrtum" bezeichnen. ;)

Luckie, was macht die Evolution wohl sonst?

Dummerweise ist der Begriff belegt. Ein komisches Buch, das rumfrickelndes rumprobierendes Rumprogrammieren mit einem evolutionären Prozess vergleicht. Weiterhin müsstest Du mir mal den Sortieralgorithmus zeigen, bei dem man durch rumschrauben (schon wieder 'Rum', das bringt mich auf eine Idee.. Grog!) von Parametern irgendetwas erreichen kann.

Es geht nicht darum, einen bereits funktionierende Idee zu verbessern, sondern die Implementation anzupassen, zu korrigieren.

Simples Beispiel, das z.B. bei Sortieralgorithmen immer wieder auftaucht: n ist die Elementeanzahl. Man hat z.B. anzupassenden Quellcode, bei dem die Indizes von 1 bis n laufen. Bei mir aber laufen sie von 0 bis n-1. Alles mögliche (nicht zwangsläufig alles) muß daraufhin angepaßt werden. So wird z.B. oft die Mitte benötigt, also div 2 (oder shr 1) ausgeführt. Die springt aber, abhängig, ob die Ausgangszahl gerade oder ungerade ist, aber eben nicht immer, sondern nur bei jedem zweiten Wechsel zwischen gerade und ungerade. Werden alle Indizes in der Implementation um 1 verringert, werden aus geraden ungerade und umgekehrt, und schon kann die Mitte ungeahnte Effekte verursachen.

Derlei Fallstricke lauern zu hunderten, und man kann diese systematisch suchen oder eben durch Ausprobieren aufzuspüren versuchen.

Wird es nun allmählich klarer, inwieweit man "rum"probieren und dieses auch zum Erfolg führen kann?

Namenloser 29. Dez 2011 20:14

AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?
 
@Furtbichler: Naja, es ist schon eine Form von Evolution, wenn man einen Algorithmus durch kleine Veränderungen im Trial&Error-Verfahren immer weiter dem „Optimum“ annähert. Man simuliert eben nur von Hand den evolutionären Prozess, statt dass man ihn automatisiert ablaufen lässt. Das ganze ist nur insofern irreführend, dass, wie du schon sagst, unter „Evolutionärer Programmierung“ normalerweise etwas anderes verstanden wird.

Luckie 29. Dez 2011 20:52

AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?
 
Na ja, ich habe eben nur gemerkt, dass wenn ich so anfange, ich den Algorithmus nicht verstanden habe. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:12 Uhr.
Seite 2 von 5     12 34     Letzte »    

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