【问题标题】:Excel VBA: Solver does not seem to optimize "over time" using a date variable?Excel VBA:求解器似乎没有使用日期变量“随时间”优化?
【发布时间】:2011-04-04 14:55:07
【问题描述】:

我有一个优化问题,我尝试使用求解器解决。其中,一个决策变量是包含日期的单元格。 Solver 应根据时间序列选择最佳时间点。然而,虽然它改变了其他决策单元,但它永远不会改变这个!我什至尝试删除其他决策变量(保持它们不变) - 仍然没有变化。

为了帮助您锁定我的问题,我创建并附加了一个 Excel 表格(此处为:download link),其中包含一个简化的问题,求解器应从股票价格的时间序列中选择价格最高的日期。 (我知道这个特殊问题可以很容易地用 MAX 公式解决,但我真正的优化问题要复杂得多,并且不允许这种解决方案。)

求解器在初始日期值处仍然没有改变任何东西 - 即使在这个非常简化的设置中!

从数学的角度来看,目前的问题可以被描述为一个(非线性)阶跃函数,其中特定的时间点(在 x 轴上)对应于不同的价格(在 y 轴上的阶跃)。

是否有任何技巧可以让求解器处理时间(日期)值? 如果您有幸找到一组正确的 Solver 设置以使其获得正确的解决方案(即 2009 年 1 月 10 日),我将非常高兴听到它们。

编辑:我发现具有非平滑不连续函数的非线性问题(比如这个问题,它基本上是一个阶梯函数)通常很难被任何(非线性)线性优化器解决。精通此事的人可以帮助我以可解决的方式重新提出问题。我在 stack overflow 上找到了一个类似的主题,并提供了建议的解决方案(请参阅第一个答案),但不知道如何将其应用于我的问题。

谢谢, 史蒂夫

【问题讨论】:

    标签: excel vba date solver


    【解决方案1】:

    我让您的电子表格在 Excel 2010 中求解,方法​​是添加约束 $C$7 >= $C$13,并使用进化方法。您可能可以找出您提到的 Math 方法,但您可能需要在 VBA 而不是 Solver 对话框中进行。

    【讨论】:

    • 是的,我自己发现 Excel 2010 中的新求解器版本现在提供了进化方法。但感谢您指出。
    猜你喜欢
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    • 2016-04-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 2018-08-11
    相关资源
    最近更新 更多