实施数学公式

时间:2018-11-22 21:25:50

标签: python python-3.x mathematical-optimization

我想在python中实现以下数学公式:

  

最优[i] [s] = max {最优[i + 1] [s],最优[i + 1] [s-J [i]] + V [i-1]   (s> J [i])}

我尝试了以下操作:

W={1:3,2:2,3:1,4:4,5:5,6:9,7:6,8:7}
V=[25,20,15,40,50,55,45,58]
optimal=[[]]
J=list(W.values())
s=12
for i in range(1,len(W)):
    while J[i]<s:
        optimal[i][s]=max(optimal[i+1][s],optimal[i+1][s-J[i]]+V[i-1])
print(optimal)

但是我收到一条错误消息:

  

列表索引超出范围。

1 个答案:

答案 0 :(得分:0)

您的表述类似于动态编程。如果您使用动态编程和python关键字进行搜索,则可以找到很好的示例。特别是https://www.geeksforgeeks.org/0-1-knapsack-problem-dp-10/https://codereview.stackexchange.com/questions/20569/dynamic-programming-knapsack-solutionhttps://www.geeksforgeeks.org/0-1-knapsack-problem-dp-10/