问题标签 [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# - MS Solver - 如何在布尔表达式中使用整数决策?
我正在使用 MS Solver 尝试解决装箱问题,但我不知道如何在布尔表达式中使用我的决策来创建术语。
这是我的问题的概述:
我正在尝试将物品装入垃圾箱,尽量减少垃圾箱的数量。所有垃圾箱的大小都相同。
假设我有 3 个 SKU(项目类型)。我要打包的每个 SKU 的数量不同,每个 SKU 的尺寸也不同:
SKU 尺寸 数量
- 100 94
- 50 50
- 25 27
垃圾箱大小 = 4200
是的,这是一个一维装箱问题。
我知道我可以将我必须打包的 3 个 SKU 的所有物品放入 5 个箱子中,理论上最少是 3 个箱子。我可以改进这个解决方案并使用 MS Solver 减少到 4 个甚至 3 个 bin 吗?
这是我的问题:使用 MS Solver 库,我可以设置我的决策和约束,但我似乎无法定义最小化使用的 bin 数量的目标。
我创建了一个 2D 决策矩阵 - 行数对应于 5 个 bin 的第一次猜测,3 列是 bin 中每个 SKU 的数量。
我想尽量减少使用的垃圾箱数量,但我似乎无法让语法适合我的目标。这是我用来尝试创建目标的方法:
我收到以下警告:'Object.ReferenceEquals' 始终为 false,因为它是使用值类型调用的。
而且,实际上我没有得到任何解决方案,因为该术语总是评估为相同的值。
如何使用这些决策创建术语?
c# - 强制 MS Solver 找到解决方案
当并非像在 Excel 中那样满足所有约束时,如何强制 MS 求解器找到模型的解决方案?我在 LinearReport 对象中找到了一个 GetInfeasibilitySet 方法(显然它返回模型中不满足的约束),但我无法实例化该对象,因为它需要我无法实例化的 Isolver 和 LinearSolutionMappings 参数也是。
f# - Microsoft Solver Foundation 和 F#
我正在尝试将此MS Solver Foundation 示例从 C# 转换为 F#,但不断遇到类型转换问题,特别是在第 5 节中,其中 C# 接受从 double 到 Rational 的隐式转换,F# 不接受的东西 - 任何想法如何解决?Rational 类型本身对我来说是一个难题,因为除了将其设置为预定义的 Rational.One 或 Rational.Zero 之外,似乎几乎不可能初始化。有任何想法吗?请参阅下面的极简缩小版本(不使用任何数组或任何东西)。
c# - 使用 MS Solver 框架的 C# 调度任务
我想使用Microsoft Solver Framework安排任务。现在我有一个简单的目标,就是将任务排在队列中,这样我就可以获得最少的项目时间。(后来我想要不止一个队列)。我尝试使用以下设置来解决此问题:
- 决定:
- 项目完成
- 开始
- 结束
- 范围:
- 期间
- 约束:
- 开始+持续时间=结束
- 一次不超过一项任务
- projectFinish 在所有任务完成后
- 目标:
- 最小化项目完成
到目前为止,这是我的代码
现在的问题是它需要永远解决这个问题(尽管它只有 3 个任务和 1 个队列)。我在这里缺少什么以及如何提高解决速度。
更新
我找到了解决我的问题的方法。如果您有任何改进,请随时发表评论。这是我的代码:
c# - 改变等式的左边部分
我目前正在使用 MS-Solver-Foundation 求解线性方程组。我能够用它解决问题,我现在正试图让它更具动态性(这样我就不必在每次问题发生变化时都更改代码)。
我有多个类型的约束:
flow[i]
和overflow[i]
在哪里Decision
(类型类的所以)。现在我试图在一个for
循环中添加所有这些约束。为此,我创建了一个列表,其中包含左侧的所有部分(所以全部flow
,overflow
并且s
需要一个约束),现在我正在尝试执行以下操作:
失败了。我也尝试使用SumTermBuilder
:
但这也失败了,因为我得到了所有的解决方案 0,这是不对的。
我现在的问题是:如何在不手动写下约束的情况下在方程的左侧创建这个总和,这样我只需要一个for
循环?
c# - 提高优化运行时间。(使用 c# SolverFoundation)
当我在 C# 中运行下面的优化代码时遇到了一些麻烦。该程序在前三个约束条件下运行良好。但是一旦我添加了第四个,代码就需要更长的时间才能运行。为了提高性能,这里有一些我的想法:
- 改进我构建约束的方式
- 以精度或采样大小换取运行时间。
我不确定如何实现这些。任何帮助/建议将不胜感激。
optimization - Microsoft Solver Foundation - 结果不够好(股票投资组合优化)
我正在尝试在 C# 中编写一个 markowitz 优化类,但优化结果不够好。投资组合权重与 matlab 和 excel 的解决方案平均相差 0.2%。我检查了我的协方差矩阵计算和其他计算,发现它们是正确的。有没有办法校准模型的公差或其他方法以获得更好的结果?有我的代码。
optimization - 使用线性规划制定算法以均匀分配交货数量
我正在尝试使用优化和线性规划来解决供应链问题。
我不是优化专家,我在使用变量、约束和目标制定解决方案时遇到了麻烦。
这只是一个概念证明,我已经尝试过 Microsoft Solver Foundation 和 Optano 来创建演示。
我需要将产品交付给客户。我在固定的日子交货。我需要确保客户的货架上每天有最低约定的库存水平。
客户每周进行一次库存检查,并告诉我每周每种产品的起始库存水平。每种产品的平均每日使用量是一个已知参数。
到目前为止,一切都很好。我有一个解决方案。下一个要求是我卡住的地方。
出于后勤原因,供应商希望每次交付的产品总量大致相同。
在特殊的日子里,库存水平可能会低于通常商定的库存水平。至少它必须是平均每日使用量,并且到周末交付的总量必须是该周商定的库存水平。
根据我读过的文章和探索过的例子,我尝试了许多实验。我还没有找到一种方法来制定约束和目标来解决平均分配每天交付的数量的要求。
我想这是一个相当普遍的供应链问题,我真的(真的)会很感激一些指导吗?
更新: 这是使用 Microsoft Solver Foundation(求解器服务 API)的基本实现。我与无国界医生无关。它计算每天交付的数量和每天结束时货架上的预期库存量。
我希望这能为我的问题提供更多背景信息。
c# - 如何评估作为字符串给出的多项式?
我有几十个多项式方程,一些是二阶的,一些是三阶的,还有一些是四阶的。每个方程都有不同的系数和常数,但它们都不是过于复杂,因为它们都只包含一个输入变量。每个方程的输入变量 x 将不同。
我将这些存储在数据库中。我想将它们作为字符串类型提取出来,并对其进行评估。我将永远有问题的 X。处理这个问题的好方法是什么?我正在尝试使用 Microsoft Foundation Solver,因为我认为我能够将我的字符串方程转换为求解器理解的格式,提供我的 x,并求解 y。不幸的是,我还不足以实现这一点。