[PYTHON] Comment dessiner un graphique 3D avant l'optimisation

Comment dessiner un graphique de l'algorithme d'optimisation dans DEAP.

Comment dessiner un graphique 3D avant l'optimisation.

Tout d'abord, le type de graphe tridimensionnel que vous souhaitez dessiner est la fonction d'évaluation de la bibliothèque d'algorithmes génétiques appelée DEAP. Puisque je veux envisager l'optimisation polyvalente, il semble plus facile à comprendre en dessinant un graphique en trois dimensions, donc le premier est de savoir comment dessiner un graphique en trois dimensions.

Voir ici pour la fonction d'évaluation de l'optimisation. Documentation DEAP 1.3.1 Une super-introduction aux problèmes d'optimisation polyvalents que tout le monde peut comprendre

Pour dessiner un graphe tridimensionnel, commencez par créer des points en forme de maillage sur les deux axes X1 et x2. À ce stade, la valeur sur l'axe z est calculée. Dessinez un graphique en trois dimensions avec Axes3D pour les valeurs de x1, x2 et Z.

1) Créez des points de maillage.

1: Utilisez la fonction numpy ʻarangepour créer des nombres régulièrement espacés. np.arange (-30,30,1)De a-30 à 30, vous pouvez créer des valeurs numériques avec un intervalle à la fois. 2:meshgrid (a, b)` donne un point de grille à l'intersection de a et b dans le tableau unidimensionnel, et le place dans X1 et X2.

#Comment faire un maillage
import numpy as np
a = np.arange(-30,30,1)
b = np.arange(-30,30,1)
print(a)
#[-30 -29 -28 -27 -26 -25 -24 -23 -22 -21 -20 -19 -18 -17 -16 -15 -14 -13
# -12 -11 -10  -9  -8  -7  -6  -5  -4  -3  -2  -1   0   1   2   3   4   5
#   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23
#  24  25  26  27  28  29]

print(b)
#[-30 -29 -28 -27 -26 -25 -24 -23 -22 -21 -20 -19 -18 -17 -16 -15 -14 -13
# -12 -11 -10  -9  -8  -7  -6  -5  -4  -3  -2  -1   0   1   2   3   4   5
#   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23
#  24  25  26  27  28  29]

X1, x2 = np.meshgrid(a, b)

print(X1)
#[[-30 -29 -28 ...  27  28  29]
# [-30 -29 -28 ...  27  28  29]
# [-30 -29 -28 ...  27  28  29]
# ...
# [-30 -29 -28 ...  27  28  29]
# [-30 -29 -28 ...  27  28  29]
# [-30 -29 -28 ...  27  28  29]]

print(X2)
#[[-30 -29 -28 ...  27  28  29]
# [-30 -29 -28 ...  27  28  29]
# [-30 -29 -28 ...  27  28  29]
# ...
# [-30 -29 -28 ...  27  28  29]
# [-30 -29 -28 ...  27  28  29]
# [-30 -29 -28 ...  27  28  29]]

import matplotlib.pyplot as plt
plt.scatter(X1,X2,s=1)
plt.show()

Pour confirmation, j'ai dessiné un diagramme de dispersion bidimensionnel de X1 et X2, et il est devenu comme suit. scatter_Figure 2020-08-30 161126.png

C'est un maillage proprement. Ensuite, calculez la valeur de l'axe Z et créez un graphique en trois dimensions. 3: Z a calculé ce qu'on appelle la fonction Ackley. Formule

{f(x_{1}, x_{2})=20-20\exp \biggl( -0.2\sqrt{\frac{1}{n}\sum_{i=1}^{n}x_{i}^2} \biggr) +e-\exp \biggl(\frac{1}{n}\sum_{i=1}^{n}\cos(2\pi x_{i}) \biggr)
}

Pour le moment, si vous tracez avec X1 et Z, le graphique sera le suivant. x1_z_Figure 2020-08-30 162742.png

Dessinez un graphe dimensionnel 4: 3. Utilisez from mpl_toolkits.mplot3d import Axes3D pour importer une bibliothèque pour dessiner des graphiques 3D. ʻAx.plot_wireframe (X1, X2, Z) `crée un graphe en trois dimensions.

plot_surface: affiché comme une surface. surfaceFigure 2020-08-30 163457.png

plot_wireframe: affiché sous forme de fil de fer. wireflameFigure 2020-08-30 163108.png

Z =20 - 20 * np.exp(-0.2 * np.sqrt((X1 ** 2 + X2 ** 2) / 2)) + np.exp(1) - np.exp((np.cos(2 * np.pi * X1) + np.cos(2 * np.pi * X2)) / 2)

plt.scatter(X1,Z,s=1)
plt.show()


from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = Axes3D(fig)

#Affichage en fil de fer
ax.plot_wireframe(X1, X2, Z)
#Affichage en surface
#ax.plot_surface(X1, X2, Z, rstride=1, cstride=1, cmap='hsv')

plt.show()

Recommended Posts

Comment dessiner un graphique 3D avant l'optimisation
Comment dessiner un graphique avec Matplotlib
[Python] Comment dessiner un graphique linéaire avec Matplotlib
[Python] Comment convertir une liste bidimensionnelle en liste unidimensionnelle
Dessinez une surface plane avec un graphique 3D matplotlib
Dessinez une "courbe de seins" dans un graphique 3D (1)
Comment dessiner un graphique à barres qui résume plusieurs séries avec matplotlib
[Python] Comment dessiner un histogramme avec Matplotlib
Dessinez une "courbe de seins" dans un graphique 3D (2)
[Python] Comment créer un histogramme bidimensionnel avec Matplotlib
[Python] Comment dessiner un diagramme de dispersion avec Matplotlib
Comment appeler une fonction
Comment pirater un terminal
Dessinez un graphique avec networkx
Comment transloquer un tableau à deux dimensions en utilisant uniquement python [Note]
[Visualisation] Je veux dessiner un beau graphique avec Plotly
Comment faire une traduction japonais-anglais
Tracez un graphe avec Julia + PyQtGraph (2)
Comment mettre un lien symbolique
Essayez de dessiner une courbe de Bézier
Dessinez un graphique lâche avec matplotlib
Comment créer un bot slack
Comment créer un package Conda
Comment créer un robot - Avancé
Comment créer une fonction récursive
Comment créer un pont virtuel
Tracez un graphique avec Julia + PyQtGraph (1)
Dessinez un graphique avec Julia + PyQtGraph (3)
Comment créer un Dockerfile (basique)
[Blender] Comment créer un plug-in Blender
Dessinez un graphique avec des pandas + XlsxWriter
Comment supprimer un conteneur Docker
Comment créer un robot - Basic
Dessinez un graphique avec l'interface graphique PySimple
Comment créer un fichier de configuration
Comment créer un clone depuis Github
Comment diviser et enregistrer un DataFrame
Comment créer un environnement de traduction sphinx
Comment créer un dossier git clone
Qiita (1) Comment écrire un nom de code
Comment ajouter un package avec PyCharm
[Python] Comment rendre une classe itérable
(Matplotlib) Je veux dessiner un graphique avec une taille spécifiée en pixels
[Colab] Comment copier un vaste ensemble de données
[Python] Comment inverser une chaîne de caractères
Comment installer un package à l'aide d'un référentiel
[Ubuntu] Comment exécuter un script shell
Comment obtenir stacktrace en python
Comment mettre un espace demi-largeur avant les lettres et les chiffres en Python.
Comment dessiner une ligne verticale sur une carte de chaleur dessinée avec Python Seaborn
Comment créer un référentiel à partir d'un média
Comment créer un indicateur personnalisé Backtrader
Comment choisir une palette de couleurs Seaborn
Comment tester sur une page authentifiée par Django
Comment créer un plan de site Pelican
Dessinez simplement un graphique en spécifiant un fichier
Dessinez un graphique avec PyQtGraph Part 1-Drawing
Comment exécuter des scripts Maya Python
Comment dessiner une image OpenCV avec Pygame