WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

lineare Optimierung und ganzzahlige Nebenbedingung

 

Gaussian65
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 22.02.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.02.2020, 18:49     Titel: lineare Optimierung und ganzzahlige Nebenbedingung
  Antworten mit Zitat      
Hallo
Ich bin gerade neu hier und habe folgendes Problem bezüglich der linearen Optimierung mit Matlab.

Mein Problem kommt aus der Metallverarbeitung und zwar möchte ich berechnen welche Teillängen ich aus einer Gesamtlänge sägen muss um möglichst wenig Verschnitt zu bekommen.

Beispiel:
Die Länge eines Materials (zum Beispiel ein Rundstahl) beträgt in der Regel 6000mm und nun muss ich folgende Teillängen absägen:

6x2520mm
12x1455mm
12x350mm

Welche Längen muss ich in welcher Reihenfolge absägen um möglichst wenig Verschnitt zu haben. Ich bin schon ein ganzes Stück weiter und habe mir alle möglichen Kombinationen in einer Matrix K berechnen lassen. Das sieht dann so aus:

0 4 0 5820 180
1 2 1 5780 220
0 3 4 5765 235
.
.
.

Diese Matrix wird zeilenweise gelesen. Der erste Eintrag ist die Anzahl der Teillänge 2520mm, der zweite Eintrag die Anzahl der Teillänge 1455mm und der dritte Eintrag die Anzahl der Teillänge 350. Der vierte Eintrag ist dann die Summe der Teillängen und im fünften Eintrag der übrige Rest, also 6000-5820=180. Also 0*2520mm+4*1455mm+0*350mm=5820mm

Nun die eigentliche Frage Very Happy Very Happy

Wie muss ich den Befehl linprog (oder auch ein anderer Very Happy) verwenden um den Verschnitt möglichst gering zu halten. Als Nebenbedingung gilt außerdem das Die Mengen der einzelnen Teillängen eingehalten wird und mein Ergebnis natürlich positiv und ganzzahlig sein muss. Ich hoffe ihr versteht mein Problem, wenn nicht einfach schreiben was unklar ist Very Happy. Danke schonmal

Forum_Schnittmatrix.png
 Beschreibung:

Download
 Dateiname:  Forum_Schnittmatrix.png
 Dateigröße:  14.48 KB
 Heruntergeladen:  486 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.02.2020, 19:05     Titel:
  Antworten mit Zitat      
Hallo,

du schreibst ja, dass es ein lineares Optimierungsproblem ist. Wenn dem so ist, dann lässt es sich in die von intlinprog erforderliche Form bringen und lösen.

Für konkretere Hilfe müsste man wissen:
* was genau sind die Größen, die variiert werden können
* wie errechnet sich aus diesen Größen die Zielfunktion

Um die benötigten Teile zu bekommen, brauchst du ja wenn ich das richtig sehe mehrere Stücke, die in der optimalen Lösung vermutlich nicht gleich verarbeitet werden. Inwiefern hast du das berücksichtigt?

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Gaussian65
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 22.02.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.02.2020, 19:14     Titel:
  Antworten mit Zitat      
Danke für die schnelle Antwort.
Das mit der Zielfunktion ist so eine Sache. ich habe ehrlich gesagt keine Ahnung was die Zielfunktion ist.

ZUm Schluss muss ich wissen wie viele Längen von 6000 ich brauche und wie die einzelnen Schnittmuster aussehen, alos zum Beispiel muss ich 2x die erste Kombination absägen, 3x die dritte usw. um alle meine Teillängen zu bekommen und den Verschnitt so gering wie möglich zu halten. Also ist die Größe die variiert wird ja die Anzahl der einzelnen Schnittmöglichkeiten wie gerade beschrieben.

Der Verschnitt soll minimiert werden unter der Nebenbedingung das die Mengen am Ende übereinstimmen und am Ende nicht steht Schnittmuster 1 muss 1,5 mal gesägt werden. Das macht kein Sinn. Ich habe das alles mal mit dem Excel Solver probiert und das funktioniert sehr gut, jedoch will ich nicht immer die Matrix in Excel exportieren und das berechnen lassen. Das soll alles mit Matlab funktionieren Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.02.2020, 19:27     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Ich habe das alles mal mit dem Excel Solver probiert und das funktioniert sehr gut

Was genau machst du denn mit "dem Excel Solver"? Auch Excel errät ja nicht, was die Problemformulierung.
Hänge das doch mal an, im Zweifelsfall gezippt.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Gaussian65
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 22.02.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.02.2020, 13:44     Titel:
  Antworten mit Zitat      
Ich habe im Anhang die Excel-Datei angehängt. Zusätzlich habe ich vom Solver Fenster und von der Excel Tabelle Screenshots gemacht.

Forum_Übersicht.png
 Beschreibung:

Download
 Dateiname:  Forum_Übersicht.png
 Dateigröße:  92.89 KB
 Heruntergeladen:  460 mal
Forum_Solver.png
 Beschreibung:

Download
 Dateiname:  Forum_Solver.png
 Dateigröße:  41.68 KB
 Heruntergeladen:  489 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Gaussian65
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 22.02.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.02.2020, 13:47     Titel:
  Antworten mit Zitat      
Ich habe die Excel-Datei vergessen Very Happy

Schnittproblem_funktioniert_Bsp_Reifenmantellager.zip
 Beschreibung:

Download
 Dateiname:  Schnittproblem_funktioniert_Bsp_Reifenmantellager.zip
 Dateigröße:  11.37 KB
 Heruntergeladen:  477 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.02.2020, 15:36     Titel:
  Antworten mit Zitat      
Hallo,

dann hast du doch alles, was du brauchst.
* die Größen, die variiert werden können: die Anzahl der jeweiligen Aufteilungen
* die Zielfunktion: die Summe davon
* die lineare Nebenbedingung: dass mit den Aufteilungen die benötigte Anzahl Teile erstellt wird. Du hast das in Excel als Gleichungs-NB verwendet, ich würde es als Ungleichung ansehen. Zuviel schadet ja nicht.

Das musst du in intlinprog einsetzen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Gaussian65
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 22.02.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.03.2020, 18:20     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich schaue gerade in der Matlab Dokumentation, aber leider kriege ich es immer noch nicht hin. Ich weiß leider nicht was ich für die einzelnen Vektoren/Matrizen (x, A, Aeq,......)einsetzten muss. Könntest du mir vielleicht helfen ? Very Happy

Gruß
Gaussian65

linprog.png
 Beschreibung:
Hier der Screenhot aus der Matlab Documentation

Download
 Dateiname:  linprog.png
 Dateigröße:  136.21 KB
 Heruntergeladen:  471 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.03.2020, 20:40     Titel:
  Antworten mit Zitat      
Hallo,

wenn du zeitnah auf Antworten reagierst, hat es den großen Vorteil, dass man sich nicht neu hineindenken muss.

x: das ist das Ergebnis. Da musst du also gar nichts einsetzen. Empfehlung an der Stelle, sich mal mit den Grundlagen von MATLAB auseinanderzusetzen.
f: ein Vektor von 1en derselben Länge wie die Anzahl von Kombinationen
intcon: 1:(diese Anzahl)
A: [], da keine Ungleichungen
b: [], da keine Ungleichungen
Aeq: die Matrix mit den Kombinationen, in Excel B14:AT16
beq: C5:C7 als Spaltenvektor
lb: ein Vektor von 0en derselben Länge wie die Anzahl von Kombinationen
ub: ein Vektor mit oberen Schranken für diese Anzahlen, alternativ []

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.