A表示需要在每台机器上处理的任务。总共给出了5个任务T0到T4。
B是准备机器处理已添加到任务之前的任务所需的设置值。设置-b 0至b3表示“b”矩阵中的值。每个任务可能有不同的值,并且必须在每台机器(M0,M1,M2,M3)上处理。机器-M0至M3表示基于动态编程逻辑计算的最大值。
给定的程序顺序列表用于指定a和B矩阵中的行应在机器上处理的顺序。在这种情况下,它从第0行开始,一直到第4行。
import numpy as np
a = np.array([[4, 3, 6, 2], [1, 4, 3, 5], [2, 5, 2, 3], [5, 2, 4, 1], [3, 6, 1, 4]])
b = np.array([[0, 2, 3, 1], [2, 0, 1, 3], [3, 1, 0, 2], [1, 3, 2, 0], [2, 1, 3, 0]])
order = [0, 1, 2, 3, 4]
t = np.zeros((a.shape[0], a.shape[1]))
def calculate_matrix(order, a, b):
for i in range(a.shape[0]):
for j in range(a.shape[1]):
if i == 0 and j == 0:
t[i, j] = b[order[i], j] + a[order[i], j]
elif i == 0:
t[i, j] = b[order[i], j] + t[i, j - 1] + a[order[i], j]
elif j == 0:
t[i, j] = b[order[i], j] + t[i - 1, j] + a[order[i], j]
else:
t[i, j] = max(t[i - 1, j] + b[order[i], j], t[i, j - 1] + b[order[i], j]) + a[order[i], j]
return t
final_matrix = calculate_matrix(order, a, b)
print(final_matrix)
下面是Excel计算结果t:
[[4, 9, 18, 21], [7, 13, 21, 29], [12, 18, 23, 32], [18, 23, 29, 33], [23, 30, 34, 38]]
但是我从给定的程序中得到一个矩阵
[[4. 9. 18. 21.], [7. 13. 22. 30.], [12. 19. 24. 35.], [18. 24. 30. 36.], [23. 31. 35. 40.]]
1条答案
按热度按时间cotxawn71#
我发现了两个问题:
t[i - 1, j]
应该引用t[i - 1, j - 1]
单元格。这是我最好的尝试。搭乘该线路
并将其替换为
输出量:
除两个地点外,其他地点都是如此。我不知道为什么在这些地方是错误的。