问题标签 [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.
c# - Microsoft Solver Foundation 中是否有使用 Nelder-Mead 求解器的示例?
我一直在检查 Microsoft Solver Foundation 附带的示例,以获取使用 Neler-Mead 求解器的示例。示例网站上说有一个,但是当我打开用 C# 编写的 NLP 示例时,我看到的只是名为 SineX 的紧凑型准牛顿求解器示例。
有人找到有问题的样本,或者有任何其他使用 Nelder-Mead 求解器的样本吗?
MSDN 上的 MSF 示例列表(显示两个 NLP 示例,但我只看到一个) http://msdn.microsoft.com/en-us/library/ff524501 (v=vs.93).aspx
c# - 无法将类型“Microsoft.SolverFoundation.Services.Term”隐式转换为“bool”
我在下面的代码中遇到异常“无法将类型'Microsoft.SolverFoundation.Services.Term' 隐式转换为'bool'”,我应该如何解决?
下面是截图
visual-studio-2012 - 如何在 vs12 中引用 Microsoft.Solver.Foundation?
我正在尝试将 Solver Foundation 添加到我正在 Visual Studio 2012 中处理的项目中,但我在列表中找不到它。
我打开了其中一个示例项目,参考是 Microsoft.Solver.Foundation 但是我尝试在我的项目中的所有可用列表上搜索 Microsoft.S,但它没有出现。
如何将 Solver Foundation 加入我的项目?
solver - 在求解器基础目标中使用天花板函数?
我试图在我的 Solver 目标函数中将我的一个决策变量的上限乘以 2.5,但由于 foobar 变量不是双精度,因此无法应用 Math.Ceiling() 函数,它是一个“术语“ 多变的。有没有另一种方法可以表达同样的代码,这将在 Solver 中工作?
c# - 在 Solver Foundation 中将字符串转换为约束“术语”
我正在尝试使用 Solver Foundation 创建一个能够解决线性规划问题的应用程序。长话短说,我在尝试将字符串表达式转换为 Microsoft.SolverFoundation.Services.Term 时遇到了困难。
我想要做的是添加一个字符串作为模型的约束,但首先它必须转换为“术语”。
我尝试铸造(如上)但无济于事。
如何将字符串作为可接受的术语传递给 addConstraint 函数?
c# - 将 MS Solver Foundation 与矩阵乘法结合使用
我正在尝试使用Microsoft Solver Foundation来优化我遇到的涉及矩阵乘法的问题。我可以使用 Excel 的求解器来做到这一点,但我正在尝试将它集成到 C# 中并且遇到了麻烦。下面是一个例子的描述:
假设您有一个 (3x3) 矩阵y,定义为:
我想找到 (1x3) 矩阵x使得:x * y * x'
最小化。此外,x值的总和必须为 1,并且任何x值都不能小于 0。
这是我到目前为止的代码:
我坚持的部分是当你告诉它你想要最小化的内容时:
这部分通常包含一个方程(例如d1 * d2 + d3
),但矩阵乘法并不是那么简单。
我可以创建一个执行乘法并返回 a 的函数double
,但AddGoal()
需要一个Term对象,而且我还必须对Decision
对象进行算术运算。
或者,我可以将这个乘法分解为一个巨大的string
表达式(我已经完成了),但如果我不必这样做,我会更喜欢。(这个字符串看起来像"d1 * 5 + d2 * 1 + d3 * 0 ..."
:)
有任何想法吗?谢谢。
PS:正确答案(根据Excel)是:
注意:解决方案必须具有可扩展性以具有n
“决策”数量
c# - 使用 Microsoft 解决方案基础定义目标
计划目的:整合。我正在为高维(高达 100)实现自适应正交(又名数值积分)算法。这个想法是通过使用与该点的误差估计成比例的采样密度来评估点,将体积随机分成更小的部分。早期我“老化”了一个均匀的样本,然后根据估计误差的高斯分布随机选择点。以类似于模拟退火的方式,我“降低温度”并随着时间的推移降低我的高斯标准偏差,因此低误差点最初有一个公平的机会被选择,但后来被选择为稳步下降可能性。这使程序能够偶然发现由于误差函数的缺陷而可能遗漏的尖峰。(我的算法在精神上类似于马尔可夫链蒙特卡洛积分。)
功能特点。要集成的功能是估计因自然灾害导致的多栋建筑物的保险单损失。保单功能不流畅:有免赔额、最高赔付、分层(如损失100万美元零赔付、1-200万美元100%赔付、200万美元以上零赔付)等奇数保单条款。这引入了在许多平面上没有导数的非线性行为和函数。在策略函数之上是破坏函数,它因建筑物类型和飓风强度而异,绝对不是钟形的。
问题上下文:错误函数。困难在于选择一个好的误差函数。对于每个点,我都记录了似乎对此有用的度量:函数的大小,由于先前的度量(一阶导数的代理)而改变了多少,该点占据的区域的体积(更大的体积可以更好地隐藏错误),以及与区域形状相关的几何因素。我的误差函数将是这些度量的线性组合,其中每个度量被分配不同的权重。(如果我得到不好的结果,我会考虑非线性函数。)为了帮助我完成这项工作,我决定对每个权重的各种可能值进行优化,因此微软解决方案基金会。
优化什么:错误等级。我的度量是标准化的,从零到一。随着集成的进行,这些错误值会逐渐修改,以反映函数值、更改等的最近平均值。因此,我不是试图创建一个产生实际错误值的函数,而是产生一个排序相同的数字真正的误差,即如果所有采样点都按这个估计的误差值排序,它们应该收到一个类似于如果按真正的误差排序时它们将收到的排名。
并非所有点都是平等的。我非常关心具有 #1 真实错误的点区域是否排名 #1000(反之亦然),但很少关心 #500 点是否排名 #1000。我衡量成功的标准是在算法执行的中途将多个区域的以下总和最小化:
ABS(Log2(trueErrorRank) - Log2(estimatedErrorRank))
对于 Log2,我使用了一个函数,它返回小于或等于该数字的 2 的最大幂。从这个定义,得出有用的结果。交换#1 和#2 需要一分,但交换#2 和#3 不需要任何费用。这具有将点分层为两个范围的幂的效果。在一个范围内交换的点不会添加到函数中。
我如何评价。我已经构建了一个名为Rank的类来执行此操作:
按真实错误对所有区域进行一次排名。
对于每组单独的参数化权重,它计算该区域的试验(估计)误差。
按该试验错误对区域进行排序。
计算每个区域的试验等级。
将两个等级的对数的绝对差相加,并将其称为参数化的值,因此要最小化的值。
C# 代码。完成所有这些后,我只需要一种方法来设置 Microsoft Solver Foundation 来为我找到最佳参数。语法让我难住了。这是我到目前为止的 C# 代码。在其中,您将看到对我已确定的三个问题的评论。也许你可以发现更多!任何想法如何使这项工作?
更新:我决定寻找另一个库作为后备,并找到了 DotNumerics ( http://dotnumerics.com/ )。他们的 Nelder-Mead Simplex 求解器很容易调用:
我所需要的只是将 ObjectiveFunction 实现为采用双数组的方法:
我没有针对真实数据尝试过,但我在 Excel 中创建了一个模拟来设置测试数据并对其进行评分。他们的算法得到的结果并不完美,但给出了一个很好的解决方案。
f# - F# 中的引用和模式匹配
在新的控制台应用程序中,仅粘贴以下代码会导致异常“参数不是可识别的方法名称”。
- 以下代码是否适用于您的安装?
- 小丑:你知道为什么它对我不起作用吗?
查看编译器中定义的活动模式 SpecificCall 的定义,我发现:
c# - 用于 Microsoft Solver Foundation 的 LpSolve 插件无法在 64 位操作系统上运行
我不能让用于 MSF 的 LPSolvePlugIn 在 64 位操作系统上工作。(内部 ac# dll 托管从 asp mvc 3 应用程序调用)
有没有特定的版本?我应该构建面向 x86 的应用程序吗?我应该将求解器插件从源代码重建为目标 x64 吗?
我很茫然,关于插件的文档不多,最新的代码似乎针对 MSF 2.0.7(我目前有 3.0.1 或 3.0.2)
任何帮助,将不胜感激。我会在星期一检查并在需要时添加更多信息。
谢谢
c# - Microsoft Solver Foundation 位置分散目标
我正在尝试使用 microsoft 求解器基础,以便能够从一组位置中选择 3 个最分散的位置。我在我的模型中添加了两个目标,一个确保选择 3 个位置,另一个确保它们是最分散的 3 个位置。
此外,我的 Location 类如下所示:
我的距离计算是:
现在我的代码有两个问题,我不知道它们的来源,
首先,
我的代码目前适用于 5 个位置的大多数排列,其中三个是相同的经度纬度(即在此;例如候选 2、候选 4 和候选 5),但对于候选的某些排列,它不会返回最分散的 3 个(即对于相同的问题实例只是更改候选人声明的顺序)。我无法理解为什么。
第二,
如果您注释掉约束以选择至少 3 个位置,而不是像预期的那样选择所有位置,它不会选择任何位置。
我的目标适用于大多数情况这一事实似乎表明它是正确的,有人知道它为什么有时会动摇吗?
这不是家庭作业,非常感谢任何回复的人。