Wenn es auf das Evakuierungsplanungsproblem angewendet wird, wird es wie folgt.
Im Allgemeinen kann mit mathematischen Optimierungslösern Folgendes gesagt werden.
Lass uns nachsehen.
python
import numpy as np, pandas as pd, matplotlib.pyplot as plt
from pulp import *
Anzahl der Teile= 1000
Anzahl der Nutzer= 100
np.random.seed(1)
a = pd.DataFrame(np.random.rand(Anzahl der Teile,Anzahl der Nutzer),
index=['Produkt%d'%i for i in range(Produkt数)],
columns=['Nutzer%d'%j for j in range(Nutzer数)])
a['Var'] = [LpVariable('v%d'%i, lowBound=0) for i in range(Anzahl der Teile)]
th> | Benutzer 0 th> | Benutzer 1 th> | Benutzer 2 th> | Benutzer 3 th> | Benutzer 4 th> | ... th> | Benutzer 99 th> tr> |
---|---|---|---|---|---|---|---|
Produkt 0 th> | 0,417022 td> | 0,720324 td> | 0,000114 td> | 0,302333 td> | 0,146756 td> td> | ... td> | 0,186260 td> tr> |
... | ... | ... | ... | ... | ... | ... | ... |
Produkt 999 th> | 0,950176 td> | 0,556653 td> | 0,915606 td> | 0,641566 td> | 0,390008 td> td> | 0,485991 td> | 0,604310 td> tr> |
Für 1000 Artikel. Angenommen, 100 Benutzer haben unterschiedliche Kostensinne. Angenommen, Sie wählen die Hälfte von 1000 Produkten für die folgenden Probleme.
Schauen wir uns die Berechnungszeit an, während wir die Anzahl der Produkte ändern.
python
it = [100, 200, 500, 1000] #Produktnummernliste
tm = []
for n in it:
b = a[:n]
#Mindestproblem
m1 = LpProblem() #Minimierungsproblem(Mini)
m1 += lpDot(b.T[:-1].sum(), b.Var) #gesamt(Sam)
m1 += lpSum(b.Var) <= int(n * 0.5)
m1.solve()
#Minimax-Problem
m2 = LpProblem() #Minimierungsproblem(Mini)
y = LpVariable('y', lowBound=0)
# y >= max(Wert des Benutzers j)
for j in range(Anzahl der Nutzer): m2 += y >= lpDot(b.ix[:, j], b.Var)
m2 += y #gesamt(Max)
m2 += lpSum(b.Var) <= int(n * 0.5)
m2.solve()
tm.append((m1.solutionTime, m2.solutionTime))
plt.plot(it, tm)
plt.legend(['Mindestproblem','Minimax-Problem'], loc='upper left')
plt.show()
Das Minimax-Problem dauert erheblich länger als das Minisum-Problem.
In einigen Fällen kann die Lösung in zwei Schritten schneller erfolgen, z. B. So lösen Sie das Problem beim Verpacken von Behältern.
das ist alles
Recommended Posts