动态规划解决投资问题

问题描述

假设有4个工厂,投入总计60万元,如何分配各工厂的资金数,使得总的利润最大。
各工厂跟据投资数额获得的投资回报的表格如下:
在这里插入图片描述
解题思路:
老大让老二去统计给老二[10,60]后,老二的最大收益,然后根据老二所能获得的最大利润和自己对比,便能得到总最大利润。

而老二则延续老大的做法,老二让老三去统计给老三[10,60]后老三能取得的最大利润,然后根据老三所能获得的最大利润和自己相加对比,便能得到总最大利润,将此利润上报给老大。

老三则延续老二的做法,向老四进行统计,上传给老三。

而老四只需要将资金的收益上报给老三即可。

代码(python)

#将各工厂投资0-60万的收益放进一个二维数组
values = [
    [0, 20, 50, 65, 80, 85, 85],
    [0, 20, 40, 50, 55, 60, 65],
    [0, 25, 60, 85, 100, 110, 115],
    [0, 25, 40, 50, 60, 65, 70]
]
pre_max = values[3]

for k in range(len(values)-1, -1, -1):
	#k代表第几个工厂,k是二维数组的下标
    new_pre_max = [0]
    
    for i in range(10, 61, 10):
        #i代表k手中有i万元
        value_list = []
        for j in range(0, i + 1, 10):
            value_list.append(pre_max[int(j/10)] + values[k-1][int((i-j) / 10)])
        new_pre_max.append(max(value_list))

    pre_max = new_pre_max
print(max(pre_max))
发布了41 篇原创文章 · 获赞 8 · 访问量 1934

猜你喜欢

转载自blog.csdn.net/big_white_py/article/details/104101352