问题标签 [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# - 如何定义一个约束以防止将资源分配给两个重叠的任务?
如何定义一个约束以防止将资源分配给两个重叠的任务?
我定义了 5 个资源:R1、R2、...、R5 和 3 个任务:T1、T2、T3,它们具有相应的开始和结束日期(s1、e1 代表第一个任务的开始和结束日期,s2、e2第二个任务等等)。如果这两个任务重叠,我的约束应该防止将 R1 分配给任务 T1 和任务 T2。R1 可以分配给任意数量的任务,因此如果 T1 和 T3 不重叠,它们都可以由 R1 执行。
我打算使用 C# 和 Microsoft Solver Foundation 来解决这个问题,但这当然不是那么重要。我的问题是我不知道如何将这个问题表述为一个约束。
c# - MS Solver Foundation CSP 错误 - 输入具有不同的符号域
我正在尝试使用 Microsoft Solver Foundation 来解决我们的家庭圣诞节抽奖(类似于“秘密圣诞老人”或“kris kringle”)。
我有一些复杂的限制(例如,不能为您的兄弟姐妹购买),我已经使用这些限制来修剪每个参与者的域。
求解器工作,除了它没有一个人应该只收到一份礼物的约束(即,爱丽丝为鲍勃买东西意味着没有其他人为鲍勃买东西)。
我尝试添加一个“AllDifferent”约束,但得到一个参数异常-
“输入 Alice 和 Bob 具有不同的符号域。”
我也尝试将约束添加为 OML 表达式,但遇到了同样的错误。
- 是否可以在具有不同域的决策之间应用任何约束?
- 如果没有,并且我需要对所有决策使用相同的域,是否存在“包含”约束?(我尝试使用“ElementOf”,但无法让它工作。)
示例程序-
vba - Sheets().Select/Solver VBA 不工作
我的工作簿有三张纸,其中一张的名字是“数据”。
为什么 .select 方法不起作用?代码运行良好,没有给出错误,但从不选择/转到“数据”表......
我实际上希望工作表选择在 if 内,但如果它在那里,它会给出“9”错误:subscript out of range
!
理想情况下,我什至不想选择工作表 - 我想引用 Sheets("Data").Range(whatever),但这也会产生subscript out of range
错误。
c# - 例外:无法将类型“Microsoft.SolverFoundation.Services.Term”隐式转换为“bool”
我遇到了一个例外
“无法将类型 'Microsoft.SolverFoundation.Services.Term' 隐式转换为 'bool'”
在以下代码中:
如何解决这个问题?
linear-programming - Adding constraints for a known solution causes out of bounds exception
I have a linear optimization goal to Maximize EE+FF, where EE and FF each consist of some C and D.
With code I've written, I can get solver to find:
...but I know there to be another solution:
In order to validate user input for other valid solutions, I added a constraint for both EE and FF. So I added the EE_quantity == 0, FF_quantity == 7
in the code below, which is a runnable example:
It seems that Solver Foundation really doesn't like this specific combination. Using EE_quantity == 1, FF_quantity == 6
is fine, as is using just EE_quantity == 0
or FF_quantity == 7
. But using both, AND having one of them being zero, throws an exception:
Index was outside the bounds of the array.
What is going on under the hood, here? And how do I specify that I want to find "all" solutions for a specific problem?
c# - Microsoft Solver Foundation 中的决策矩阵
我正在尝试使用 Microsoft Solver Foundation 来优化具有二元决策变量矩阵的问题。这是我的决策矩阵的格式:
X[i,j] =
{
{ x11, x12, ..., x1n },
{ x21, x22, ..., x2n },
...
{ xm1, xm2, ..., xmn },
};
我还有一个参数向量,它取决于 Xij 矩阵(向量的每个元素都是 Xij 一列的总和:
Y[i] =
{
Sum(x11, x21, ..., xm1), Sum(x12, x22, ..., xm2), ..., Sum(x1n, x2n, ..., xmn)
}
我知道我应该使用索引的决策对象,但我很难做到这一点。谁能帮帮我。我知道有两种索引决策的方法:
Decision Xij = new Decision(Domain.Any, "x", Some Set, Some other set);
还有:
有什么不同?
c# - Microsoft Solver Foundation 在添加约束时引发 ArgumentNullException
我正在尝试为呼叫中心创建一个时间表,我试图在高呼叫期间最大化员工并在低呼叫期间最小化。为简单起见,它看起来像:
我有以下代码:
我在将员工限制为 9 小时(例如 4 15 分钟部分 * 9 小时 = 36 次)的约束条件下收到 ArgumentNullException。
这是堆栈跟踪:
在 Microsoft.SolverFoundation.Solvers.ConstraintSystem.ValidateInputs(CspTerm[] 输入) 在 Microsoft.SolverFoundation.Solvers.ConstraintSystem.Equal(Int32 常数, CspTerm[] 输入) 在 CSPCallCenterDemo.Program.Main(String[] args) 在 c: \Users\wdniels\Documents\Visual Studio 2012\Projects\CSPCallCenterDemo\CSPCallCenterDemo\Program.cs:System.AppDomain._nExecuteAssembly 的第 40 行(RuntimeAssembly 程序集,String[] args)在 System.AppDomain.ExecuteAssembly(字符串 assemblyFile,证据 assemblySecurity , String[] args) 在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 在 System.Threading.ThreadHelper.ThreadStart_Context(Object state) 在 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback 回调, Object state, Boolean preserveSyncCtx ) 在 System.Threading。ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart()
还有谁知道我如何添加一个约束来确保员工将连续工作 36个15 分钟的间隔?
c# - 在背包算法中添加每件物品的数量约束
我正在工作的背包问题。有了可用的在线解决方案,到目前为止我已经做到了
现在我想添加一个约束,每件商品只允许一个数量。我创造了一个这样的约束,
但它总共只拿一件物品(0-1背包问题)。
如何添加约束以便在优化中只允许每个项目指定数量?
c# - Reporting shadow prices from SimplexSolver
I'm using the SimplexSolver class directly to solve a linear program, with AddRow, AddVariable and SetCoefficient. This works quite well.
We need to come up with shadow prices now, and I don't see any way to access either the shadow prices or the simplex matrix.
If I set SimpleSolverParams.GetSensitivityReport to true, casting the return of SimplexSolver.GetReport to ILinearSolverSensitivityReport may be the key here. Checking it out.
c# - Microsoft Solver Foundation 在某些情况下无法解决我的模型
我正在做一个生产计划项目,所以我想在一些机器(A,B)中找到一个订单生产开始时间。
为简化起见,我假设我有 2 台机器(机器 A 和机器 B)我有以下约束:
出于简化目的,我认为每台机器只能在一天中的某些时间(
A_TimeLimitation
, )工作B_TimeLimitation
机器A可以在以下范围内工作:
(2014/12/4 00:00:00 - 2014/12/4 02:00:00) 或(2014/12/4 04:00:00 - 2014/12/4 06:00:00)
B机可在以下范围内工作:
(2014/12/4 02:00:00 - 2014/12/4 04:00:00)或(2014/12/4 05:00:00 - 2014/12/4 07:00:00)
每个产品必须经过机器 A,然后经过机器 B。
- 每个产品在每台机器上都需要一些时间(在我的示例中为 60 分钟)。
- 机器 B 应在机器 A 完成工作后启动。
- B 可以在 A 完成工作后最多 10 分钟开始工作。[更新]
- 目标是最小化订单生产时间。
我使用以下代码将 a 转换DateTime
为分钟:
var minutes = new TimeSpan(dateTime.Ticks).TotalMinutes;
所以使用上面的代码我的DateTime
范围转换为Double
范围。
我正在使用Microsoft Solver Foundation来解决问题,所以我使用了以下代码:
但是当我运行代码时,它似乎进入了一个无限循环,当我指定TimeLimit
我directive
的 10000 毫秒后,solution.Quality
是否Unknown
意味着MSF
找不到任何解决方案,如果我删除DateTime
机器中的第二个范围,A
代码可以找到解决方案。
有谁知道问题出在哪里?