- 老师答疑区
- 帖子详情
老师参与
Python求解动态规划(工序问题)把自己绕进去了
澄碧钓徒
发表于2019年10月12日
<p><code class="brush:python;toolbar:false" >p = [[0] * 3 for i in range(9)] #3台机器,问题分9步
t = [[9, 8, 15], [8, 10, 11], [6, 4, 9]] #对应本道工序与下道工序的间隔时间
for i in range(3):
p[0][i] = t[0][i]
temp = [[] for i in range(9)]
for i in range(1, 9):
for j in range(3):
for k in range(3):
temp[i].append(p[i-1][j] + t[j][k]) #应该就是这一步出了问题?
p[i][j] = min(temp[i])
#print(temp[i])
print(min(p[9])) #最后一行的最小值对应最短时间
#print(p)</code></p><p>说实在的之前的一年多每次我看到MATLAB第一期还有新帖出现我让他们去最新的一期提问的时候我自己也是不好意思再提问的,现在我还是想通了来第五期发帖吧,实际上这个问题是夏伟怀老师的《运筹学》专题五作业第一题(透露其他课的题目本来就不太好,我实在是不好意思把题干截图了),我的思路是通过迭代求每步的最优决策,p矩阵最后一行的最小值对应最短时间,t对应的是本道工序与下道工序的间隔时间,三台机器三行三列,但是第11行输出中间结果明显不对头啊(手算结果应该是68),比如temp[1][0]正常的值是16应该等于min(t[0][0]+p[0][0],t[1][0]+p[0][1],t[2][0]+p[0][2])吧(感觉这里思路有点混乱……),那边肯定只有手算提交了,但是这段代码刘老师能不能帮我看下问题出在哪里?</p>
1
回复