[PYTHON] J'ai essayé d'exécuter Platypus qui peut résoudre un petit problème d'optimisation - Partie 2

De l'article précédent J'ai essayé d'exécuter platypus qui peut résoudre un petit problème d'optimisation J'ai donc essayé de déplacer le problème de problème DTLZ2 dans le document. Mais je ne suis pas sûr car ce document n'est pas écrit en détail.

C'est un problème simple, et je vais essayer de comprendre comment il est calculé.

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

J'ai un peu changé le problème dans l'exemple du plotypus. L'implication de ce problème est que lorsque $ x $ prend $ -10 $ à $ 10 $, les deux fonctions

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

Quelle est la réponse à minimiser? C'est le problème.

Le premier est ʻimport. Ces trois ont l'air bien. from platypus import NSGAII, Problem, Real`

Ensuite, créez une fonction qui constitue la base de la solution polyvalente. def schaffer(x):return [x[0], (x[0]*(-1))]

Définissez le nombre de variables explicatives et le nombre de variables objectives avec «problème = problème (1, 2)». En d'autres termes, je pense que la variable explicative $ x $ est un et la variable objective est deux. prochain Avec problem.types [:] = Real (-10, 10), définissez le type et la plage de nombres donnés à x. Je pense que "Real" est une déclaration selon laquelle il s'agit probablement d'un nombre réel. Déclarez la fonction à calculer avec problem.function = schaffer. Déclarez que la fonction schaffer est un problème.

Avec ʻalgorithm = NSGAII (problem) , créez une instance qui résout le problème de la fonction déclarée dans problem` dans NSGAII.

ʻAlgorithm.run (10000) `est configuré pour répéter le calcul 10000 fois, et le calcul est effectué.

C'est la base, et si vous modifiez les paramètres, cela semble fonctionner d'une manière ou d'une autre.

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)

La réponse sort et il semble que c'est dans "result" sans permission, alors retirez-la et dessinez un graphique.

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

Le résultat.

platypus_2.png

Eh bien, la réponse est comme prévu.

Recommended Posts

J'ai essayé d'exécuter Platypus qui peut résoudre un petit problème d'optimisation - Partie 2
J'ai essayé de résoudre le problème d'optimisation des combinaisons avec Qiskit
J'ai essayé d'exécuter alembic, un outil de migration pour Python
Dessine un graphique avec Julia ... j'ai essayé une petite analyse
J'ai essayé d'exécuter pymc
J'ai essayé d'exécuter python à partir d'un fichier chauve-souris
[Python] J'ai essayé d'exécuter un serveur local en utilisant flask
J'ai essayé d'exécuter TensorFlow
J'ai essayé l'optimisation bayésienne!
J'ai essayé un peu le comportement de la fonction zip
J'ai essayé d'utiliser "Asciichart Py" qui peut dessiner un beau graphique sur la console avec Python.
J'ai un peu assoupli les conditions et laissé optuna résoudre le nombre
J'ai essayé le diagramme en tant que code (diagrammes) qui peut gérer le code du diagramme de configuration
Puis-je être un data scientist?
J'ai essayé d'exécuter GAN dans Colaboratory
J'ai essayé Grumpy (allez exécuter Python).
J'ai essayé d'exécuter prolog avec python 3.8.2.
J'ai fait une note du colaboratoire Google qui peut utiliser Spleeter facilement.