Nota
Fare clic qui per scaricare il codice di esempio completo
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.

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