【问题标题】:Optimizing output parameters优化输出参数
【发布时间】:2016-05-20 12:00:12
【问题描述】:

我正在尝试使用 C# 作为编程语言来解决问题陈述。 在输入(双精度/十进制)的问题系统中,例如 Hi,生成的输出是包含多个参数(F iPiTi)。我必须以某种方式仅过滤掉数据集中满足以下条件的条目。

  • Fi > Fmin,其中 Fmin > 是一些常数
  • Pi > Pmin,其中 Pmin > 是一些常数
  • Ti Tmax,其中 Tmax > 是一些常数

在这样的情况下,我可以使用一种有效的算法吗?我可以将输出参数值很好的 Hi 的最佳值集归零约束范围内。此外,我认为在这种情况下使用遗传算法是有道理的,但不知何故,我无法制定和适应遗传算法特有的问题。

非常感谢任何指针/建议。

【问题讨论】:

  • 你说的 我可以在 Hi 的一组最佳值上归零是什么意思
  • 对于给定的“H”值的含义,输出值完全在我的问题陈述中所述的约束范围内。
  • 您可以在这里尝试使用遗传算法。您应该只选择适当的适应度函数和变异方案。 Fi,Pi,Ti 是什么意思? Fi - Fmin 越大越好,反之亦然?这很重要,因为我们必须说明一些突变“方向”。
  • 另外,将此主题放在scicomp.stackexchange.com 会更有成效。这完全是他们的工作;)
  • 很抱歉,这是具体的编程问题

标签: c# optimization mathematical-optimization genetic-algorithm


【解决方案1】:

我怀疑遗传算法是否有意义,因为您只有一个输入变量 (Hi) 来确定输出 (Fi, Pi, Ti)。遗传算法的强大之处在于它将好的解决方案融合到新的解决方案中。如果您的解决方案只有一个数字,混合两个好的解决方案可能意味着您在中间找到一些 Hi(例如平均值 -> 0.5Hi1 + 0.5Hi2 或其他一些线性组合 aHi1 + (1-a)Hi2 与 a在 0 和 1 之间)。

我建议研究多启动本地搜索启发式方法,例如 link。这是一个非常可靠的启发式方法,可让您探索 Hi 的解决方案空间。 以最简单的形式,这种启发式算法计算 Hi 的 N 个随机值的性能,然后在这 N 个初始值中寻找性能最佳的 Hi 值区域的进一步改进。

这类东西对代码来说也非常简单,假设您有办法从 Hi 输入中获取 Fi、Ti 和 Pi 值,并且您有办法找出您的解决方案中的哪一个执行“最佳”(例如通过 cmets 中提到的适应度函数)。

【讨论】:

    【解决方案2】:

    嗯,我很难猜到。我不知道 Fi 等函数的属性。 对数屏障方法在这里可能很有趣。或 SQP 方法。但它必须是可区分的。 否则模拟退火可能会很有趣。 但这些只是一些猜测。这真的取决于问题。

    【讨论】:

      【解决方案3】:

      你可以使用 Linq 查询

      var 结果 = DataSet.Where(x=>x.Fi> Fmin && x.Pi>Pmin && Ti

      【讨论】:

      • 据我所知,作者正在谈论一些优化方法。他必须接近最佳 Hi 值。
      • 它不是 Hi...它就像变量名 Hi 表示十进制或双精度类型的输入
      • 你没有得到我。我的意思是没有完整的输出数据集。我们有实数输入并得到一些实数输出。我们无法枚举所有可能的 Hi 值并获得完整的输出数据集。我们必须在这里使用一些优化技术。
      • 是的,这就是我要找的。一种优化机制,只选择那些紧密满足所提出的约束的输入和相应的输出参数
      猜你喜欢
      • 2017-06-15
      • 1970-01-01
      • 2018-07-24
      • 1970-01-01
      • 2021-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多