Python 我如何找到一个动态规划的解决方案,以最大限度地满足,最短的时间问题?
我正在尝试使用动态编程(python)找到以下问题的优化解决方案: 假设存在满意度值、实现此类满意度所需的时间以及最佳时间(与每个单独时间进行比较),如何安排满意度值以在尽可能短的时间内获得最大满意度 如果满意值用s表示,达到满意的时间用t表示,则向量对可以表示为:Python 我如何找到一个动态规划的解决方案,以最大限度地满足,最短的时间问题?,python,optimization,dynamic-programming,Python,Optimization,Dynamic Programming,我正在尝试使用动态编程(python)找到以下问题的优化解决方案: 假设存在满意度值、实现此类满意度所需的时间以及最佳时间(与每个单独时间进行比较),如何安排满意度值以在尽可能短的时间内获得最大满意度 如果满意值用s表示,达到满意的时间用t表示,则向量对可以表示为: <(s1, t1), (s2, t2) ... (sn, tn)> 我的问题是: 这可以看作是问题的动态解决方案吗 背包问题的哪种变体可以考虑 我如何用数学表示它 这是背包的一个变体,背包是值,t是权重。背包解决方案为
<(s1, t1), (s2, t2) ... (sn, tn)>
我的问题是:
这是背包的一个变体,背包是值,t是权重。背包解决方案为您提供了一个“时间t内可实现的最大满意度”表,您可以查找任何满意度,并找到达到该满意度水平的最短时间。在术语或编程方面,我敢说,需要进行转换才能将向量更改为(wsn,tn)其中,wsn是加权满意度wrt。考虑到tn
def pp(satifactions, satisfaction_values, time_values, optimal_time, memo):
list4 = []
for i, j in zip(satisfaction_values, time_values):
if (i,j,optimal_time) not in memo:
memo[i,j,optimal_time] = (i * (optimal_time/j))
list4.append(memo[i,j,optimal_time])
zipped_lists = zip(list4, satifactions)
sorted_pairs = sorted(zipped_lists)
tuples = zip(*sorted_pairs)
list4, satifactions= [list(tuple) for tuple in tuples]
return list(reversed(satifactions))
def getPP (satifactions, satisfaction_values, time_values, optimal_time):
memo = {}
return pp(satifactions, satisfaction_values, time_values, optimal_time, memo)
print(getPP(["LOK", "MP", "HM", "AR", "SG", "VV"], [0.37, 0.87, 0.27, 0.87, 0, 0.56], [6, 1, 15, 3, 3, 3], 6))