问题标签 [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 投票
2 回答
1671 浏览

ms-solver-foundation - 求解查普曼-理查兹方程

我需要找到一种方法来解决具有 3 个参数的 Chapman-Richards。方程是

F=a(1-EXP(-bt)) power c

这是一个非线性问题。目标是最小化误差,约束是 3 个变量必须 >= 0.0001。我们当前的实现使用 Excel 和 Solver 插件(GRG 非线性方法)。但是现在,我们需要在不使用 Excel 的情况下实现这一切。

我的问题是: 1. 是否可以使用 MS Solver Foundation 来解决这个问题?我已经阅读了一些文档并了解 MS Solver Foundation 使用 Nelder Mead Solver 或混合局部搜索求解器来解决非线性问题。有谁知道我的特定问题是否可以使用这些方法解决?而且,结果是否与使用 Excel 的 Solver 插件的 GRG 非线性方法相同?

  1. 如果没有,是否可以实现Excel Solver的GRG非线性方法?

  2. 还有其他方法可以实现吗?

感谢您提前回复。卡尔

附录:对不起,我忘了说 t 是时间变量。a、b 和 c 是求解器可以更改的参数。

0 投票
0 回答
494 浏览

asp.net - Microsoft Solver Foundation - 从不返回值

我需要将使用求解器插件的 excel 电子表格移植到 ASP.NET c# 站点,我使用的是 Solver Foundation 3.1 无济于事。

该方程是迭代的,需要满足两个条件才能确定两个决策值。

电子表格上的两个决策值设置为 1

那么目标是在满足以下条件时找到Formula1的MAX:

所有公式都使用 Ng 和 Nv,点击求解更改 Ng 和 Nv 以满足每个方程,它需要电子表格上 22 次迭代的平均值。

我在 c# 中实现了它,如下所示:

我已经用了 3 天了,但仍然没有取得任何进展,求解器只是加载然后消失,从不超时,不返回值等。我的代码中有什么根本错误吗?

任何帮助表示赞赏!

0 投票
2 回答
1382 浏览

c# - Microsoft Solver Foundation 模运算符

我正在尝试通过执行以下操作向我的求解器基础添加一个基本约束:

我收到一个编译错误,提示“运算符 '%' 不能应用于 'Microsoft.SolverFoundation.Services.Decision' 和 'Microsoft.SolverFoundation.Services.Decision' 类型的操作数”。

这是有道理的,因为许多运算符不受支持。但是,许多不受支持的运算符(sin、cos、tan 等)可用作 Model 类的特定方法,如下所示:

如果我将“Sum”替换为“Mod”,则没有可用的方法。

关于如何在 Solver Foundation 中执行模运算的任何想法?根据此处的文档,它是受支持的。

我将开始使用反射器来挖掘代码,但我想我也会在这里发布它。如果我找到解决方案,我将更新我的问题以包含答案。

0 投票
2 回答
1767 浏览

mathematical-optimization - C# 中的 Solver Foundation 比 Excel 的求解器有更大的错误

我开始在 WPF/C# 应用程序中使用 Solver Foundation,它应该替换解决线性问题的 Excel 工作表,如下所示:

  • 混合 A:(20% A + 70% B + 10% C)
  • 混合 B:(35% A + 65% C)
  • 混合 C:(10% A + 80% B + 10% D)

我需要多少每种混合物才能尽可能接近(15% A + 70% B + 10% C + 5% D)。

非常简单,即使对于 Excel。所以...我在 OML 字符串中创建了这个模型,并使用 Solver Foundation 对其进行求解,但结果与我在 Excel 中得到的结果不同,并且在每种情况下,我得到的二次误差在 Solver Foundation 结果中都更大(在 Excel 表中检查)。

有什么方法可以配置求解器以获得与 Excel 中相同的结果?如果您需要查看 OML,请询问,我会更新问题。

0 投票
0 回答
310 浏览

c# - Solver Foundation 和 .NET GAC

我使用微软求解器基础制作了一个应用程序,它很棒。但我的问题是我的客户没有安装微软求解器基础,所以当运行程序时,他们得到了这个错误:

无法加载文件或程序集“Microsoft.Solver.Foundation, Version=3.0.2.10889, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或其依赖项之一。该系统找不到指定的文件。

我认为是因为它已安装到 GAC 中,但我可以在客户端机器上执行此操作,有什么解决方法吗?

也许我只能使用 dll?

0 投票
1 回答
1138 浏览

asp.net - Microsoft Solver Foundation:将循环中的决策变量添加到约束

我正在尝试在 Visual Studio 2010 中使用带有 VB.NET 的 Microsoft Solver Foundation 创建一个优化模型。基本上,我列出了我需要雇用的 3 种类型的员工(调酒师、服务员和女招待),每种员工的工资和性能评级。我为每个潜在员工创建了一个决策变量。它设置为 0 表示不雇用决定,1 表示雇用决定。

当我尝试计算员工的总成本、总绩效得分或每种员工的总和时,我收到一个错误,指出我的决策变量还没有值。

有没有一种更简单的方法来添加这些约束(可能在循环中),而无需在每个约束中单独列出整个员工数据库的每个决策变量?

这是我正在使用的代码。

0 投票
1 回答
1095 浏览

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

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

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

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

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

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

在此处输入图像描述

我的解决方案:

使用 Simplex 最小化以下问题:

foreach 我范围添加:

来自 i 范围内的点的 foreach 点添加约束

然后添加目标:

并得到解决方案:

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

0 投票
1 回答
297 浏览

c# - Microsoft Solver Foundation UnsolvableModelException

我正在尝试使用 Microsoft Solver Foundation 解决 LP(网络问题)。我的代码在 C# 中。我收到以下错误: UnsolvableModelException 未处理。求解器在求解模型时抛出异常。 但是当我在较小的网络上解决同样的问题时,我没有收到这个错误。那么错误是因为约束和变量的数量太大而出现的吗?错误的原因是什么?

提前致谢。

0 投票
2 回答
2267 浏览

ms-solver-foundation - Microsoft Solver Foundation:企业版

在哪里可以下载 Microsoft Solver Foundation 的企业版?我能够在线获得速成版,但它对变量和约束的数量有限制。我想用企业版解决大型LP。

0 投票
1 回答
295 浏览

algorithm - 使用 F# 在 Microsoft Solver 中添加约束

我正在使用 Microsoft Solver Foundation 和 F# 实现图形着色问题的解决方案。最近我发现了这段文档:

http://msdn.microsoft.com/en-us/library/ff826354(v=vs.93).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1

它解释了如何使用 C# 实现这一点。我试图翻译这个,但添加约束存在问题。在 C# 中,这很简单:

然而,对 F# 的文字翻译不起作用:

过了一会儿,我在 Term 类中找到了一个函数,可以用它来代替:

但是,使用这个“Term.op_Inequality”非常不方便。有没有办法更好地解决我的问题?