试图使用Solver基金会解决以下问题:
给定:范围:{x _x从双}和点:{(x,y) \ x,y从双}
从double}中找到分段线性函数-{ (a,b) \x,a,b,其中:
示例:范围:{1,2,3},点{(1,40),(1.5,40),(2.5,70)}
我的解决方案:
使用Simplex尽量减少下列问题:
我范围外加:
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 ms。你能告诉我我做错了什么吗?我可以在哪里进行优化?这种情况下单纯形方法正确吗?我们有比SolverFoundation更好的软件解决方案进行优化吗?
发布于 2013-12-04 05:32:27
尝试从OML字符串加载模型,强制执行单纯形求解器以检查您的问题是否是LP。
https://stackoverflow.com/questions/16643411
复制相似问题