下面是一个python函数来生成Markov路径(旅行商问题)。在
def generate_travel_path(markov_matrix, n):
assert markov_matrix.shape[0] == markov_matrix.shape[1]
assert n <= markov_matrix.shape[0]
p = markov_matrix.copy()
path = [0] * n
for k in range(1, n):
k1 = path[k-1]
row_sums = 1 / (1 - p[:, k1])
p *= row_sums[:, np.newaxis]
p[:, k1] = 0
path[k] = np.random.multinomial(1, p[k1, :]).argmax()
assert len(set(path)) == n
return path
markov_matrix
是一个预定义的Markov转移矩阵。代码从节点0开始生成一条路径,并根据该矩阵访问每个节点一次。在
不过我觉得功能比较慢。下面是53x53markov_matrix
的逐行配置文件:
如果我运行这个函数25000次,它将花费125秒以上。 有没有空间来提高速度?在
下面是一个生成马尔可夫矩阵的简单函数。在
def initial_trans_matrix(n):
x = np.ones((n, n)) / (n - 1)
np.fill_diagonal(x, 0.0)
return x
目前没有回答
相关问题 更多 >
编程相关推荐