python 최적화 알고리즘 성능 평가 테스트 함수 그리 기
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
def draw_pic(X, Y, Z, z_max, title, z_min=0):
fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.cm.hot)
# ax.contourf(X, Y, Z, zdir='z', offset=-2, cmap=plt.cm.hot)
ax.set_zlim(z_min, z_max)
ax.set_title(title)
# plt.savefig("./myProject/Algorithm/pic/%s.png" % title) #
plt.show()
def get_X_AND_Y(X_min, X_max, Y_min, Y_max):
X = np.arange(X_min, X_max, 0.1)
Y = np.arange(Y_min, Y_max, 0.1)
X, Y = np.meshgrid(X, Y)
return X, Y
# rastrigin
def Rastrigin(X_min = -5.52, X_max = 5.12, Y_min = -5.12, Y_max = 5.12):
A = 10
X, Y = get_X_AND_Y(X_min, X_max, Y_min, Y_max)
Z = 2 * A + X ** 2 - A * np.cos(2 * np.pi * X) + Y ** 2 - A * np.cos(2 * np.pi * Y)
return X, Y, Z, 100, "Rastrigin function"
# Ackley
def Ackley(X_min = -5, X_max = 5, Y_min = -5, Y_max = 5):
X, Y = get_X_AND_Y(X_min, X_max, Y_min, Y_max)
Z = -20 * np.exp(-0.2 * np.sqrt(0.5 * (X**2 + Y**2))) - \
np.exp(0.5 * (np.cos(2 * np.pi * X) + np.cos(2 * np.pi * Y))) + np.e + 20
return X, Y, Z, 15, "Ackley function"
# Sphere
def Sphere(X_min = -3, X_max = 3, Y_min = -3, Y_max = 3):
X, Y = get_X_AND_Y(X_min, X_max, Y_min, Y_max)
Z = X**2 + Y**2
return X, Y, Z, 20, "Sphere function"
# beale
def Beale(X_min = -4.5, X_max = 4.5, Y_min = -4.5, Y_max = 4.5):
X, Y = get_X_AND_Y(X_min, X_max, Y_min, Y_max)
Z = np.power(1.5 - X + X * Y, 2) + np.power(2.25 - X + X * (Y ** 2), 2) \
+ np.power(2.625 - X + X * (Y ** 3), 2)
return X, Y, Z, 150000, "Beale function"
# Booth
def Booth(X_min = -10, X_max = 10, Y_min = -10, Y_max = 10):
X, Y = get_X_AND_Y(X_min, X_max, Y_min, Y_max)
Z = np.power(X + 2*Y - 7, 2) + np.power(2 * X + Y - 5, 2)
return X, Y, Z, 2500, "Booth function"
# Bukin
def Bukin(X_min = -15, X_max = -5, Y_min = -3, Y_max = 3):
X, Y = get_X_AND_Y(X_min, X_max, Y_min, Y_max)
Z = 100 * np.sqrt(np.abs(Y - 0.01 * X**2)) + 0.01 * np.abs(X + 10)
return X, Y, Z, 200, "Bukin function"
# Three-hump camel
def three_humpCamel(X_min = -5, X_max = 5, Y_min = -5, Y_max = 5):
X, Y = get_X_AND_Y(X_min, X_max, Y_min, Y_max)
Z = 2 * X**2 - 1.05 * X**4 + (1/6) * X**6 + X*Y + Y*2
return X, Y, Z, 2000, "three-hump camel function"
# Hölder table
def Holder_table(X_min = -10, X_max = 10, Y_min = -10, Y_max = 10):
X, Y = get_X_AND_Y(X_min, X_max, Y_min, Y_max)
Z = -np.abs(np.sin(X) * np.cos(Y) * np.exp(np.abs(1 - np.sqrt(X**2 + Y**2)/np.pi)))
return X, Y, Z, 0, "Hölder table function", -20
z_min = None
# X, Y, Z, z_max, title = Rastrigin()
# X, Y, Z, z_max, title = Ackley()
# X, Y, Z, z_max, title = Sphere()
# X, Y, Z, z_max, title = Beale()
X, Y, Z, z_max, title = Booth()
# X, Y, Z, z_max, title = Bukin()
# X, Y, Z, z_max, title = three_humpCamel()
# X, Y, Z, z_max, title, z_min = Holder_table()
draw_pic(X, Y, Z, z_max, title, z_min)
다음은 상기 코드 가 그린 테스트 함수 의 그림 입 니 다.그림 의 색깔 이 아직 예 쁘 지 않 은 것 같 아서 나중에 최적화 해서 고 쳤 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.