问题标签 [ms-solver-foundation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
946 浏览

c# - 在 Microsoft Solver Foundation 中处理实数范围

我正在处理的求解器项目(C#)需要测试是否存在解决方案,无论质量如何,或者是否存在某些输入落在某个预定义的实数范围内的问题。

我将以下示例放在一起,其中包含一个约束,表示值(参数类型)和由两个变量(决策类型)组成的方程之间的简单相等测试。

我观察到的是,如果约束被改变以至于没有解,并且其中表示的方程是除法或乘法,求解器似乎停止了,没有给出关于它是否仍在求解的任何反馈。

我怀疑这种类似停顿的行为与求解器正在处理实数并且正在进行一些详尽的搜索这一事实有关,但是如果更改约束以便有一个已知的解决方案,它会非常快速地工作。

在搜索了各种论坛之后,我仍然不确定是什么导致了这种行为,或者,鉴于这是我第一次使用 Microsoft Solver Foundation,我的实施方法是否正确。

有没有其他人遇到过这个问题或确实有解决方案?

d。

0 投票
1 回答
353 浏览

c# - 使用 Solver 在 2D 区域上找到最佳点

这是我第一次使用 Solver Foundation,我不明白如何指定目标函数。我试图使用 Solver 解决的问题是根据目标函数在 2D 表面上找到最佳点。作为输入数据,我在这个表面上有 3 个点,声波需要从源(最佳点)到达这三个点的时间差。这个时间差导致距离差。

这是我的代码:

GoalFunction() 定义如下:

上面的代码抛出异常 ( decisionX.ToDouble()),因为此时尚未初始化决策。

有人可以帮我重写吗?


我已将我的 GoalFunction 重写为 all-Model.methods-calls。

此代码有效,但返回 {0.0} 作为 LocalOptimal 解决方案,而最优是 {2,2}(我检查过,GoalFunction 为 {2,2} 返回 0,而为 {0,0} 返回更高的值。可能是 {0,当决策是 Domain.Real 时,0} 是起点。

Solution.GetNext() 没有任何改变。


如果我限制域,返回的解决方案是 {1.9999999984154413,1.99999999990963979} 所以它是正确的。

但为什么解算器不启动完整的真实域?还是不知道

也许有一天有人会回答......我希望,但我将下面的答案标记为正确。

0 投票
1 回答
359 浏览

c# - 取决于 MSF 中的决策的参数

在 Microsoft Solver Foundation 中,我想知道是否可以添加一个参数,其值取决于决策值。

即我想要 TSP 模型的一些东西,但它也应该考虑从一个点到另一个点的流量。请注意:交通取决于销售人员在该路线上行驶的时间。

这是模型:

我有一个城市之间所有可能组合的矩阵。

决策变量是Order销售人员的路线。0 是第一个,1 秒,...

我有一个属性timeToTravel,该属性绑定到一个属性,该属性从该值计算路线发生的时间,Order并返回行程时间,包括当天该时间的交通量。

在我看来,参数值在Solve调用函数时被读取一次并缓存,我正确吗?如果是,有没有人有任何建议来解决这个问题?

最初我在 MSF 论坛上问了这个问题,但我认为它会在 Stack Overflow 上得到更多关注。此外,我对 MSF 以外的其他求解器持开放态度,但我更愿意留在 .NET 环境中。

0 投票
1 回答
612 浏览

c# - 如何在 MS Solver Foundation 中使用 If 运算符?

这段代码有什么问题?:

求解器冻结并且不给出任何结果。我正在和If操作员一起玩,试图看看它是如何工作的,但似乎没有达到我的预期。不确定我是否以正确的方式使用它(我想说,如果a等于,2b必须等于2,否则1)。

我也试过

结果相同。

0 投票
1 回答
836 浏览

c# - Microsoft Solver Foundation 是否存在漏洞?

oml我在尝试做另一件事时错误地写了这个不可行的。问题在于底部的约束是不可能的,因为右侧的最小值必须为零,左侧的最大值必须大于零(当然,除非我遗漏了一些东西)。

问题是,如果你运行它,MSF 会很乐意给你一个答案,而不是告诉你是不可行的。

编辑:

这是我的报告给我的:

0 投票
1 回答
347 浏览

c# - 将地理分布表示为线性概率的约束?

我现在正在学习 Solver Foundation。我实际上正在为我的项目插入 lpsolve,但我认为我的问题是如何最好地表示我的约束的一般问题。

我认为,我有一个相当典型的背包或包装问题。我有一组位置,每个位置都有一个“分数”。我想选择满足目标“分数”的最少位置数。

(实际上,它比这要复杂一些——每个位置都有许多不同的属性,我经常会针对多个属性进行定位)。

到目前为止,一切都很好。但是,我有一个额外的限制 - 我想最大化我选择的位置的地理分布。我如何表示该约束?

这是我现在拥有的基本示例:

这将只选择前三个位置,这给了我 60 的目标,但是这三个位置非常接近地聚集在一起。我更希望它选择前三个(ID 0 - 2)和后两个(ID 3 和 4)中的一个,它们分布得更远。

有人可以在这里提供一些指导吗?提前谢谢了。

0 投票
1 回答
1017 浏览

ms-solver-foundation - 将二维双精度数组绑定到 MS Solver Foundation 中的参数

如何将二维数组绑定到 Solver Foundation 中的参数?尝试将数组定义为 double(,); 作为 double()() 和元组列表 (double, i, j)。

我也尝试实现 SetBinding 的扩展方法,这里建议;http://blogs.msdn.com/b/solverfoundation/archive/2010/06/28/simpler-data-binding-using-linq-and-extension-methods.aspx

目前在倒数第三行失败;m_cov.SetBinding(CovMatrix),出现错误“此方法仅在对具有 0 索引的参数调用时有效”

我正在使用最新版本并在 vb.net 中工作。任何帮助表示赞赏。

谢谢,尤格

0 投票
0 回答
1436 浏览

optimization - Microsoft Solver Foundation Services 中是否有与 Excel 中的 Solver 匹配的指令?

我有一个 Excel 工作簿,它使用 Solver 加载项来最大化其中包含平方根的一组方程(例如,它是非线性的)。我正在尝试使用 Microsoft Solver Foundation 在 C# 中重新实现这一点。我尝试了一些不同的指令,但无法找到一个求解器来重现我在 Excel 中得到的结果。

我尝试使用混合本地搜索,但结果完全错误,并且结果最大化并没有接近 excel。如果我使用内点法并删除平方根(从 excel 和 c# 中),我非常接近 excel 优化,但这对我没有用,因为我试图匹配包含正方形的 excel 模型根。

我认为混合本地搜索的问题在于我没有获得全局最大值。我没有找到任何其他支持 NLP 的内置指令。

我认为 Excel Solver 使用 GRG2 算法。有什么方法可以重现 MSF 中 Excel 求解器使用的算法?

作为参考,下面是 MSF 附带的 QP 示例,其中我在注释 '// #######' 之前所做的更改:

0 投票
4 回答
2436 浏览

c# - Microsoft Solver Foundation 变量限制

您好我正在使用 Microsoft Solver Foundation 解决线性规划问题,但变量已超过 1000,并提示以下错误:{“此版本产品已超出模型大小限制。请联系 Microsoft Corporation 获取许可选项。\ r\n限制:NonzeroLimit = 100000,MipVariableLimit = 2000,MipRowLimit = 2000,MipNonzeroLimit = 10000,CspTermLimit = 25000,Expiration = none。"}

有没有更好的高效求解器,可以接受超过 1000 个可以在 Visual Studio IDE 中工作的变量?谢谢。

0 投票
1 回答
319 浏览

ms-solver-foundation - 目标函数的 Math.Min

给定两个决策变量 d1,d2,如果目标函数是它们的和,它们只包含数字 0 和 1,我们可以将其表示为

现在我想取其中较小的一个,即 Term

我想写一个目标函数

如何在这里表达 Math.min?