私は python-3.x を使用しており、この cod を実行しようとしていますが、次のエラーが発生しました。
Z = np.fromiter(map(schwefel, zip(X.flat,Y.flat)), dtype=np.float16,
count=X.shape[0]*X.shape[1]).reshape(X.shape)
ValueError: setting an array element with a sequence.
問題は私が解決できなかった float dtype のすべてであることに感謝します。提案やアドバイスをいただければ幸いです。
import random
from math import sin, cos, pi, exp, e, sqrt
from operator import mul
from functools import reduce
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import matplotlib.pyplot as plt
try:
import numpy as np
except:
exit()
def schwefel(individual):
N = len(individual)
return 418.9828872724339*N-sum(x*sin(sqrt(abs(x))) for x in individual),
fig = plt.figure()
# ax = Axes3D(fig, azim = -29, elev = 50)
ax = Axes3D(fig)
X = np.arange(-500, 500, 10)
Y = np.arange(-500, 500, 10)
X, Y = np.meshgrid(X, Y)
Z = np.fromiter(map(schwefel, zip(X.flat,Y.flat)), dtype=np.float16, count=X.shape[0]*X.shape[1]).reshape(X.shape)
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet, linewidth=0.2)
plt.xlabel("x")
plt.ylabel("y")
plt.show()