Dies ist der Artikel zum dritten Tag von Algorithm Advent Calendar 2015.
Wir werden eine kurze Einführung in die experimentelle Planungsmethode und einen Ansatz durch Kombinationsoptimierung als deren Entwicklung einführen.
Als Beispiel für den Fall "Ein Sensor von 10.000 Yen wird an den Punkten A und B platziert, und ein Sensor von 30.000 Yen wird an Punkt C platziert".
Verwenden Sie die folgenden Begriffe.
—— Faktor: Das zu untersuchende Thema, für das Sie das Niveau bestimmen möchten. Dieses Mal ist es ein Kandidat für die Sensorplatzierung. --Level: Möglicher Wert des Faktors. Dieses Mal gibt es drei Arten von Sensorkosten: 0,000 Yen, 10.000 Yen und 30.000 Yen.
Diesmal wird davon ausgegangen, dass keine Interaktion stattfindet.
Abgesehen von der Hintergrundgeschichte werde ich als allgemeine Theorie ein Beispiel mit 3 Arten von Faktoren und 3 Arten von Ebenen zeigen. Einfach ausgedrückt, Sie benötigen $ 3 ^ 3 = 27 $ so viele Fälle.
Bei der experimentellen Planungsmethode kann die Anzahl der Fälle basierend auf dem lateinischen Quadrat (siehe unten) erstellt werden.
1 | 2 | 3 |
---|---|---|
2 | 3 | 1 |
3 | 1 | 2 |
Wenn Sie das lateinische Quadrat verwenden, können Sie es in 9 Fällen wie folgt effizient ausführen. Diese 9 Fälle umfassen alle Kombinationen von Faktoren und Ebenen, und die Anzahl aller Faktoren und Ebenen ist gleich.
9 Fälle ausgewählt (Stufe für jeden Faktor)
Da jedes der 9 Quadrate im lateinischen Quadrat dem Fall entspricht, betrachten Sie die Zeilennummer als Faktor 1, die Spaltennummer als Faktor 2 und die Quadratnummer als Faktor 3.
Die experimentelle Planungsmethode weist die folgenden Nachteile auf.
Bei der experimentellen Planungsmethode wurde nach Sicherstellung einer bestimmten Anzahl von Faktoren / Ebenen die Anzahl der Fälle so gering wie möglich gewählt. Sie können sich dasselbe als Optimierungsproblem vorstellen. Geben Sie insbesondere die Mindestanzahl von Fällen an, die jede Ebene jedes Faktors enthalten, und ermitteln Sie die Methode zur Auswahl von Fällen durch gemischte Ganzzahloptimierung.
Formulierung
Zielfunktion | Erforderliche Anzahl von Fällen | |
---|---|---|
Einschränkungen | Es muss mindestens die Mindestanzahl von Fällen für jeden Faktor und jede Ebene geben | |
Variable | Gibt an, ob für jeden Fall ausgewählt werden soll |
$ C_ {ij} $ repräsentiert die $ j $ -te Ebene im $ i $ -ten Fall, und $ N $ repräsentiert die Mindestanzahl.
Mit Python kann es wie folgt berechnet werden. (Es wird angenommen, dass die variablen Fälle die Gesamtzahl der Fälle mit Anschaffungskosten von 50.000 Yen oder weniger enthalten.)
python
from pulp import *
r = [0, 1, 3] #Niveau
for N in [20, 40, 60, 120]: #Mindestanzahl
m = LpProblem()
v = [LpVariable('v%d'%i, cat=LpBinary) for i in range(len(cases))]
m += lpSum(v)
for j in range(len(cases[0])):
for k in r:
m += lpSum(v[i] for i in range(len(cases)) if cases[i][j] == k) >= N
m.solve()
print(N, LpStatus[m.status], value(m.objective)) #Mindestanzahl, Status, Anzahl der Fälle
Vergleichen wir es mit dem Fall der Zufallsstichprobe. Die minimale Anzahl von Zufallsstichproben ist ein ungefährer Wert, der in der Simulation erhalten wird. Sie können sehen, dass der Fall mithilfe der Kombinationsoptimierung effizient ausgewählt werden kann.
Mindestanzahl | Kombinationsoptimierung | Stichproben |
---|---|---|
20 | 400 Fälle | 3200 Fall |
40 | 800 Fälle | 5700 Fall |
60 | 1200 Fälle | 7900 Fall |
120 | 2400 Fall | 14400 Fall |
Recommended Posts