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

Kombinierung von Bauteilen

 

Harald
Forum-Meister

Forum-Meister


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

Zitat:
Wenn die Kosten für die Bauteile möglichst nahe an meinem Budget liegen oder sie im besten fall genauso hoch sind wie mein Budget.

Mit anderen Worten, du willst ein Optimierungsproblem lösen?

Zitat:
kann ich hinterher einen gesamtausfall zuordnen, da jedes genommene Bauteil einen Ausfall erzeugt.

Was bedeutet das in Formeln?

Zitat:
Und dann können die Kombinationen gefiltert werden

... wozu du erst alle Kombinationen erzeugen müsstest, was bei großen Bauteilzahlen nicht möglich sein wird.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen


General_Griboz
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 66
Anmeldedatum: 05.04.17
Wohnort: ---
Version: R2016b
     Beitrag Verfasst am: 18.05.2017, 09:02     Titel:
  Antworten mit Zitat      
Moin Harald,

Zitat:
Was bedeutet das in Formeln?


Naja ne Formel gibt es nicht wirklich, um das zu berechnen. Jedem Bauteil sind zwei Ausfallwerte zugeordnet (im Prinzip eine Eigenschaft). Einmal der Ausfall wenn das Bauteil als Ersatzteil vorliegt und einmal der Ausfall wenn das Bauteil nicht als Ersatzteil vorliegt. Deswegen würde ich sagen ist es eine einfach Addition von Werten einfach. Und es wäre so, wenn das Bauteil in der Kombination vorkommt, hat es den Ausfall mit Ersatzteil und alle anderen Bauteile, die übrig bleiben, haben den Ausfall ohne Ersatzteil und damit kann dann am Ende ein Gesamtausfall berechnet werden.

Zitat:
Mit anderen Worten, du willst ein Optimierungsproblem lösen?


Ja es ist ein Optimierungsproblem, bisher habe ich aber keinen Algorithmus gefunden, der mein Problem lösen kann, denn meiner Meinung ist das Problem nicht linear zu lösen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.05.2017, 09:11     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Ja es ist ein Optimierungsproblem

Dann sag das doch gleich...
Jetzt müsste man nur noch genau definieren, was optimiert werden soll und unter welchen Nebenbedingungen. Minimiere Ausfall unter NB Einhaltung des Budgets?

Zitat:
denn meiner Meinung ist das Problem nicht linear zu lösen.

Die Kostenfunktion bzw. die Abweichung davon ist linear. Wenn es keine Interaktion zwischen den Ausfällen gibt, dürfte auch das linear sein.

So oder so: für lineare Probleme intlinprog, für nichtlineare ga.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
General_Griboz
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 66
Anmeldedatum: 05.04.17
Wohnort: ---
Version: R2016b
     Beitrag Verfasst am: 18.05.2017, 09:28     Titel:
  Antworten mit Zitat      
Moin,

also eine Nebenbedingung ist, das das Budget nicht überschritten werden darf, aber es darf gleich sein der Bauteilkosten und der Ausfall soll minimiert werden. Wobei es für den Ausfall immer zwei Möglichkeiten gibt, einmal mit Ersatzteil (dann ist er in der Regel kleiner) und einmal ohne Ersatzteil (dann ist er in der Regel höher).

Dann habe ich aber noch solche Nebenbedingungen, wenn es dieses Bauteil mehr als z.B. 10 gibt, soll es nur 2 gekauft werden. Wobei danach könnte ich die Liste auch vorher durchsuchen lassen und in dem Fall 7 Bauteil rausnehmen und nur 3 drin lassen. Und diese Nebenbedingung war in meinen Augen einfach zu filtern, nachdem man alle Kombinationen hat.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.05.2017, 10:28     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Und diese Nebenbedingung war in meinen Augen einfach zu filtern, nachdem man alle Kombinationen hat.

Dem ist auch so. Bei zu vielen Bauteilen ist es aber nun mal utopisch, überhaupt alle Kombinationen zu bekommen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
General_Griboz
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 66
Anmeldedatum: 05.04.17
Wohnort: ---
Version: R2016b
     Beitrag Verfasst am: 18.05.2017, 10:42     Titel:
  Antworten mit Zitat      
Ja das stimmt das es unglaublich viele Kombinationen gibt, deswegen bin ich jetzt auch dazu übergegangen "zufällig" Kombinationen zu Würfeln. D.h. ich Würfel 1e06 mal mir eine zufällige Anzahl an Bauteilen und dann lasse ich mir eine zufällige "Positionen" (die Stellen in denen die Bauteile in der Matrix stehen) auswerfen, die meiner zufälligen Anzahl entsprechen. Sprich:

Insgesamt 100 Bauteile
zufällige Anzahl=5
Positionen=[26,1,30,55,78]

Und dann lasse ich mir für diese Position die Kosten ausrechnen und gucke, ob sie in mein Budget passen. Passt die Kombination in mein Budget speichere ich sie, passt sie nicht mache ich mit der nächsten Zufallsausgabe weiter.

Das gute ist, die Anzahl der Würfe kann ich ja "beliebig" erhöhen. Und zum Schluss schmeiße ich alle doppelten Kombinationen raus. Und danach kann ich weiter filtern, nach meinen Belieben.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.05.2017, 10:46     Titel:
  Antworten mit Zitat      
Hallo,

ga würde das systematisieren und anhand guter Kombinationen versuchen, noch bessere zu finden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
General_Griboz
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 66
Anmeldedatum: 05.04.17
Wohnort: ---
Version: R2016b
     Beitrag Verfasst am: 18.05.2017, 10:51     Titel:
  Antworten mit Zitat      
Wie müsste man das implementieren oder eher gesagt formulieren, damit man es mit ga benutzen kann?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

tja, hier liegt das Problem. Für mich sind die Beschreibungen nicht griffig genug, als dass ich eine Formulierung daraus ableiten könnte.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
General_Griboz
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 66
Anmeldedatum: 05.04.17
Wohnort: ---
Version: R2016b
     Beitrag Verfasst am: 18.05.2017, 11:29     Titel:
  Antworten mit Zitat      
Dann probiere ich es nochmal, es etwas besser zu beschreiben.

Kosten Bauteile: \sum\limits_{i=1}^n Bauteilkosten(i) --> wobei n die Anzahl der gesamten Bauteile ist

Ausfall: \sum\limits_{i=1}^n AusfallmitBauteil(i)

\sum\limits_{i=1}^n AusfallohneBauteil(i)

Welcher Ausfall genommen wird entscheidet, ob das Bauteil gekauft worden ist(AusfallmitBauteil) oder ob es nicht gekauft worden ist (AusfallohneBauteil).

NB: KostenBauteile \leq maxBudget

Ziel ist es den Ausfall so gering wie möglich zu machen.

Hoffe das macht es etwas klarer. Und die Anzahl der Bauteile müssen ganzzahlig sein, denn es können ja nicht 1,5 Bauteile gekauft werden.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.05.2017, 13:01     Titel:
  Antworten mit Zitat      
Hallo,

gibt es je nach Anzahl der Bauteile unterschiedliche Ausfallkosten?

Falls es nur die Entscheidung ist, ob ein Bauteil berücksichtigt wird, wäre es klar:

BTmit: Spaltenvektor der Ausfallkosten mit Bauteil
BTohne: Spaltenvektor der Ausfallkosten ohne Bauteil
Kosten: Spaltenvektor der Anschaffungskosten
n: Anzahl der Bauteile

Code:
f = (BTohne - BTmit)';
intcon = 1:n;
A = Kosten';
b = Budget;
Aeq = [];
beq = [];
lb = zeros(n,1);
ub = ones(n,1);
intlinprog(f,intcon,A,b,Aeq,beq,lb,ub)


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
General_Griboz
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 66
Anmeldedatum: 05.04.17
Wohnort: ---
Version: R2016b
     Beitrag Verfasst am: 18.05.2017, 13:22     Titel:
  Antworten mit Zitat      
Zitat:
gibt es je nach Anzahl der Bauteile unterschiedliche Ausfallkosten?


Wie meinst du das? Die gesamt Ausfallkosten ändern sich natürlich mit der Anzahl der Bauteile, aber der Ausfall mit und ohne BT für das jeweilige BT ändert sich nicht, die sind fest gelegt. Das heißt BT1 hat immer den gleichen Ausfall für die zwei Fälle.

Was aber der Fall ist, dass BT1,BT2,BT3 in meiner Tabelle "unterschiedliche" Bauteile sind aber in der Wirklichkeit, sind es die selben. Und dann wäre der Fall, bei 3 gleichen zum Beispiel, dass nur eins dieser 3 benötigt wird.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.05.2017, 13:31     Titel:
  Antworten mit Zitat      
... dann sollte der Ansatz ja funktionieren?
Falls du das anders siehst, bitte erläutern.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
General_Griboz
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 66
Anmeldedatum: 05.04.17
Wohnort: ---
Version: R2016b
     Beitrag Verfasst am: 18.05.2017, 13:38     Titel:
  Antworten mit Zitat      
Ich habe deinen Vorschlag mal mit Beispielwerten durchgerechnet und es kommt heraus, dass kein bauteil angeschafft werden soll.

Das wären meine Beispielwerte und der restliche Code dazu.

Code:
BTohne=randi([25 40],1,30);
BTmit=randi([10 20],1,30);
f=(BTohne - BTmit)';

Kosten=randi([100 400],1,30);
Budget=2000;
n=30;
intcon=1:n;
A=Kosten;
b=Budget;
Aeq=[];
beq=[];
lb=zeros(n,1);
ub=ones(n,1);
intlinprog(f,intcon,A,b,Aeq,beq,lb,ub)
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.05.2017, 14:02     Titel:
  Antworten mit Zitat      
Hallo,

ein Vorzeichenfehler:
Code:
f=(-BTohne + BTmit)';


Du darfst auch gerne selbst mitdenken und meine Fehler ggf. korrigieren ;)

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2, 3  Weiter

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.