Simulez une bonne date de Noël avec un modèle optimisé Python

Objectif

Je veux avoir un rendez-vous amusant sans dépenser trop d'argent et de temps.

conditions

Budget: jusqu'à 5 000 yens à la fin du mois avant le salaire. Temps requis: en semaine et tôt le matin le lendemain, donc si vous vous réunissez à 7h00, ce sera jusqu'à 12h00. Cours: Si possible, une date de cuisson dans votre appartement est courte et facile.

donnée de référence
Government Statistics e-Stat Jour, hommes et femmes, stade de la vie, personnes ensemble, classification temporelle Taux d'acteur différent

J'ai résumé les cours populaires à partir de ces données statistiques, et ajouté le coût par heure et le temps requis de la règle empirique pour créer le tableau suivant au format CSV. ninki Nombre de femmes qui font 2-3 fois par mois (milliers) jikan, coût Ajouter le temps et le budget normalement requis (¥ / h) comme règle empirique キャプチャ2.PNG Obtenez-le sous forme de DataFrame avec des pandas et intégrez-le dans le modèle d'optimisation. De plus, ninki a été traité comme une variable catégorielle par le binning comme une quantité de caractéristiques plutôt que comme une mesure un peu comme une valeur numérique.

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))

Passons maintenant à la création d'un modèle optimisé. Soit les variables x, y et z les heures programmées pour les films, le karaoké et la cuisine, respectivement. Je veux me concentrer sur la cuisine, alors augmentons la variable Z.

#Définition du modèle de minimisation
mod = model_min()

#Réglage variable
x=LpVariable('x',lowBound=0)
y=LpVariable('y',lowBound=0)
z=LpVariable('z',lowBound=0)

#Réglage de la fonction objectif
mod += syuko.iloc[2][0]*x + syuko.iloc[2][1]*y + syuko.iloc[2][2]*z

#Contraintes
mod += x + y <= 3
mod += y + z >= 3.5
mod += z + x >= 4
mod += x + y + z <= 5

#Exécution du solveur
mod.solve()
mst = mod.status
st = LpStatus[mst]

Cela signifie que la solution optimale a été obtenue lorsque Optimal a été renvoyé de LpStatus après avoir changé diverses conditions de contrainte. Il est donc intéressant de l'utiliser comme simulateur. Au fait Impossible si Infensible est retourné Unbounded est illimité (une solution illimitée et optimale peut être améliorée) Optimal produit la combinaison du coût et du temps requis pour la solution optimale.

#Sortie de solution optimale
if st=='Optimal' and value(mod.objective) < 5000:
    print("Budget optimal" + str(value(mod.objective))+"Cercle")
    plist=[]
    con=0
    for k,v in dic.items():
        print(k,"Niveau de recommandation",v,"Temps de trajet efficace",value(mod.variables()[con]),"h")
        con += 1

Résultat de sortie キャプチャ.PNG Il semble que la cuisine coûtera 3320 yens pour 4 heures à la maison! (Est-ce que ça marche?)

Recommended Posts

Simulez une bonne date de Noël avec un modèle optimisé Python
Obtenez date avec python
J'ai fait un jeu d'éclairage de sapin de Noël avec Python
[python] Créez un tableau de dates avec des incréments arbitraires avec np.arange
Faites une loterie avec Python
Créer un répertoire avec python
getrpimodel: Reconnaître le modèle Raspberry Pi (A, B, B +, B2, B3, etc.) avec python
[Python] Qu'est-ce qu'une instruction with?
Résoudre ABC163 A ~ C avec Python
Faites fonctionner l'imprimante de reçus avec python
Manuel de graphisme Python avec Matplotlib.
Faisons une interface graphique avec python.
Résoudre ABC166 A ~ D avec Python
Créez un environnement virtuel avec Python!
J'ai fait une loterie avec Python.
Créer un environnement virtuel avec Python 3
Résoudre ABC168 A ~ C avec Python
Créer un système de recommandation avec python
[Python] Générer un mot de passe avec Slackbot
Résoudre ABC162 A ~ C avec Python
[Python] Modèle gaussien mixte avec Pyro
Résoudre ABC167 A ~ C avec Python
Comment calculer la date avec python
Résoudre ABC158 A ~ C avec Python
Faisons un graphe avec python! !!
Créer un itérateur de modèle avec PySide
[Python] Hériter d'une classe avec des variables de classe
J'ai créé un démon avec Python
Ecrire un script batch avec Python3.5 ~
Livre en spirale en Python! Python avec un livre en spirale! (Chapitre 14 ~)
Créer un décorateur de fonction Python avec Class
Créer un fichier power simple avec Python
[Python] Un programme qui crée des escaliers avec #
Faisons un jeu de shiritori avec Python
Installer Python en tant que Framework avec pyenv
Créez une image factice avec Python + PIL.
J'ai fait un compteur de caractères avec Python
[Python] Dessiner un motif de tourbillon avec une tortue
J'ai dessiné une carte thermique avec Seaborn [Python]
[Python] Créez un environnement virtuel avec Anaconda
Créons un groupe gratuit avec Python
Un mémo contenant Python2.7 et Python3 dans CentOS
Création d'un environnement Python 3.6 avec Windows + PowerShell
Carte des informations de location sur une carte avec python
Rechercher le labyrinthe avec l'algorithme python A *
Démonisez une application Web Python avec Supervisor
Faisons la voix lentement avec Python
Créé un voyage de fléchettes avec python (news)
J'ai essayé un langage fonctionnel avec Python
Recevoir le type de date (datetime) avec ArgumentParser [python]
[Python] Une application web rapide avec Bottle!
[AtCoder] Résoudre ABC1 ~ 100 Un problème avec Python
Ecrire un client TCP avec Python Twisted
Ce que j'ai fait avec les tableaux Python
Résoudre AtCoder ABC168 avec python (A ~ D)
Créer un compteur de fréquence de mots avec Python 3.4
Essayez le scraping HTML avec la bibliothèque Python