加快检查两个变量是否相等的过程

时间:2018-11-29 20:48:25

标签: python dynamic-programming markov-chains

我正在尝试在Python中实现马尔可夫决策过程,并且在运行以下代码时出现速度方面的麻烦(不足为奇...):

def p(j, state, action):
    if (np.linalg.norm(j[0,:]-np.array([-100,-100]))>0.1 and np.linalg.norm(state[0,:]-state[1,:])<0.1):
        return 0
    elif (np.linalg.norm(j[0,:]-np.array([100,100]))>0.1 and np.linalg.norm(state[0,:]-np.array([5,1]))<0.1):
        return 0
    elif (np.linalg.norm(j[0,:]-np.array([100,100]))<0.1 and np.linalg.norm(state[0,:]-np.array([5,1]))<0.1):
        return 1
    else: ....... (here other stuff follows but this isnt the issue)

假设我处于状态(state),该函数应该给我使用输入(j转换为状态(action)的可能性。 ),它可以正常运行,但速度很慢。

当前,我需要在变量jstate上循环两次,它们分别是2 x 2数组。理想情况下,我将能够弄清楚如何编写这样的函数,该函数输入NOSTATES x 2 x 2数组,其中NOSTATES是状态数。

我想我应该尝试向量化我的代码,但是不幸的是,我不确定当时如何实现相等性检查。

任何帮助将不胜感激!

编辑:p()的典型输入为:

j=np.array([[1,1],[3,3]]) state =np.array([[1,2],[2,3]]) action = [0,1]

0 个答案:

没有答案