Frage

Ich versuche, ein 5x5 -Gitter mit 2 Ausgängen zu erstellen und einige Wände hineinzugeben. Mit anderen Worten, ich möchte ein Labyrinth oder ein Labyrinth erstellen.

Ich habe mich gefragt, ob es eine Möglichkeit gibt, eine Grenzlinie dicker zu machen oder die Farbe von nur einer Seite eines Patchs zu ändern.

Ich möchte nur einen Agenten hineinbringen und ihn den Ausgang finden lassen, indem er ihn mit einigen Punkten belohnt. (Q-Learning-Algorithmus)

Hat jemand eine Idee?

Wenn dies nicht möglich ist, können Sie bitte einen vergleichbaren Code vorschlagen?

Hier ist ein Beispiel für das, was ich erstellen möchte:

alt text

Wie gefragt, habe ich einige meiner Arbeiten gepostet (obwohl es ineffizient erscheint, dies manuell getan zu haben). Hier ist, was ich bisher habe:

breed [frame frames]
to setup
  ca
    ask patches [ set pcolor white]

ask patch -7 8 [ set pcolor black]
ask patch -6 8 [ set pcolor black]
ask patch -5 8 [ set pcolor black]
ask patch -4 8 [ set pcolor black]
ask patch -3 8 [ set pcolor black]
ask patch -2 8 [ set pcolor black]
ask patch -1 8 [ set pcolor black]
ask patch 1 8 [ set pcolor black]
ask patch 0 8 [ set pcolor black]
ask patch 2 8 [ set pcolor black]
ask patch 3 8 [ set pcolor black]

ask patch 6 8 [ set pcolor black]
ask patch 7 8 [ set pcolor black]
ask patch 8 8 [ set pcolor black]

ask patch -7 7 [ set pcolor black]
ask patch -7 6 [ set pcolor black]
ask patch -7 5 [ set pcolor black]
ask patch -7 4 [ set pcolor black]
ask patch -7 3 [ set pcolor black]
ask patch -7 2 [ set pcolor black]
ask patch -7 1 [ set pcolor black]
ask patch -7 0 [ set pcolor black]
ask patch -7 -1 [ set pcolor black]
ask patch -7 -2 [ set pcolor black]
ask patch -7 -3 [ set pcolor black]
ask patch -7 -4 [ set pcolor black]
ask patch -7 -5 [ set pcolor black]
ask patch -7 -6 [ set pcolor black]
ask patch -7 -7 [ set pcolor black]

ask patch -7 -7 [ set pcolor black]
ask patch -6 -7 [ set pcolor black]
ask patch -5 -7 [ set pcolor black]
ask patch -4 -7 [ set pcolor black]
ask patch -3 -7 [ set pcolor black]
ask patch -2 -7 [ set pcolor black]
ask patch -1 -7 [ set pcolor black]
ask patch 1 -7 [ set pcolor black]
ask patch 0 -7 [ set pcolor black]
ask patch 2 -7 [ set pcolor black]
ask patch 3 -7 [ set pcolor black]
ask patch 4 -7 [ set pcolor black]
ask patch 5 -7 [ set pcolor black]

ask patch 8 -7 [ set pcolor black]

ask patch 8 8  [ set pcolor black]
ask patch 8 7  [ set pcolor black]
ask patch 8 6 [ set pcolor black]
ask patch 8 5 [ set pcolor black]
ask patch 8 4 [ set pcolor black]
ask patch 8 3 [ set pcolor black]
ask patch 8 2 [ set pcolor black]
ask patch 8 1 [ set pcolor black]
ask patch 8 0 [ set pcolor black]
ask patch 8 -1 [ set pcolor black]
ask patch 8 -2 [ set pcolor black]
ask patch 8 -3 [ set pcolor black]
ask patch 8 -4 [ set pcolor black]
ask patch 8 -5 [ set pcolor black]
ask patch 8 -6 [ set pcolor black]

ask patch -6 5 [ set pcolor black]
ask patch -5 5 [ set pcolor black]
ask patch -4 5 [ set pcolor black]
ask patch -4 4 [ set pcolor black]
ask patch -4 3 [ set pcolor black]
ask patch -4 2 [ set pcolor black]
ask patch -4 -1 [ set pcolor black]
ask patch -4 -2 [ set pcolor black]
ask patch -4 -3 [ set pcolor black]
ask patch -4 -4 [ set pcolor black]
ask patch -5 -4 [ set pcolor black]
ask patch -6 -4 [ set pcolor black]
ask patch -1 7 [ set pcolor black]
ask patch -1 6 [ set pcolor black]
ask patch -1 5 [ set pcolor black]
ask patch -1 4 [ set pcolor black]
ask patch -1 3 [ set pcolor black]
ask patch -1 2 [ set pcolor black]
ask patch 2 5 [ set pcolor black]
ask patch 2 4 [ set pcolor black]
ask patch 2 3 [ set pcolor black]
ask patch 2 2 [ set pcolor black]
ask patch 5 5 [ set pcolor black]
ask patch 5 4 [ set pcolor black]
ask patch 5 3 [ set pcolor black]
ask patch 5 2 [ set pcolor black]
ask patch 5 1 [ set pcolor black]
ask patch 5 0 [ set pcolor black]
ask patch 5 -1 [ set pcolor black]
ask patch 6 5 [ set pcolor black]
ask patch 7 5 [ set pcolor black]
ask patch -1 -1 [ set pcolor black]
ask patch 0 -1 [ set pcolor black]
ask patch 1 -1 [ set pcolor black]
ask patch 2 -1 [ set pcolor black]
ask patch 3 -1 [ set pcolor black]
ask patch 4 -1 [ set pcolor black]
ask patch -1 -2 [ set pcolor black]
ask patch -1 -3 [ set pcolor black]
ask patch -1 -4 [ set pcolor black]
ask patch 0 -4 [ set pcolor black]
ask patch 1 -4 [ set pcolor black]
ask patch 2 -4 [ set pcolor black]
ask patch 3 -4 [ set pcolor black]
ask patch 4 -4 [ set pcolor black]
ask patch 5 -4 [ set pcolor black]
end

Auch dies ist eine ineffiziente Methode. Wenn ich mit dieser Methode fortfahren würde, wie kann ich 4 Patches in 1 zusammenführen, damit ich meinen Agenten im Inneren eingeben und zentriert sein kann?

Danke im Voraus.

War es hilfreich?

Lösung

Um die Kante eines Patchs hervorzuheben, müssen Sie eine Schildkröte verwenden. Machen Sie eine Schildkrötenform, die nur aus einer Linie besteht, und erstellen Sie dann eine Schildkröte mit dieser Form und positionieren Sie sie entsprechend. Sie möchten wahrscheinlich eine separate Rasse von Schildkröten verwenden (nennen Sie sie "Wände").

Sobald Sie die Schildkröte erstellt haben, können Sie sie entweder bei sich behalten, wenn Sie später etwas damit tun möchten, oder Sie können "Stempelstempel" machen lassen, um es zu töten, aber zuerst ein Bild von sich selbst in der Zeichnung hinter sich lassen .

Andere Tipps

Versuchen Sie den Code in den Code in Dieses Labyrinthemacher Netlogo-Modell. Die Grundidee für den Algorithmus besteht darin, einen zufälligen Wanderer zu verwenden, der Wände (Pfad) baut, während er geht. Als er eine Sackgasse erreicht, wird er an einen früheren Ort teleportiert, an dem er eine Kurve nahm.

Habe Spaß! Es gibt natürlich a Wikipedia -Eintrag in Maze -Generierungsalgorithmen Wenn Sie tiefer tauchen möchten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top