[PYTHON] Ich habe versucht, Platypus auszuführen, um ein kleines Optimierungsproblem zu lösen - Teil 2

Vom vorherigen Artikel Ich habe versucht, Platypus auszuführen, das ein kleines Optimierungsproblem lösen kann Also habe ich versucht, das DTLZ2-Problem im Dokument zu verschieben. Ich bin mir aber nicht sicher, da dieses Dokument nicht detailliert geschrieben ist.

Es ist ein einfaches Problem, und ich werde versuchen zu verstehen, wie es berechnet wird.

minimize (x,-x)\qquad  for\quad x\in[-10,10]

Ich habe das Problem im Plotypus-Beispiel ein wenig geändert. Die Implikation dieses Problems ist, dass, wenn $ x $ $ -10 $ bis $ 10 $ nimmt, die beiden Funktionen

y=f(x)\qquad y=-f(x) 

Was ist die Antwort zu minimieren? Ist das Problem.

Erstens ist "Import". Diese drei sehen gut aus. from platypus import NSGAII, Problem, Real

Erstellen Sie als Nächstes eine Funktion, die die Grundlage für die Mehrzwecklösung bildet. def schaffer(x):return [x[0], (x[0]*(-1))]

Stellen Sie die Anzahl der erklärenden Variablen und die Anzahl der objektiven Variablen mit problem = Problem (1, 2) ein. Mit anderen Worten, ich denke, dass die erklärende Variable $ x $ eins und die objektive Variable zwei ist. Nächster Stellen Sie mit problem.types [:] = Real (-10, 10) den Typ und den Bereich der Zahlen für x ein. Ich denke, "Real" ist eine Erklärung, dass es wahrscheinlich eine reelle Zahl ist. Deklarieren Sie die zu berechnende Funktion mit problem.function = schaffer. Erklären Sie, dass die Funktion "Schaffer" als Problem gelöst werden soll.

Erstellen Sie mit algorithm = NSGAII (problem) eine Instanz, die das Problem der in problem in NSGAII deklarierten Funktion löst.

Stellen Sie in algorithm.run (10000) ein, dass die Berechnung 10000 Mal wiederholt und die Berechnung durchgeführt wird.

Dies ist die Grundvoraussetzung, und wenn Sie die Einstellungen ändern, scheint es irgendwie zu funktionieren.

from platypus import NSGAII, Problem, Real

def schaffer(x):
    return [x[0], (x[0]*(-1))]

problem = Problem(1, 2)
problem.types[:] = Real(-10, 10)
problem.function = schaffer

algorithm = NSGAII(problem)
algorithm.run(10000)

Die Antwort kommt heraus und es scheint, dass sie ohne Erlaubnis im "Ergebnis" ist. Nehmen Sie sie heraus und zeichnen Sie eine Grafik.

import matplotlib.pyplot as plt

plt.scatter([s.objectives[0] for s in algorithm.result],
            [s.objectives[1] for s in algorithm.result])
plt.xlim([-10, 10])
plt.ylim([-10, 10])
plt.xlabel("$f_1(x)$")
plt.ylabel("$f_2(x)$")
plt.show()

Das Ergebnis.

platypus_2.png

Nun, die Antwort ist wie erwartet.

Recommended Posts

Ich habe versucht, Platypus auszuführen, um ein kleines Optimierungsproblem zu lösen - Teil 2
Ich habe versucht, das Problem der Kombinationsoptimierung mit Qiskit zu lösen
Ich habe versucht, alembic auszuführen, ein Migrationstool für Python
Zeichne ein Diagramm mit Julia ... Ich habe eine kleine Analyse versucht
Ich habe versucht, Pymc auszuführen
Ich habe versucht, Python aus einer Bat-Datei auszuführen
[Python] Ich habe versucht, einen lokalen Server mit flask auszuführen
Ich habe versucht, TensorFlow auszuführen
Ich habe die Bayes'sche Optimierung ausprobiert!
Ich habe ein wenig versucht, das Verhalten der Zip-Funktion
Ich habe versucht, "Asciichart Py" zu verwenden, mit dem mit Python ein schönes Diagramm auf der Konsole gezeichnet werden kann.
Ich lockerte die Bedingungen ein wenig und ließ optuna die Zahl lösen
Ich habe Diagramm als Code (Diagramme) ausprobiert, mit dem der Konfigurationsdiagrammcode verwaltet werden kann
Kann ich Datenwissenschaftler werden?
Ich habe versucht, GAN in Colaboratory auszuführen
Ich habe es mit Grumpy versucht (Python ausführen).
Ich habe versucht, Prolog mit Python 3.8.2 auszuführen.
Ich habe mir das Google-Labor notiert, das Spleeter problemlos verwenden kann.