Contornare lo spazio delle soluzioni delle ottimizzazioni #

Il tracciato dei contorni è particolarmente utile quando si illustra lo spazio delle soluzioni dei problemi di ottimizzazione. Non solo può axes.Axes.contouressere utilizzato per rappresentare la topografia della funzione obiettivo, ma può essere utilizzato per generare curve al contorno delle funzioni di vincolo. Le linee di vincolo possono essere tracciate TickedStrokeper distinguere i lati validi e non validi dei confini del vincolo.

axes.Axes.contourgenera curve con valori maggiori a sinistra del contorno. Il parametro dell'angolo viene misurato zero avanti con valori crescenti a sinistra. Di conseguenza, quando si utilizza TickedStrokeper illustrare un vincolo in un tipico problema di ottimizzazione, l'angolo deve essere impostato tra zero e 180 gradi.

contorni nella demo di ottimizzazione
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import patheffects

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

nx = 101
ny = 105

# Set up survey vectors
xvec = np.linspace(0.001, 4.0, nx)
yvec = np.linspace(0.001, 4.0, ny)

# Set up survey matrices.  Design disk loading and gear ratio.
x1, x2 = np.meshgrid(xvec, yvec)

# Evaluate some stuff to plot
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

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

Galleria generata da Sphinx-Gallery