[PYTHON] Die Hand von "Millijan" durch Kombinationsoptimierung finden

Was ist das

"Verbesserter Algorithmus, der automatisch die Hand von" Mirijan "" mithilfe von Kombinationsoptimierung in Python behoben. Ich versuchte es.

Beispieldaten

Verwenden Sie Muster 2 aus dem Originalartikel.

#Muster 2
hands = ['Haruka', 'Chihaya', 'Miki', 'wahr', 'Takane', 'Yayoi', 'Festival', 'wahr美', 'Emily', 'Ami', 'Momoko', 'Iori', 'Erziehen']

hand_unit_list = [
 {'member': {'Iori', 'Emily'}, 'name': 'little trip around the world'},
 {'member': {'Emily', 'Festival'}, 'name': 'Charlotte Charlotte'},
 {'member': {'Mami', 'Yayoi'}, 'name': 'Möchte →'},
 {'member': {'Chihaya', 'Haruka'}, 'name': 'CRIMSON LOVERS'},
 {'member': {'Miki', 'Iori'}, 'name': "Erster Don't worry"},
 {'member': {'Erziehen', 'Iori', 'Momoko'}, 'name': 'Kyun! Vampir-Mädchen'},
 {'member': {'wahr', 'Iori', 'Yayoi'}, 'name': 'Bereitschaftsprinz'},
 {'member': {'Miki', 'Iori', 'Takane'}, 'name': '99 Nights'},
 {'member': {'wahr', 'wahr美', 'Haruka'}, 'name': 'Nicht blühen! !! Jungfrau Juku'},
 {'member': {'Miki', 'Chihaya', 'Haruka'}, 'name': 'Fate of the World'},
 {'member': {'Mami', 'Ami', 'Yayoi'}, 'name': 'Funny Logic'},
 {'member': {'Miki', 'Mami', 'Ami', 'Iori'}, 'name': 'Hoshisai Stepper'},
 {'member': {'Miki', 'Haruka', 'wahr', 'Chihaya', 'Yayoi'}, 'name': 'Fröhlich'},
 {'member': {'Miki', 'Haruka', 'wahr', 'Chihaya', 'Emily'}, 'name': 'World changer'},
 {'member': {'Iori', 'Haruka', 'wahr', 'wahr美', 'Ami'}, 'name': 'Miracle Night'},
 {'member': {'Miki', 'Takane', 'wahr', 'wahr美', 'Yayoi', 'Ami'}, 'name': 'SHOW bei der Live Revolution!'}
]

Versuche es zu lösen

Lösen wir es als Kombinationsauktionsproblem.

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 wahr Takane Yayoi Festival Mami Emily Ami Momoko Iori Erziehen Var Val
1 Charlotte Charlotte False False False False False False True False True False False False False v000002 1
2 Möchte → 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! Vampir-Mädchen False False False False False False False False False False True True True v000006 1

Ich habe das gleiche Ergebnis wie der Originalartikel erhalten.

Recommended Posts

Die Hand von "Millijan" durch Kombinationsoptimierung finden
Die Leistungsfähigkeit von Kombinationsoptimierungslösern
So finden Sie den Bereich des Boronoi-Diagramms
Minimieren Sie die Anzahl der Polierungen, indem Sie die Kombination optimieren
Beurteilung des Endes von Mahjong durch Kombinationsoptimierung
Sternumfrage mit Kombinationsoptimierung
Ich habe versucht, die Entropie des Bildes mit Python zu finden
So finden Sie die optimale Anzahl von Clustern für k-means
Lassen Sie uns die Vorlesung der PyCon JP 2016 durch Kombinationsoptimierung entscheiden
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
Lassen Sie uns die Position der Feuerwehr durch Kombinationsoptimierung bestimmen
Erben Sie die Standardbibliothek, um den Durchschnittswert der Warteschlange zu ermitteln
So ermitteln Sie den Skalierungskoeffizienten eines bipolaren Wavelets
Finden Sie die Definition des Wertes von errno
Bereiten Sie die Straße mit Kombinationsoptimierung
Versuchsplanungsmethode und Kombinationsoptimierung
Ergänzung zur Erklärung von vscode
So ermitteln Sie die Speicheradresse des Pandas-Datenrahmenwerts
Lösen von Rucksackproblemen mit den OP-Tools von Google - Üben der Grundlagen von Kombinationsoptimierungsproblemen
[Python] Eine einfache Funktion zum Ermitteln der Mittelkoordinaten eines Kreises
Die Geschichte des Versuchs, den Client wieder zu verbinden
Skript zum Ändern der Beschreibung von Fasta
10 Methoden zur Verbesserung der Genauigkeit von BERT
So überprüfen Sie die Version von Django
Die Geschichte, MeCab in Ubuntu 16.04 zu setzen
So ermitteln Sie die Anzahl der CPUs ohne den Befehl sar
Migemo-Version des Befehls: find,: mfind
Ich habe versucht, die optimale Route des Traumlandes durch (Quanten-) Tempern zu finden
Ermitteln Sie den Mindestwert der Funktion mithilfe der Partikelgruppenoptimierungsmethode (PSO).
Die Geschichte von pep8 wechselt zu pycodestyle
Finden Sie den Koeffizienten des Polypolys mit dem kleinsten Quadrat
[Circuit x Python] So ermitteln Sie die Übertragungsfunktion eines Schaltkreises mit Lcapy
Ein Programmieranfänger versuchte, die Ausführungszeit des Sortierens usw. zu überprüfen.
[Wissenschaftlich-technische Berechnung von Python] Numerische Berechnung zur Ermittlung des Ableitungswerts (Differential)
[Wissenschaftlich-technische Berechnung mit Python] Analytische Lösungssympathie zur Lösung von Gleichungen
So ermitteln Sie den Koeffizienten der ungefähren Kurve, die in Python durch die Scheitelpunkte verläuft
[Überprüfung] Versuchen Sie, die Punktgruppe an der Optimierungsfunktion von Pytorch Part 1 auszurichten
So berechnen Sie die Volatilität einer Marke
Kombinationsoptimierung - typisches Problem-Set-Split-Problem
Einstellung zur Ausgabe des Protokolls zur Ausführung von cron
Die Ungenauigkeit von Tensorflow war auf log (0) zurückzuführen.
Lassen Sie uns den Datumsverlauf durch Kombinationsoptimierung festlegen
Ich habe versucht, das Umfangsverhältnis mit 100 Millionen Stellen zu ermitteln
Finden Sie die Anzahl der Tage in einem Monat
Ich habe versucht, die Trapezform des Bildes zu korrigieren
Ändern Sie den Dezimalpunkt der Protokollierung von, nach.
Finden Sie den Bruchteil des in Python eingegebenen Werts heraus
Lösen des N Queen-Problems mit kontinuierlicher / kombinierter Optimierung
Lösen des N Queen-Problems mit Kombinationsoptimierung
Finden Sie die Lösung der Gleichung n-ter Ordnung mit Python
Finden Sie den Tag nach Datum / Uhrzeit heraus
[Einführung in den Algorithmus] Finden Sie den kürzesten Weg [Python3]
Ich möchte das Erscheinungsbild von zabbix anpassen
Bewegen Sie Ihre Hand, um die Chi-Quadrat-Verteilung zu verstehen
Von der Einführung von Pyethapp bis zur Vertragsabwicklung
Versuchen Sie, die Bewegung des Sonnensystems zu simulieren
Die Geschichte vom Umzug von Pipenv zur Poesie