首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在C#中为目标寻求者使用谷歌OR-Tools?

在C#中为目标寻求者使用谷歌OR-Tools?
EN

Stack Overflow用户
提问于 2020-04-16 07:56:31
回答 1查看 106关注 0票数 0

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-16 16:16:47

目标函数

代码语言:javascript
运行
AI代码解释
复制
 min |f(x) - Z|

可以重新制定为:

代码语言:javascript
运行
AI代码解释
复制
 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。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61245288

复制
相关文章
2023-03-04:定义一个二维数组N*M,比如5*5数组下所示: 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0,
(0,0) (1,0) (2,0) (2,1) (2,2) (2,3) (2,4) (3,4) (4,4)。
福大大架构师每日一题
2023/03/04
1.1K0
2023-03-04:定义一个二维数组N*M,比如5*5数组下所示: 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0,
2023-03-04:定义一个二维数组N*M,比如5*5数组下所示:0, 1, 0, 0, 0,0, 1, 1, 1, 0,0,
[(0,0) (1,0) (2,0) (2,1) (2,2) (2,3) (2,4) (3,4) (4,4)]。
福大大架构师每日一题
2023/06/08
3060
2023-03-04:定义一个二维数组N*M,比如5*5数组下所示:0, 1, 0, 0, 0,0, 1, 1, 1, 0,0,
【Python】循环语句 ⑤ ( range 语句 | for 循环本质遍历序列 | 生成由 0 开始到 n 的序列 | 生成由 m 到 n 的序列 | 生成由 m 到 n 的步长为 k 的序列 )
上述语法中的 数据集 是 序列类型 , 该类型变量 用于存储一系列有序的元素 , 常见的序列类型有 :
韩曙亮
2023/10/11
2490
【Python】循环语句 ⑤ ( range 语句 | for 循环本质遍历序列 | 生成由 0 开始到 n 的序列 | 生成由 m 到 n 的序列 | 生成由 m 到 n 的步长为 k 的序列 )
2023-02-12:给定正数N,表示用户数量,用户编号从0~N-1, 给定正数M,表示实验数量,实验编号从0~M-1, 给定长度为N的二维数组A, A[i]
Bi = { e, f }表示,第i条查询想知道e号、f号实验,一共有多少人(去重统计)。
福大大架构师每日一题
2023/02/12
5610
2023-02-12:给定正数N,表示用户数量,用户编号从0~N-1, 给定正数M,表示实验数量,实验编号从0~M-1, 给定长度为N的二维数组A, A[i]
从M走到N最少步数
假设一个人站在 X 轴的正半轴上,起始点在 M 点(0 <= M <= 100000),他每次可以向左走一步,向右走一步,或者走到所在坐标乘以2的位置,最终来到 N 点(0 <= N <= 100000)。问:所需的最少步数是几步?(如果不能从 M 走到 N 点,则返回 -1)
echobingo
2018/10/10
8170
2021-08-29:N * M的棋盘(N和M是输入参数),每种颜色
2021-08-29:N * M的棋盘(N和M是输入参数),每种颜色的格子数必须相同的,上下左右的格子算相邻,相邻格子染的颜色必须不同,所有格子必须染色,返回至少多少种颜色可以完成任务。
福大大架构师每日一题
2021/08/30
3420
2021-08-29:N * M的棋盘(N和M是输入参数),每种颜色
输入数字n然后输出0到n的全排列
给定一个正整数n, 则输出0到n的所有排列 输入:2 输出:012 021 102 120 201 210 代码: private static Set<String> result = new HashSet<String>(); public static void allSort(int number) { if (number < 0) { return; } String str=""; for (int i = 0;i <= number; i
用户6055494
2019/10/21
1.1K0
2023-06-24:给你一根长度为 n 的绳子, 请把绳子剪成整数长度的 m 段, m、n都是整数,n > 1并且m > 1,
例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。
福大大架构师每日一题
2023/07/08
2080
2023-06-24:给你一根长度为 n 的绳子, 请把绳子剪成整数长度的 m 段, m、n都是整数,n > 1并且m > 1,
Sony RX0M1-M2外接M43接口改装
两者所对应的传感器尺寸不同,同时物理规格也不一样,MFT的卡口直径46.5mm,法兰距38.6mm,EF的直径是54mm,法兰距44.14mm。
云深无际
2023/02/27
1.2K0
Sony RX0M1-M2外接M43接口改装
UVA The ? 1 ? 2 ? ... ? n = k problem
The ? 1 ? 2 ? ... ? n = k problem The problem Given the following formula, one can set operators '+
用户1624346
2018/04/17
5850
2023-02-12:给定正数N,表示用户数量,用户编号从0~N-1,给定正数M,表示实验数量,实验编号从0~M-1,给定长度为
B[i] = { e, f }表示,第i条查询想知道e号、f号实验,一共有多少人(去重统计)。
福大大架构师每日一题
2023/06/08
1830
2023-02-12:给定正数N,表示用户数量,用户编号从0~N-1,给定正数M,表示实验数量,实验编号从0~M-1,给定长度为
Celery ValueError: n
最近因项目需要,在使用任务队列Celery的时候,出现如题错误,最终在github上里找到解决办法,记录一下。
py3study
2020/01/20
7970
一个正整数 n ,求n!的末尾有几个0
import java.util.Scanner; /** * 输入一个正整数 n ,求n!的末尾有几个0 * 例如:10! = 3628800,则返回 2 */ public class Test1 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int coun
小雨的分享社区
2022/10/26
6910
Numpy与矩阵
请注意,本文编写于 980 天前,最后修改于 980 天前,其中某些信息可能已经过时。
曼亚灿
2023/05/17
1.4K0
Numpy与矩阵
数学--组合数学--当C(n,m)中n固定m++的递推模板
ll power(ll a, ll b, ll p) { ll ans = 1 % p; for (; b; b >>= 1) { if (b & 1) ans = ans * a % p; a = a * a % p; } return ans; } long long mm[500000]; void init(ll n, ll k) { mm[1] = 1; for (ll i =2;
风骨散人Chiam
2020/11/03
5020
节省大量时间的 Deep Learning 效率神器
写深度学习网络代码,最大的挑战之一,尤其对新手来说,就是把所有的张量维度正确对齐。如果以前就有 TensorSensor 这个工具,相信我的头发一定比现在更浓密茂盛!
McGL
2020/10/30
1.7K0
节省大量时间的 Deep Learning 效率神器
0 到 n-1 的数组判重
首先我们想到的就是hash,通过hash判断一个数字是否在之前出现过只需要O(1)的时间复杂度,我们知道hashset的底层过就是hashmap的key,即hash的实现。
Tim在路上
2020/08/04
3670
C语言: 定义一个函数int isprime(int n),用来判别一个正整数n是否为素数。在主函数中输入两个正整数m和n(m>=1,n>m),统计并输出m和n之间的素数的个数以及这些素数的和。
定义一个函数int isprime(int n),用来判别一个正整数n是否为素数。在主函数中输入两个正整数m和n(m>=1,n>m),统计并输出m和n之间的素数的个数以及这些素数的和。
川川菜鸟
2021/10/18
2.7K0
构建列表 [[0] * m] * n带来的隐患
这里只修改了L[0][0],但是却L却输出: [[1, 0, 0], [1, 0, 0]]
生信编程日常
2020/05/08
5780
递归实现n^k
#include<stdio.h> #include<stdlib.h> int Power(int m,int n){ if(n<=1){ return m;} return m*Power(m,n-1); } int main(){ int m; int n; printf("请输入需要计算次方的底数与指数:"); scanf("%d %d",&m,&n); a=Power(m,n); printf("结果为:%d\n",a); system("pause")
小雨的分享社区
2022/10/26
2340

相似问题

ValueError: matmul:输入操作数1的核心维数0不匹配,具有gufunc签名(n,k),(k,m?)->(n?,m?)

13

ValueError: matmul:输入操作数1的核心维数0不匹配,具有gufunc签名(n,k),(k,m?)->(n?,m?)(尺码13与1不同)

12

ValueError: matmul:输入操作数1在其核心维度0中不匹配,gufunc签名为(n?,k),(k,m?)->(n?,m?)(大小%1与%3不同)

2957

ValueError: matmul:输入操作数1在其核心维度0中不匹配,gufunc签名为(n?,k),(k,m?)->(n?,m?)(大小%2与%1不同)

120

matmul:输入操作数1的核心维度0不匹配,gufunc签名为(n?,k),(k,m?)->(n?,m?)(大小20与10不同)

117
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档