我正在运行一个遗传算法,并希望随着算法的发展,绘制每一代人的适应度。目前,我的代码是这样工作的:
# INITIALIZATION - PLEASE NOTE: INCOMPLETE EXAMPLE
fig = plt.figure(1)
ax1 = fig.add_subplot(1, 1, 1)
ax1.set_xlim([0, generations])
ax1.set_ylim([1000, 10000])
ax1.set_title('Creature fitness')
ax1.set_ylabel('Fitness')
ax1.set_xlabel('Generations')
xs = []
ys = []
line, = ax1.plot(xs, ys)
generation = 1
generations = 100
while generation < generations:
# - some calculations here
generation_fitness = x # from calculations above
xs.append((generation))
ys.append((generation_fitness))
line.set_xdata(xs)
line.set_ydata(ys)
plt.pause(0.1)
然而,这会产生一个非常断断续续的图形,如:
我认为这会减慢代码的执行速度
我想要一些类似于“风速”图的东西here,但希望不会太复杂
您的问题不是很具体,但对于这些类型的问题,通常情况下,您应该将应用程序的UI(图形)和逻辑分离到线程中,以便它们不会相互干扰
您应该启动一个单独的线程来渲染图形,并使用一些线程安全的构造将数据从逻辑线程传递到渲染线程。在这种情况下,您可能需要
queue.Queue
(谷歌it)相关问题 更多 >
编程相关推荐