Python 我如何找到一个动态规划的解决方案,以最大限度地满足,最短的时间问题?

Python 我如何找到一个动态规划的解决方案,以最大限度地满足,最短的时间问题?,python,optimization,dynamic-programming,Python,Optimization,Dynamic Programming,我正在尝试使用动态编程(python)找到以下问题的优化解决方案: 假设存在满意度值、实现此类满意度所需的时间以及最佳时间(与每个单独时间进行比较),如何安排满意度值以在尽可能短的时间内获得最大满意度 如果满意值用s表示,达到满意的时间用t表示,则向量对可以表示为: <(s1, t1), (s2, t2) ... (sn, tn)> 我的问题是: 这可以看作是问题的动态解决方案吗 背包问题的哪种变体可以考虑 我如何用数学表示它 这是背包的一个变体,背包是值,t是权重。背包解决方案为

我正在尝试使用动态编程(python)找到以下问题的优化解决方案:

假设存在满意度值、实现此类满意度所需的时间以及最佳时间(与每个单独时间进行比较),如何安排满意度值以在尽可能短的时间内获得最大满意度

如果满意值用s表示,达到满意的时间用t表示,则向量对可以表示为:

<(s1, t1), (s2, t2) ... (sn, tn)>
我的问题是:

  • 这可以看作是问题的动态解决方案吗
  • 背包问题的哪种变体可以考虑
  • 我如何用数学表示它

  • 这是背包的一个变体,背包是值,t是权重。背包解决方案为您提供了一个“时间t内可实现的最大满意度”表,您可以查找任何满意度,并找到达到该满意度水平的最短时间。在术语或编程方面,我敢说,需要进行转换才能将向量更改为(wsn,tn)其中,wsn是加权满意度wrt。考虑到tn大于所有tn,所需时间和简单地从向量max(wsn)中移除。我不确定你在问什么,你能澄清一下吗?你是在寻找解决方案,还是在寻找问题类别的名称?“我如何考虑最佳时间,比如说方程式中的X?”–什么方程式?这是背包的一种变化,t是值,t是重量。背包解决方案为您提供了一张“时间t中可实现的最大满意度”表“,您可以查找任何满意度,并找到达到该满意度水平所需的最短时间。在术语或编程方面,我敢说,需要进行转换才能将向量更改为(wsn,tn),其中wsn是加权满意度wrt。所需时间,只需从向量最大值(wsn)中删除即可。”考虑到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))