我将尝试使用Python构建一个仪表盘应用程序,模拟Q学习问题。在实施算法之前,我只关注使表格起作用,随机增加值,并在每次增加之间等待1秒钟。
这里的Q是一个pandas数据帧:
我能够使用那个打印语句使它工作,在控制台上表格的值确实被更新了。然而在浏览器中,它只会在第一次更新,之后就保持不变了。以下是代码:
table = ff.create_table(Q, height_constant=20)
table.layout.width=300
def update_Q(Q):
for i in range(len(Q)):
for j in range(1, len(Q.columns)):
Q.iloc[i,j] += np.random.choice([0,1,2])
print(Q)
return Q
我能够使用那个打印语句使它工作,在控制台上表格的值确实被更新了。然而在浏览器中,它只会在第一次更新,之后就保持不变了。以下是代码:
# Browser visualization
app.layout = html.Div([
html.H1(children='Frozen Lake: Q-Learning Demo'),
dcc.Graph(id='table', figure=table),
dcc.Interval(
id='time',
interval=1*1000, # in milliseconds
n_intervals=0)
]
)
@app.callback(Output(component_id = 'table', component_property='figure'),
[Input(component_id = 'time', component_property='n_intervals')])
def update_table(n):
# Update values
new_table = ff.create_table(update_Q(Q))
time.sleep(1)
return new_table
if __name__ == '__main__':
app.run_server()
我错过了什么?