2016-04-20 10 views
0

Ich bin neu bei lp_solve. Ich möchte diese beiden Berechnungen kombinieren, (weil die Rohstoffe sind die gleichen ...)Kombiniere zwei Berechnungen mit lp_solve (lineare Programmierung)

Erste Produktion:

min: 13.21 x0 + 27.46 x1 + 35.66 x2 + 89.21 x3 + 60.69 x4; 

    x0 + x1 + x2 + x3 + x4 >= 200000; 

    x0 <= 69148; 
    x1 <= 25460; 
    x2 <= 34020; 
    x3 <= 69873; 
    x4 <= 737299; 

    -0.425 x0 + 0.086 x3 + -0.003 x4 >= 0; 
    /* 0.175*x0 + 0.60*x1 + 0.60*x2 + 0.686*x3 + 0.59745*x4 >= (x0 + x1 + x2 + x3 + x4)*0.6 */ 

Zweite Produktion:

min: 13.21 y0 + 27.46 y1 + 35.66 y2 + 89.21 y3 + 60.69 y4; 

    y0 + y1 + y2 + y3 + y4 >= 50000; 

    y0 <= 69148; 
    y1 <= 25460; 
    y2 <= 34020; 
    y3 <= 69873; 
    y4 <= 737299; 

    -0.275 y0 + 0.15 y1 + 0.15 y2 + 0.236 y3 + 0.14745 y4 >= 0; 
    /* 0.175*y0 + 0.60*y1 + 0.60*y2 + 0.686*y3 + 0.59745*y4 >= (y0 + y1 + y2 + y3 + y4)*0.45 */ 

Meine Lösungen:

min: 13.21 x0 - 13.21 y0 
     + 27.46 x1 - 27.46 y1 
     + 35.66 x2 - 35.66 y2 
     + 89.21 x3 - 89.21 y3 
     + 60.69 x4 - 60.69 y4; 

    x0 + x1 + x2 + x3 + x4 >= 200000; 
    y0 + y1 + y2 + y3 + y4 >= 50000; 

    x0 + y0 <= 69148; 
    x1 + y1 <= 25460; 
    x2 + y2 <= 34020; 
    x3 + y3 <= 69873; 
    x4 + y4<= 737299; 

    -0.425 x0 + 0.086 x3 + -0.003 x4 >= 0; 
    -0.275 y0 + 0.15 y1 + 0.15 y2 + 0.236 y3 + 0.14745 y4 >= 0; 

gibt ein seltsames Ergebnis zurück:

x0 0 
    y0 69148 
    x1 25460 
    y1 0 
    x2 34020 
    y2 0 
    x3 4736.62921348315 
    y3 65136.3707865169 
    x4 135783.370786517 
    y4 601515.629213483 

wenn ich Summe x und y:

x = 200,000 (okay) 
    y = 735,800 (not 50,000!) 

so verwende ich das ganze Lager ... statt 250.000 ...

Antwort

2

In Ihrer kombinierten Zielfunktion:

min: 13.21 x0 - 13.21 y0 
    + 27.46 x1 - 27.46 y1 
    + 35.66 x2 - 35.66 y2 
    + 89.21 x3 - 89.21 y3 
    + 60.69 x4 - 60.69 y4; 

Sie subtrahieren die y Zielfunktion von der x Zielfunktion, anstatt sie hinzuzufügen. Und da Sie es zu minimieren versuchen, versucht der Solver glücklich, Ihre ursprüngliche y Zielsetzung zu maximieren, anstatt zu minimieren.

Wenn Sie stattdessen verwenden:

min: 13.21 x0 + 13.21 y0 
    + 27.46 x1 + 27.46 y1 
    + 35.66 x2 + 35.66 y2 
    + 89.21 x3 + 89.21 y3 
    + 60.69 x4 + 60.69 y4; 

Sie erhalten Ergebnisse:

x0        0 
x1       25460 
x2       34020 
x3      4736.63 
x4       135783 
y0      17451.8 
y1        0 
y2        0 
y3        0 
y4      32548.2 

So x ist im Grunde 200000 und y ist 50000, wie Sie gehofft.

+0

Vielen Dank !!! :) – ABSimon

+1

@ABSimon Sie sollten upvote und Antworten annehmen, wenn sie hilfreich sind. Wenn Sie Erfolg haben, werden Ihnen die Menschen weniger helfen. Ich weiß den Dank zu schätzen, aber ich werde auch die magischen Internet-Punkte zu schätzen wissen und sie brauchen noch weniger Aufwand. :) –