Heuristik (x/y Achse - Verfahren)

maekkesmaex

Mitglied
Hallo zusammen,
ich stehe gerade voll auf dem Schlauch und komme nicht weiter. :noe:

Ich habe die Aufgabe mit Hilfe eines Stanz-Tools die Stanzabfolge zu bestimmen.
Das heißt gewünscht ist "geschlängelt" die Punkte abzufahren.
(Zuerst ist x-Richtung und dann eins nach oben bzw. unten in y-Richtung; das gilt jeweils für die "Punktgruppen")

Momentan bin ich noch am Anfang und ermittle vom Ursprung aus den Punkt der am kürzesten davon entfernt ist.

1S7EiiOQi5uE.png


Mein Startpunkte wäre somit links oben, wie im Bild zu sehen ist.
Derzeit ist auch die Reihenfolge anders, das Ziel ist es wie gesagt geschlängelt das Ganze abzufahren.

Java:
public void pivotHeuristic() 
		{			
			double[] distances = new double[order.length];
			float shortest = Float.MAX_VALUE;
			
			int min_x = vias[0][0];
			int min_y = vias[0][1];
			int start = 0;

			for(int i=0; i<order.length; i++)
			{
				float dx = vias[order[i]][0];
				float dy = vias[order[i]][1];

				distances[i] = Math.sqrt(dx*dx + dy*dy);
				if(distances[i] < shortest)
				{
					shortest = (float) distances[i];
					min_x = vias[order[i]][0];
					min_y = vias[order[i]][1];
					start = i;
				}
			}
			
			for(int i=0; i<order.length; i++)
			{
				
			}
			
			System.out.println("Vektorlänge: " + shortest);
			System.out.println("x-Wert: " + min_x + ", " + "y-Wert: " + min_y);
			
			int[] newSolution = new int[order.length];
			newSolution[0] = start;			
			
		}

Ich glaube auch, dass das ganze nicht so schwer ist. Jedoch fehlt mir die zündende Idee. :idea:
Wäre nett, wenn jmd. in irgendeiner Weise helfen kann.
Vielen Dank im Voraus.

Lg maekkesmaex
 

Landei

Top Contributor
Das ist so ähnlich wie das Rundreise-Problem (TSP - Travelling Salesman Problem), nur dass du am Ende nicht wieder zum Anfangspunkt musst. Dafür gibt es schon gute Heuristiken, google mal. Der Vorteil zu einer eigenen Heuristik ist, dass es auch mit anderen Mustern gut zurechtkommt, d.h. null Änderungsaufwand bei Produktionsumstellung.
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Ja, eine dieser Heuristiken ist eben "gehe immer zum nächsgelegenen, unbesuchten Punkt". Aber wenn Das Muster eben z.B.
Code:
X      X      X      X

   X       X      X      X
ist, und man dann ganz gezielt NICHT zum nächstgelegenen will, sondern erstmal Horizontal (oder allgemeiner: Wenn es gar nicht um ein TSP geht, sondern nur um das Umsetzen einer vorgegebenen Regel) muss man sich was überlegen...
 

maekkesmaex

Mitglied
Also leider ist das nicht immer der Fall, ingesamt sind es um die 2000 Punkte.

X.22=5.881 Y.22=-48.470
X.23=6.107 Y.23=-48.079
X.24=6.333 Y.24=-48.470
X.25=6.558 Y.25=-48.079
X.26=6.784 Y.26=-48.470
X.27=7.010 Y.27=-48.079
X.28=7.235 Y.28=-48.470
X.29=7.461 Y.29=-48.079
X.30=7.686 Y.30=-48.470
X.31=7.912 Y.31=-48.079
X.32=8.138 Y.32=-48.470

Hier mal ein paar Beispiel-Punkte aus dem Array.
(Wobei das aber jetzt noch der Zick-Zack-Weg ist.)

In der Regel sind sie aber schon "fast" rasterförmig angeordnet.
 

Landei

Top Contributor
Ja, eine dieser Heuristiken ist eben "gehe immer zum nächsgelegenen, unbesuchten Punkt". Aber wenn Das Muster eben z.B.
Code:
X      X      X      X

   X       X      X      X
ist, und man dann ganz gezielt NICHT zum nächstgelegenen will, sondern erstmal Horizontal (oder allgemeiner: Wenn es gar nicht um ein TSP geht, sondern nur um das Umsetzen einer vorgegebenen Regel) muss man sich was überlegen...

Aber TSP würde hier eine gute Lösung liefern:
Code:
X------X------X------X
  \                   \
   X------X------X-----X
 

maekkesmaex

Mitglied
Ich hab es jetzt hinbekommen das linke obere Punkte-Viereck erfolgreich auszulesen. (siehe Screenshot, ganz oben)
Jetzt hab ich eine Frage, ob ich die Punkte so anhand ihrer Koordinaten anordnen kann, dass Sie so angeordnet werden:

X -> X -> X -> X
X <- X <- X <- X
X -> X -> X -> X
X <- X <- X <- X

Gibt es da schon vorhandene Methoden oder muss man sich das wieder über for-schleifen zusammenwurschteln?

Vielen Dank für Hilfe im Voraus!
 

Neue Themen


Oben