Ich möchte ein lustiges Date haben, ohne zu viel Geld und Zeit auszugeben.
Budget: Bis zu 5.000 Yen am Ende des Monats vor dem Gehalt. Erforderliche Zeit: Wochentags und am nächsten Morgen am frühen Morgen. Wenn Sie sich also um 7:00 Uhr treffen, dauert es bis 12:00 Uhr. Kurs: Wenn möglich, ist ein Kochtermin in Ihrer Wohnung kurz und einfach.
Ich fasste die gängigen Kurse aus diesen statistischen Daten zusammen und addierte die Kosten pro Stunde und die erforderliche Zeit aus der empirischen Regel, um die folgende Tabelle im CSV-Format zu erstellen. ninki Anzahl der Frauen, die 2-3 mal im Monat machen (Tausende) jikan, cost Fügen Sie als empirische Regel die normalerweise erforderliche Zeit und das Budget (¥ / h) hinzu Holen Sie sich dies als DataFrame mit Pandas und integrieren Sie es in das Optimierungsmodell. Darüber hinaus wurde Ninki als kategoriale Variable behandelt, indem Binning als Merkmalsgröße und nicht als numerischer Wert gemessen wurde.
import pandas as pd
from pulp import LpVariable,LpStatus,value
from ortoolpy import model_min
syuko = pd.read_csv('C:\StaticData\syuko.csv',index_col='estat')
ninki = []
syumi = []
for i in syuko.columns:
ninki.append(syuko.iloc[0][i])
# binning
bin=pd.cut(ninki,3,labels=False,precision=0,duplicates='drop')+1
syumi=list(syuko.columns)
dic = dict(zip(syumi,bin))
Kommen wir nun zur Erstellung eines optimierten Modells. Die Variablen x, y und z seien die geplanten Zeiten für Filme, Karaoke und Kochen. Ich möchte mich auf das Kochen konzentrieren, also erhöhen wir die Variable Z.
#Definition des Minimierungsmodells
mod = model_min()
#Variable Einstellung
x=LpVariable('x',lowBound=0)
y=LpVariable('y',lowBound=0)
z=LpVariable('z',lowBound=0)
#Objektive Funktionseinstellung
mod += syuko.iloc[2][0]*x + syuko.iloc[2][1]*y + syuko.iloc[2][2]*z
#Einschränkungen
mod += x + y <= 3
mod += y + z >= 3.5
mod += z + x >= 4
mod += x + y + z <= 5
#Solver-Ausführung
mod.solve()
mst = mod.status
st = LpStatus[mst]
Wenn nach dem Ändern der Einschränkungsbedingungen Optimal von LpStatus zurückgegeben wird, wurde die optimale Lösung erhalten. Es ist also interessant, es als Simulator zu verwenden. Apropos Unmöglich, wenn Infensible zurückgegeben wird Ungebunden ist unbegrenzt (unbegrenzte und optimale Lösung kann verbessert werden) Optimale Ausgaben die Kombination aus Kosten und erforderlicher Zeit der optimalen Lösung.
#Optimale Lösungsausgabe
if st=='Optimal' and value(mod.objective) < 5000:
print("Optimales Budget" + str(value(mod.objective))+"Kreis")
plist=[]
con=0
for k,v in dic.items():
print(k,"Empfehlungsstufe",v,"Effiziente Reisezeit",value(mod.variables()[con]),"h")
con += 1
Ausgabeergebnis Es scheint, dass das Kochen für 4 Stunden zu Hause 3.320 Yen kostet! (Funktioniert es?)
Recommended Posts