Simulieren Sie ein gutes Weihnachtsdatum mit einem Python-optimierten Modell

Zweck

Ich möchte ein lustiges Date haben, ohne zu viel Geld und Zeit auszugeben.

Bedingungen

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.

Vergleichsdaten
Regierungsstatistik e-Stat Tag, Männer und Frauen, Lebensphase, Menschen zusammen, Zeitklassifizierung Unterschiedliche Schauspielerrate

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 キャプチャ2.PNG 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 キャプチャ.PNG Es scheint, dass das Kochen für 4 Stunden zu Hause 3.320 Yen kostet! (Funktioniert es?)

Recommended Posts

Simulieren Sie ein gutes Weihnachtsdatum mit einem Python-optimierten Modell
Holen Sie sich ein Date mit Python
Ich habe mit Python ein Weihnachtsbaum-Beleuchtungsspiel gemacht
[Python] Erstellen Sie mit np.arange ein Datumsarray mit beliebigen Inkrementen
Machen Sie eine Lotterie mit Python
Erstellen Sie ein Verzeichnis mit Python
getrpimodel: Erkennen Sie das Himbeer-Pi-Modell (A, B, B +, B2, B3 usw.) mit Python
[Python] Was ist eine with-Anweisung?
Löse ABC163 A ~ C mit Python
Bedienen Sie den Belegdrucker mit Python
Python-Grafikhandbuch mit Matplotlib.
Lassen Sie uns eine GUI mit Python erstellen.
Löse ABC166 A ~ D mit Python
Erstellen Sie eine virtuelle Umgebung mit Python!
Ich habe mit Python eine Lotterie gemacht.
Erstellen einer virtuellen Umgebung mit Python 3
Löse ABC168 A ~ C mit Python
Erstellen Sie ein Empfehlungssystem mit Python
[Python] Generiere ein Passwort mit Slackbot
Löse ABC162 A ~ C mit Python
[Python] Gemischtes Gaußsches Modell mit Pyro
Löse ABC167 A ~ C mit Python
So berechnen Sie das Datum mit Python
Löse ABC158 A ~ C mit Python
Lassen Sie uns ein Diagramm mit Python erstellen! !!
Erstellen Sie mit PySide einen Modelliterator
[Python] Erbt eine Klasse mit Klassenvariablen
Ich habe mit Python einen Daemon erstellt
Schreiben Sie ein Batch-Skript mit Python3.5 ~
Spiralbuch in Python! Python mit einem Spiralbuch! (Kapitel 14 ~)
Erstellen Sie mit Class einen Python-Funktionsdekorator
Erstellen einer einfachen Power-Datei mit Python
[Python] Ein Programm, das Treppen mit # erstellt
Lassen Sie uns mit Python ein Shiritori-Spiel machen
Installieren Sie Python als Framework mit pyenv
Erstellen Sie mit Python + PIL ein Dummy-Image.
Ich habe mit Python einen Zeichenzähler erstellt
[Python] Zeichnen eines Wirbelmusters mit einer Schildkröte
Ich habe eine Heatmap mit Seaborn [Python] gezeichnet.
[Python] Erstellen Sie mit Anaconda eine virtuelle Umgebung
Erstellen wir mit Python eine kostenlose Gruppe
Ein Memo mit Python2.7 und Python3 in CentOS
Erstellen einer Python 3.6-Umgebung mit Windows + PowerShell
Kartenmietinformationen auf einer Karte mit Python
Durchsuche das Labyrinth mit dem Python A * -Algorithmus
Dämonisieren Sie eine Python-Webanwendung mit Supervisor
Lassen Sie uns mit Python langsam sprechen
Erstellt eine Reise von Darts mit Python (Nachrichten)
Ich habe eine funktionale Sprache mit Python ausprobiert
Empfangen Sie den Datumstyp (Datum / Uhrzeit) mit ArgumentParser [Python]
[Python] Eine schnelle Webanwendung mit Bottle!
[AtCoder] Löse ABC1 ~ 100 Ein Problem mit Python
Schreiben Sie einen TCP-Client mit Python Twisted
Was ich mit Python-Arrays gemacht habe
Löse AtCoder ABC168 mit Python (A ~ D)
Erstellen Sie mit Python 3.4 einen Worthäufigkeitszähler
Versuchen Sie HTML-Scraping mit der Python-Bibliothek