Tracé de contour d'optimisation avec Matplotlib

PythonPythonBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Ce laboratoire vous guidera tout au long du processus de création d'un tracé de contour à l'aide de Matplotlib en Python. Vous allez apprendre à générer des courbes avec des valeurs plus élevées et à utiliser ~matplotlib.patheffects.TickedStroke pour distinguer entre les côtés valides et invalides des limites de contrainte.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez sur le coin supérieur gauche pour basculer vers l'onglet Carnet d'étude pour accéder au carnet Jupyter pour pratiquer.

Parfois, vous devrez peut-être attendre quelques secondes pour que le carnet Jupyter ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations du carnet Jupyter.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous résoudrons rapidement le problème pour vous.

Importez les bibliothèques requises

Pour commencer, vous devez importer les bibliothèques nécessaires. Matplotlib et NumPy sont requises pour créer le tracé de contour.

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import patheffects

Configurez les vecteurs et les matrices d'enquête

Ensuite, configurez les vecteurs et les matrices d'enquête. Conceptez la charge surfacique et le rapport d'engrenage.

nx = 101
ny = 105

## Configurez les vecteurs d'enquête
xvec = np.linspace(0.001, 4.0, nx)
yvec = np.linspace(0.001, 4.0, ny)

## Configurez les matrices d'enquête.  Conceptez la charge surfacique et le rapport d'engrenage.
x1, x2 = np.meshgrid(xvec, yvec)

Évaluez les données à tracer

Maintenant, évaluez certaines données à tracer. Dans cet exemple, nous allons tracer une fonction objectif, g1, g2 et g3.

## Évaluez certaines choses à tracer
obj = x1**2 + x2**2 - 2*x1 - 2*x2 + 2
g1 = -(3*x1 + x2 - 5.5)
g2 = -(x1 + 2*x2 - 4.5)
g3 = 0.8 + x1**-3 - x2

Créez le tracé de contour

Maintenant, créez le tracé de contour en utilisant la méthode ax.contour(). Cette méthode est utilisée pour représenter la topographie de la fonction objectif et générer les courbes de limite des fonctions de contrainte.

fig, ax = plt.subplots(figsize=(6, 6))

cntr = ax.contour(x1, x2, obj, [0.01, 0.1, 0.5, 1, 2, 4, 8, 16], colors='black')
ax.clabel(cntr, fmt="%2.1f", use_clabeltext=True)

cg1 = ax.contour(x1, x2, g1, [0], colors='sandybrown')
plt.setp(cg1.collections, path_effects=[patheffects.withTickedStroke(angle=135)])

cg2 = ax.contour(x1, x2, g2, [0], colors='orangered')
plt.setp(cg2.collections, path_effects=[patheffects.withTickedStroke(angle=60, length=2)])

cg3 = ax.contour(x1, x2, g3, [0], colors='mediumblue')
plt.setp(cg3.collections, path_effects=[patheffects.withTickedStroke(spacing=7)])

ax.set_xlim(0, 4)
ax.set_ylim(0, 4)

plt.show()

Interprétez les résultats

Le tracé obtenu montre la topographie de la fonction objectif et les courbes de limite des fonctions de contrainte. Le ~matplotlib.patheffects.TickedStroke est utilisé pour distinguer les côtés valides et invalides des limites de contrainte.

Sommaire

Dans ce laboratoire, vous avez appris à créer un tracé de contour à l'aide de Matplotlib en Python. Vous avez également appris à générer des courbes avec des valeurs plus grandes et à utiliser ~matplotlib.patheffects.TickedStroke pour distinguer les côtés valides et invalides des limites de contrainte.