繁体   English   中英

在 C# 中使用 Google OR-Tools 寻找目标?

[英]Using Google OR-Tools for a goal seeker in C#?

我正在尝试在 C# 中编写多变量目标搜索器。 主要思想是有一组变量 x_1 到 x_n,可以由求解器更改,因此目标 function f(x) 尽可能接近给定值 Z。

到目前为止,我主要使用了 GLOP_LinearSolver,它只能最小化或最大化目标 function。 为了解决这个问题,我想最小化 f(x)-Z 的绝对平方,但 GLOP_LinearSolver 不包括绝对值或平方运算符(据我了解,OR-Tools 求解器都没有)。

我的问题是:是否有可能使用 Google OR-Tools 实现这个目标寻求者? 如果是:什么是我的问题的解决方法? 如果不是:我还可以使用哪些其他 package?

物镜 function

 min |f(x) - Z|

可以重新表述为:

 min d1 + d2
     f(x) + d1 - d2 = Z
     d1, d2 ≥ 0

只要f(x)是线性的,就可以将其输入任何 LP 求解器。

d1 和 d2 是正负偏差或松弛。 我们将偏差最小化,因此我们最终使 f(x) 尽可能接近 Z。 请注意,在最优解中,d1、d2 中只有一个可以为非零(不能同时为两者)。 例如,如果 f(x)=10 且 Z=8,则 d1=0,d2=2。 如果 f(x)=7 且 Z=8,则 d1=1,d2=0。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM