Problem mit Algorithmus

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo erstmal,

und zwar habe ich ein kleines Proble ich möchte ich ein Job Shop Problem mittels eines Branch&Bound Algorithmus lösen.
Das JSP könnte wie folgt aussehen 4 Maschinen 4 Jobs mit jeweils 4 tasks.

Was brauch ich jetzt alles zum Lösen reichen 3 Klassen?

Ich würde class Task, class Machine und class schedule erstellen. class Task müsste beinhalten eine tasklist für jeden task damit er weiß ob sein Vorgänger task abgeschlossen wurde, eine task id zur Identifikation des tasks, eine Zeitdauer, Anfangs- und Endzeit.

class Machine brauch nur eine id zu enthalten, welche dann an den task, wenn er auf der Maschine abgearbeitet wird, übergeben wird. Und eine Möglichkeit die Maschine zu sperren, da nur ein tasks pro Maschine bearbeitet werden kann. Am besten boole?

class schedule würde dann die abgearbeiteten tasks enthalten bzw. bräuchte ich ja dann auch eine Liste aller noch unbearbeiteten tasks class unscheduled?

Der B&B Algorithmus soll solange tasks nehmen und auf den Maschinen anordnen, dass diese möglichst mit guter Auslastung laufen.

Methoden brauch ich eine die prüft ob die Maschine frei ist, eine die tasks aus der Liste der unfertigen nimmt sie auf die Maschine bringt und gleichzeitig aus der Liste der unfertigen streicht und in die Liste der fertigen kopiert damit ich, wenn alle tasks durch sind, ich einen Plan habe an dem ich die Gesamtdauer ablesen kann.

In die main Methode würde ich eine Rekursion einbauen die immer wieder neue Pläne erstellt und sie mit der besten Gesamtdauer vergleicht also wäre das meine obere Grenze.
Der aktuell beste Plan müsste dann immer abgespeichert werden und mit dem momentan durchlaufenden Plan verglichen werden.

Wie verhindere ich jetzt, dass immerwieder der gleiche Plan probiert wird?
Ich muss ja irgendwie verhindern, dass immerwieder der gleiche Plan genommen wird oder das es irgendwann wieder von vorn losgeht. Also muss ich irgendwie abspeichern, welcher Lösungsraum schon durchlaufen ist.

Wie funktioniert das mit der unteren Grenze? Wie kann ich ein Paramter einbauen sodass ich zwischen Tiefen- und Breitensuche wechseln kann?

Grüße Torsten
 
G

Guest

Gast
Anonymous hat gesagt.:
Das JSP könnte wie folgt aussehen 4 Maschinen 4 Jobs mit jeweils 4 tasks.
Könntest du mal ein Beispiel machen, dass nicht gar so abstrakt wirkt.

Es gibt 4 Maschinen, die alle einen unterschiedlichen Task erfüllen?

Ein Job(Auftrag) muß alle 4 Maschinen durchlaufen?

Die Reihenfolge (der Tasks) in der ein Job(Auftrag) abgearbeitet wird ist egal?

Ein Task dauert eine bestimmte Zeit?

Im gegensatz zu

Jede Maschine, kann jeden Task erfüllen braucht aber eine Unterschiedliche Zeit für die Bearbeitung?

Die Maschinen verursachen unterschiedliche Kosten?

...
 

Torstinho

Mitglied
Okay, war von mir schlecht beschrieben. Ich versuchs mal detailiert zu bescheiben.

Eine Anzahl an Maschinen "m" die unterschiedliche Arbeitsschritte ausführen können zB Drehmaschine, Säge, Fräsemaschine usw.

Eine Anzahl an Jobs/Aufträgen die idR sich von ihren Ablauf her von einander unterscheiden Auftrag1 m1->m3->m2->m4; Auftrag2 m1->m2->m3->m1
An sich muss der Job nicht zwangsläufig über alle Maschinen, aber er besteht aus tasks, das sind die Arbeitsschritte, welche in einer vorgegeben Reihenfolge abzuarbeiten sind (als Bsp. man kann erst zum Schluss einen Henkel an eine Vase anbringen praktisch eine technologische Reihenfolge)

Jede task benötigt eine gewisse Zeit zur Bearbeitung und eine Task kann nur von einer Maschine und eine Maschine kann nur eine Task gleichzeitig bearbeiten.


Man kann sich jetzt leicht vorstellen, dass schnell Probleme entstehenl, da die tasks unterschiedlich lang sind oder verschiedene Jobs als Starttask auf die gleiche Maschine wollen.

Ich möchte jetzt alle Möglichkeiten, die es gibt, die tasks der Jobs in einem Plan anzuordnen, durchlaufen und den besten als Lösung abspeichern.

Im Prinzip läuft es das erste mal durch und gibt einen gültigen aber noch nicht optimalen Plan aus. Die Dauer des ersten Plans wird die erste obere Schranke. Jetzt wird bei weiteren Durchlaufen neuer Pläne immer geschaut ob man beim Anordnen drüber kommt, wenn ja, wird der Zweig des Lösungsbaumes verworfen, wenn nicht wird der neue bessere Plan abgespeichert und als neue obere Schranke benutzt. Der Algorithmus muss nun solange laufen bis alles überprüft wurde und dann soll er abbrechen und die beste Lösung ausgeben.

Ja, die Maschinen verursachen unterschiedliche Kosten.
 
G

Gast

Gast
Okay, das ist ja jetzt schon mal ein Fortschritt.

Sagt dir der Begriff "kritischer Pfad" etwas?

Einfacher gesagt, könntest du dir alle Jobs anschauen und die Zeiten berechnen die jeder Job braucht. Das Maximum das sich hier ergibt ist das kleinstmögliche Minimum der Gesamtzeit
Bspl:

JOB1: task1 (4), task2(10), task4(6)
Ergibt 20
JOB2: task3 (4), task1(20)
Ergibt 24

Daraus kannst du schonmal ableiten das ein Schedule der eine Zeit von 24 Ergibt optimal sein muß. Somit hättest du ein weiteres Abbruchkriterium.

Ein weiteres Abbruchkriterium könnte die Zeit sein die eine Maschine benötigt um alle seine Tasks abarbeiten zu können.
oberes Beispiel:
Maschine1 = 4+20
Maschine2 = 10
Maschine3 = 4
Maschine4 = 6

Minimale Zeit in der alle Jobs abgearbeitet werden können 24
Also ein weiteres Abbruchkriterium.

Ich würde eine Klasse Job(Auftrag) nehmen die die Liste abzuarbeitender Tasks enthält.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Klassen Algorithmus für das folgende Problem entwickeln? Allgemeine Java-Themen 30
M Salesman Problem - Bruteforce Algorithmus Allgemeine Java-Themen 23
B Algorithmus - Project Euler Problem 18 Allgemeine Java-Themen 2
C Algorithmus Problem in Minesweeper Allgemeine Java-Themen 5
V Problem mit A* Pathfinder-Algorithmus Allgemeine Java-Themen 2
S Algorithmus Problem. Rechtecke effizient auf Spielfeld anordnen. Allgemeine Java-Themen 7
P Problem mit A*-Algorithmus Allgemeine Java-Themen 12
T Problem RSA-Algorithmus in Java? Allgemeine Java-Themen 2
krgewb Problem mit Umlauten und Eszett bei InputStream Allgemeine Java-Themen 3
Max246Sch Backtracking Problem Box Filler Allgemeine Java-Themen 6
NightVision402 VisualVM Startskript Problem Allgemeine Java-Themen 3
javaBoon86 Email Server Connection Problem Allgemeine Java-Themen 1
F Problem mit PDFBOX Library Allgemeine Java-Themen 1
A Java modul Problem Allgemeine Java-Themen 4
D Read JSON File Problem Allgemeine Java-Themen 9
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
J Problem mit JasperReports Allgemeine Java-Themen 8
M log4j Problem mit jlink Allgemeine Java-Themen 19
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
P Selenium . getText Problem Allgemeine Java-Themen 9
A Jar zu Exe Problem Allgemeine Java-Themen 13
sserio Variablen Liste erstellt und ein Problem mit dem Index Allgemeine Java-Themen 6
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
A Thread.sleep Problem Allgemeine Java-Themen 2
A Problem bei der Nachbarschafttest Allgemeine Java-Themen 11
Splayfer Problem: no main manifest attribute Allgemeine Java-Themen 3
G javamail Problem beim Empfangen von Nachrichten Allgemeine Java-Themen 3
Splayfer JDA Problem mit MessageCounter Allgemeine Java-Themen 0
Splayfer Problem mit BufferedWriter Allgemeine Java-Themen 3
F Streams als Alternative für dieses Problem ? Allgemeine Java-Themen 15
N Maven Problem mit Datenbanktreiber (H2 Embedded) Allgemeine Java-Themen 12
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
B Einfach Elemente zweier Arraylisten kreuz und quer vergleichen, min und max Problem? Allgemeine Java-Themen 16
C ArrayList Problem Allgemeine Java-Themen 3
kev34 nim-Spiel problem Allgemeine Java-Themen 1
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
G Welches Problem besteht bei den Typparametern? Allgemeine Java-Themen 5
temi Problem mit Aufrufreihenfolge bei Vererbung Allgemeine Java-Themen 3
Sumo_ow "ArrayIndexOutofBoundsException: 2" Array Problem Allgemeine Java-Themen 6
T PIM basierend auf netbeans via AnyDesk Problem Allgemeine Java-Themen 3
xGh0st2014 Problem mit Java Array Allgemeine Java-Themen 1
Kirby.exe Verständnis Problem bei Rucksack Problem Allgemeine Java-Themen 6
B Eclipse-Lombok-Problem Allgemeine Java-Themen 19
I Input/Output ObjectOutputStream - Problem Allgemeine Java-Themen 7
1 Multiple Choice Knapsack- Problem Allgemeine Java-Themen 2
kodela Problem mit strukturiertem Array Allgemeine Java-Themen 18
E Problem mit Gridlayout und Button Allgemeine Java-Themen 2
A Array Problem Allgemeine Java-Themen 8
bueseb84 Problem Allgemeine Java-Themen 0
S Problem mit Arrays Allgemeine Java-Themen 1
D Nullpointer Exception Problem Allgemeine Java-Themen 5
B Problem mit meinen Klassen Allgemeine Java-Themen 6
A HashMap Methode "get()"-Problem Allgemeine Java-Themen 28
J Problem beim Umstellen auf Java jdk 13 Allgemeine Java-Themen 3
J Problem bei Install java 13 Allgemeine Java-Themen 3
X Profitable Reise Problem Allgemeine Java-Themen 32
A Problem beim öffnen von Java-Installern Allgemeine Java-Themen 1
Dann07 Problem mit JavaMail API Allgemeine Java-Themen 26
J Problem beim Generischen Klassen und Interfaces Allgemeine Java-Themen 2
J Clear-Problem Allgemeine Java-Themen 10
B Problem zu einem Java Projekt Allgemeine Java-Themen 6
S JFileChooser Problem Allgemeine Java-Themen 4
M Traveling Salesman - MST Heuristik Problem Allgemeine Java-Themen 4
J Traveling Salesman Problem Allgemeine Java-Themen 14
E Java Editor Problem mit 2er Exceptions Allgemeine Java-Themen 12
C code oder Bibliotheken für 2-Center Problem Allgemeine Java-Themen 4
S Methoden Problem mit NullPointerException Allgemeine Java-Themen 9
Javafan02 Problem mit if-clause Allgemeine Java-Themen 17
J Lombok Problem mit Konstruktoren bei Verberbung Allgemeine Java-Themen 1
kodela Event Handling Problem mit der Alt-Taste Allgemeine Java-Themen 16
W Threads Problem Allgemeine Java-Themen 15
D (Verständnis-)Problem mit Unterklasse Allgemeine Java-Themen 4
S Problem mit Generic bei unmodifiableCollection Allgemeine Java-Themen 4
S jserialcomm Problem Allgemeine Java-Themen 1
Flynn Thread-Problem... Allgemeine Java-Themen 2
J Generische Interface - Problem Allgemeine Java-Themen 3
G Problem beim GUI Allgemeine Java-Themen 9
L Applet Problem "security: Trusted libraries list file not found" ? Allgemeine Java-Themen 7
A OOP Problem beim Berechnen der größten Fläche eines Ringes Allgemeine Java-Themen 19
T Problem mit externen Datenbankzugriff über SSH Tunnel Allgemeine Java-Themen 4
F Problem beim Einlesen einer Textdatei Allgemeine Java-Themen 12
S Java OpenOffice Problem mit Windows-Benutzerwechsel Allgemeine Java-Themen 19
K Threads RAM Problem Allgemeine Java-Themen 20
P Operatoren Problem mit Zähler in recursiver Schleife Allgemeine Java-Themen 2
C Int Problem Allgemeine Java-Themen 8
C J2V8 NodeJs Java Bride Problem und Frage!?!? Allgemeine Java-Themen 1
J Problem bei Hashmap Key-Abfrage Allgemeine Java-Themen 4
C Webseiten Programm problem Allgemeine Java-Themen 5
M LocalDate Problem Allgemeine Java-Themen 4
J "Problem Objektorientierung" Allgemeine Java-Themen 20
geekex Problem Meldung! Was tun?! Allgemeine Java-Themen 19
T Klassen Override Problem Allgemeine Java-Themen 7
L Unbekanntes Problem Allgemeine Java-Themen 1
FrittenFritze Problem mit einer JComboBox, Event temporär deaktivieren Allgemeine Java-Themen 11
Blender3D Java Swing Programm Windows 10 Autostart Problem Allgemeine Java-Themen 2
F HTTPS Zertifikat Problem Allgemeine Java-Themen 3
M OpenCV KNearest Problem Allgemeine Java-Themen 0
Tommy Nightmare Project Euler: Problem 22 Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben