【发布时间】:2020-03-28 05:05:57
【问题描述】:
目前,我正在为我和一位同学一起做的一门课程研究一个优化问题。基本上用三个方程来描述。
其中 n 是一个取值在 1 到 1180 之间的索引,Pr 是一个已知向量(意味着该向量的所有值都是已知且恒定的),我们必须找到向量 Ps 导致 Ef[1180] 的最小值。
从逻辑上讲,答案是将 Ps[n] 的所有值设置为无穷大。但是,有一些限制:
此外,Es 和 Ps 的值必须始终为 1,000 的倍数以减小状态空间。
以上是我们从作业描述中得出的。但是,我们似乎无法弄清楚如何将其作为动态规划问题来解决。从一组方程到动态规划问题有很多例子。但是,这些示例都有两个或三个输入,并分别使用 2 维或 3 维字典。以方便数据重用。我们基本上有 1180 个输入。创建一个1180维的字典是不可行的
我们尝试为这个问题构建贝尔曼方程,但教授告诉我们这是错误的。然后我们考虑暴力破解状态空间,但这是一项疯狂的工作,因为输入向量 P_s 有 43^1180 种可能的组合。我们的一些同学建议我们查看此维基百科页面上的棋盘示例:
Wikipedia page on dynamic programming
但是,这个例子似乎只遍历了棋盘一次。成本函数的使用总是会为 Ps[n] 选择最高可能的值,以最小化 Ef[n]。但是,要选择这样一个正值,我们必须有 Es[n] > 0,这只会发生在 Ps[i] 的先前元素 for i 取负值。但是成本函数将防止 Ps 具有负值。由于成本函数不允许负值并且 Es[n] >= 0 约束不允许负值,这将导致 Ps 仅包含零,这当然不会导致 Ef[1180] 的最低值。
任何关于如何继续的提示都会很好。我们已经盯着这个问题好几天了,现在我们完全迷失了。
【问题讨论】:
-
什么是a_m,负数,正数?
-
好问题,它是肯定的:2.42。
-
我从朋友那里得到了一些帮助,我正在研究解决方案。当我解决它时,我会发布。但是,如果您有一些提示,请随时发表评论!
标签: algorithm dynamic dynamic-programming