[PYTHON] Trouver la main de "Millijan" par l'optimisation des combinaisons

Qu'est-ce que c'est

Résolu "Algorithme amélioré qui détermine automatiquement la main de" Mirijan "" en utilisant Optimisation de combinaison en Python. Je l'ai essayé.

Exemple de données

Utilisez le modèle 2 de l'article d'origine.

#Motif 2
hands = ['Haruka', 'Chihaya', 'Miki', 'vrai', 'Takane', 'Yayoi', 'Festival', 'vrai美', 'Emilie', 'Suis-je', 'Momoko', 'Iori', 'Élevage']

hand_unit_list = [
 {'member': {'Iori', 'Emilie'}, 'name': 'little trip around the world'},
 {'member': {'Emilie', 'Festival'}, 'name': 'Charlotte Charlotte'},
 {'member': {'Mami', 'Yayoi'}, 'name': 'Veut →'},
 {'member': {'Chihaya', 'Haruka'}, 'name': 'CRIMSON LOVERS'},
 {'member': {'Miki', 'Iori'}, 'name': "Premier Don't worry"},
 {'member': {'Élevage', 'Iori', 'Momoko'}, 'name': 'Kyun! Fille vampire'},
 {'member': {'vrai', 'Iori', 'Yayoi'}, 'name': 'Prince en attente'},
 {'member': {'Miki', 'Iori', 'Takane'}, 'name': '99 Nights'},
 {'member': {'vrai', 'vrai美', 'Haruka'}, 'name': 'Ne fleurissez pas! !! Maiden Juku'},
 {'member': {'Miki', 'Chihaya', 'Haruka'}, 'name': 'Fate of the World'},
 {'member': {'Mami', 'Suis-je', 'Yayoi'}, 'name': 'Funny Logic'},
 {'member': {'Miki', 'Mami', 'Suis-je', 'Iori'}, 'name': 'Stepper Hoshisai'},
 {'member': {'Miki', 'Haruka', 'vrai', 'Chihaya', 'Yayoi'}, 'name': 'Joyeux'},
 {'member': {'Miki', 'Haruka', 'vrai', 'Chihaya', 'Emilie'}, 'name': 'World changer'},
 {'member': {'Iori', 'Haruka', 'vrai', 'vrai美', 'Suis-je'}, 'name': 'Miracle Night'},
 {'member': {'Miki', 'Takane', 'vrai', 'vrai美', 'Yayoi', 'Suis-je'}, 'name': 'SHOW à The Live Revolution!'}
]

Essayez de résoudre

Résolvons-le comme Problème d'enchères combinées.

import pandas as pd
from pulp import lpSum
from ortoolpy import model_max, addbinvars, addvals
df = pd.DataFrame([hand_unit['name'] for hand_unit in hand_unit_list],
                  columns=['name'])
for hand in hands:
    df[hand] = False
for i, hand_unit in enumerate(hand_unit_list):
    for member in hand_unit['member']:
        df.loc[i, member] = True
addbinvars(df)

m = model_max()
m += lpSum(df.Var)
for hand in hands:
    m += lpSum(df[df[hand] == True].Var) <= 1
m.solve()
addvals(df)
print(df[df.Val > 0])
name Haruka Chihaya Miki vrai Takane Yayoi Festival Mami Emilie Suis-je Momoko Iori Élevage Var Val
1 Charlotte Charlotte False False False False False False True False True False False False False v000002 1
2 Veut → False False False False False True False True False False False False False v000003 1
3 CRIMSON LOVERS True True False False False False False False False False False False False v000004 1
5 Kyun! Fille vampire False False False False False False False False False False True True True v000006 1

J'ai obtenu le même résultat que l'article original.

Recommended Posts

Trouver la main de "Millijan" par l'optimisation des combinaisons
La puissance des solveurs d'optimisation combinée
Comment trouver la zone du diagramme de Boronoi
Minimisez le nombre de polissages en optimisant la combinaison
Juger la finition du mahjong par l'optimisation des combinaisons
Enquête Star avec optimisation des combinaisons
J'ai essayé de trouver l'entropie de l'image avec python
Comment trouver le nombre optimal de clusters pour les k-moyennes
Décidons la conférence de PyCon JP 2016 par optimisation de combinaison
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
Décidons la position du service d'incendie par optimisation combinée
Hériter de la bibliothèque standard pour trouver la valeur moyenne de Queue
Comment trouver le coefficient de mise à l'échelle d'une ondelette bipolaire
Trouvez la définition de la valeur de errno
Paver la route avec l'optimisation des combinaisons
Méthode de planification des expériences et optimisation des combinaisons
Supplément à l'explication de vscode
Comment trouver l'adresse mémoire de la valeur de la trame de données Pandas
Résolution des problèmes de sac à dos avec les outils OR de Google - Pratiquer les bases des problèmes d'optimisation combinée
[Python] Une fonction simple pour trouver les coordonnées du centre d'un cercle
L'histoire d'essayer de reconnecter le client
Script pour changer la description de fasta
10 méthodes pour améliorer la précision de BERT
Comment vérifier la version de Django
L'histoire de la mise en place de MeCab dans Ubuntu 16.04
Comment connaître le nombre de processeurs sans utiliser la commande sar
Version Migemo de la commande: find ,: mfind
J'ai essayé de trouver l'itinéraire optimal du pays des rêves par recuit (quantique)
Trouvez la valeur minimale de la fonction par la méthode d'optimisation du groupe de particules (PSO)
L'histoire du changement de pep8 en pycodestyle
Trouvez le coefficient du polypole le moins carré
[Circuit x Python] Comment trouver la fonction de transfert d'un circuit en utilisant Lcapy
Un débutant en programmation a essayé de vérifier le temps d'exécution du tri, etc.
[Calcul scientifique / technique par Python] Calcul numérique pour trouver la valeur de la dérivée (différentielle)
[Calcul scientifique / technique par Python] Solution analytique sympa pour résoudre des équations
Comment trouver le coefficient de la courbe approximative passant par les sommets en Python
[Vérification] Essayez d'aligner le groupe de points avec la fonction d'optimisation de pytorch Partie 1
Comment calculer la volatilité d'une marque
Problème de fractionnement typique de la combinaison de problèmes
Paramètre pour afficher le journal de l'exécution de cron
L'inexactitude de Tensorflow était due à log (0)
Décidons le cours de date par optimisation de combinaison
J'ai essayé de trouver le rapport de circonférence par 100 millions de chiffres
Trouvez le nombre de jours dans un mois
J'ai essayé de corriger la forme trapézoïdale de l'image
Modifiez le point décimal de la journalisation de, à.
Découvrez la fraction de la valeur saisie en python
Résolution du problème N Queen avec l'optimisation continue / combinée
Résolution du problème N Queen avec l'optimisation des combinaisons
Trouvez la solution de l'équation d'ordre n avec python
Découvrez le jour par date / heure
[Introduction à l'algorithme] Trouvez l'itinéraire le plus court [Python3]
Je souhaite personnaliser l'apparence de zabbix
Déplacez votre main pour comprendre la distribution du chi carré
De l'introduction de pyethapp à l'exécution du contrat
Essayez de simuler le mouvement du système solaire
Histoire de passer de Pipenv à la poésie