Labyrinth Algorithmus (mutierend) Tipps?

Guten Tag,

ich habe mich mal an mutierende Algorithmen als Amateur Programmierer herangewagt. Mein erstes Projekt ist ein Algorithmus, welcher den effizientesten Weg durch ein Labyrinth finden soll (Ich weiß, dass A* besser ist).

Ich bin wie folgt vorgegangen:

  1. Labyrinth als zwei dimensionales Array (0 = Frei, 1 = Mauer)
  2. Start- und Endpunkt festgelegt
  3. STart Population erstellt aus zufälligen Pfaden (Ein Pfad ist ein Array, welches als Elemente 0,1,2 oder 3 enthalten, welche wiederum die Bewegungsrichtung vorgeben, die anschließend abgelaufen wird. Bspw. Hoch, hoch, links, rechts, runter.
  4. Dann score für jeden Agent aus Entfernung zum Ziel (Satz des Pythagoras) und Länge des Pfades gebastelt. Kürzere Entfernung gibt mehr Punkte, unnötiger Weg Abzug
  5. Danach werden für die 500 neuen agents jeweils zwei Eltern mit der Wahrscheinlichkeit basierend auf dem Score ausgewählt.
  6. Das „Kind“ wird aus den zwei Hälften der Pfade der Eltern erstellt, wobei jedes Element des neuen Pfades eine Chance hat zu mutieren (Hier sehe ich bedarf zur Verbesserung)
  7. Dies wiederholt sich solange ich will

Mein Problem ist, dass es bei kleinen Labyrinths den weg auch findet, aber die Wege noch teilweise sehr unnötig sind, obwohl ab dem Punkt, wo die meisten agents das Ziel erreichen, ja der längere weg rausselektiert werden sollte. Hatte überlegt auch minus punkte zugeben, wenn eine wand oder der Rand berührt wird, aber das hat nicht so funktioniert.

Mich würden eure Gedanken dazu interessieren und einfach ein paar Tipps zu der Thematik.

Code: https://hastebin.skyra.pw/aboladewoc.java

JavaScript, Algorithmus, maschinelles Lernen
Tipps: Ideale Firmengröße und -bereich für angenhemen IT Job?

Hi!

Ich fange bald an als ITler zu Arbeiten und hätte mehrere Angebote:
- C# Entwickler in kleiner wie auch großer Firma
- C# Entwickler + ASP und Typescript in mittelgroßer Firma mit Option später auf Projektmanagement oder Consulting
- Python Entwickler im Bereich NLP/ML

Das Studium war hart. Ständig nebenbei gejobbt, nie genug Geld, kein Bafög bekommen, etc. Habe Erfahrung gesammelt und ein bisschen Skills zu bieten. An Angeboten fehlt es nicht.

Was ich will:

  • idealerweise wäre es für mich, wenn ich eine klare Aufgabe habe und so für mich daran arbeiten kann (darf ruhig Fullstack sein; erstelle gerne GUIs aber tüftle gerne auch an Algorithmen) und angenehme Arbeitswese (nicht übel viel Stress, aber auch keine Langeweile); Abwechslung wäre auch sehr gut (langatmige Projekte deprimieren und demotivieren mich)
  • ich kann mir auf Dauer auch vorstellen, zB nach 2-3 Jahren den Bereich oder die Tätigkeit zu wechseln (Consulting, IT-Beratung, irgendwas mit Kundenterminen, etc). Ich war vor dem Studium auch mal im Außendienst. Bin zwar n ruhiger Typ und kein typischer Drücker-Verkäufer, allerdings liebe ich es rumzukommen, auch mal Kontakt zu Menschen zu haben und nicht den ganzen Tag am Scheibtisch gefesselt zu sein.
  • große Konzerne wo man für jede kleine Aufgabe eine Genehmigung braucht und den ganzen Tag fast nur Zeit totschlägt und Alibi-Arbeit macht will ich auf keinen Fall (hatte ich bisher genug)
  • die täglichen langweilligen Meetings in großer Runde wo man Kamera anmachen muss stressen mich übel, aber na ja, wenn's sein muss.

Ich hätte ein Angebot von einer kleinen Firma, wo ich viele Aufgaben übernehmen kann, was durchaus interessant wäre, aber leider liegt das in einer Stadt wo die Mieten sehr teuer sind und ich ungern dahin will.

In einer anderen Stadt wo die Mieten gut sind, hätte ich ein Angebot für C# in einer großen Firma (laut Kununu viel überstunden und klassisch patriarchalisch aufgebaut, wo man gesagt bekommt vom Chef was genau zu tun ist und man sich fügen muss und durchbeißen muss; dafür gutes Geld und viele Benefits) oder für Python Entwickler in einer mittelgroßen Firma (schlechtere Bezahlung aber bessere WorkLife Balance).

Für die Python/ML Stelle fühle ich mich aktuell garnicht so wirklich qualifiziert (da kein Doktor oder Master in dem Bereich vorhanden). Außerdem wäre es eine Einschränkung im Lebenslauf, da Python Entwickler aktuell seltener gefragt sind als C# Entwickler.

So ganz ideal ist bisher kein Angebot, aber es sollte zumindest kein totaler Reinfall sein.

Falls es hier ITler gibt, rein vom Bauchgefühl her, wozu würdet ihr mir raten?

C Sharp, künstliche Intelligenz, Programmiersprache, Python, Softwareentwickler, Softwareentwicklung, ml, .net-Framework, Software-Entwickler, maschinelles Lernen
Kann man mit der BASIC-Programmiersprache eine KI erstellen?

Hallo,

es geht um folgendes, ich würde gerne eine KI konstruieren die als Chatbot fungieren soll. Dabei würde ich gerne die Techniken der Künstlichen Intelligenz einsetzen. D.h.: zum Teil voreingegebene Sätze oder Satzstrukturen, und wann sie halt ausgeführt werden, (zum Beispiel bei erwähnen von Wörtern die dazu passen würden), aber eben nicht ganz.

Die KI soll nicht nur Sätze abrufen, die sie in der Datenbank hat, sondern auch Rückschlüsse ziehen können aus Tatsachen, oder Fakten die in der Unterhaltung vorkamen. Ein gutes Beispiel für mein Vorhaben ist das Programm ELIZA das von Joseph Weizanbaum programmiert worden ist. Allerdings würde sich mein Programm darin unterscheiden, dass es aus Unterhaltungen lernt, und somit die Datenbank um Fakten oder Tatsachen ergänzt, die dann in zukünftigen Unterhaltungen einbeziehen kann, (falls notwendig). Kann man das in der Progammiersprache BASIC machen? Ich weiß, dass es auch andere Programmiersprachen gibt, und es auch andere Methoden gibt (z.B.: Python; Maschinelles Lernen; Neuronale Netze) um dem Computer etwas beizubringen.

Aber ich dachte mir, dass so ein Programm oder ähnliches in BASIC zu programmieren, wäre eine gute Herausforderung. Die Frage ist nur ob dies möglich ist, oder ob Einschränkungen in dieser Programmiersprache vorhanden sind, die so etwas unmöglich machen.

Vielen Dank im Vorraus für die Antwort.

Computer, programmieren, Informatik, Programmiersprache, Chatbot, maschinelles Lernen

Meistgelesene Fragen zum Thema Maschinelles Lernen