gpt4 book ai didi

c# - 求解器基础单纯形求解需要大量时间

转载 作者:太空宇宙 更新时间:2023-11-03 13:42:05 25 4
gpt4 key购买 nike

尝试使用 Solver 基础解决以下问题:

给定:范围:{x | x 来自 double} 和点:{(x,y) | x,y 来自 double

求分段线性函数 - { (a,b) | a,b 来自 double} 其中:

  • 绘制的直线位于范围内的 x 之间。
  • 涵盖所有要点。
  • 图表下方的最小区域。

示例:范围:{1, 2, 3} ,点 {(1,40), (1.5,40), (2.5,70)}

enter image description here

我的解决方案:

使用 Simplex 最小化以下问题:

foreach 我的范围添加:

var ai = new Decision(Domain.RealRange(0, 100), null);
var bi = new Decision(Domain.RealRange(0, 100), null);
model.AddDecisions(a, b);

从落在第 i 个范围内的点中获取每个点添加约束

model.AddConstraints("c{0}".F(pointIdx), a * point.x + b >= point.y);

然后添加目标:

model.AddGoal("area", GoalKind.Minimize, goal);

并得到解决方案:

var solution = context.Solve(new SimplexDirective());

该解决方案有效地为我提供了正确的答案,但对于简单的情况需要花费大量时间,它需要 130 毫秒。你能告诉我我做错了什么吗?我在哪里可以优化?Simplex 方法是否适合这种情况?我们是否有比 SolverFoundation 更好的软件解决方案来进行优化。

最佳答案

尝试从 OML 字符串加载您的模型,强制使用单纯形求解器来检查您的问题是否是 LP

关于c# - 求解器基础单纯形求解需要大量时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16643411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com