C# : 在Linux的.NET核心中引用或使用.so文件
我们在.NET框架上有一个项目,该项目引用了FICO XPRESS求解器dll. DLL所需的是 - xprb.dll xprbdn.dll xprsdn.dll 由于没有Nuget软件包可用于使用FICO Xpress求解器,因此我们安装了FICO XPRESS求解器,并将这些DLL从安装目录复制到项目文件夹中的名为 lib 的本地文件夹,并添加了路径参考.这些DLL在LIB文件夹中.因此,在编译时,该项目使用这些DLL的参考(存在于 lib 文件夹中)进行编译.这个项目成功地构建.当我们的项目称为FICO XPRESS求解器时,则使用上述DLL从安装目录使用,该目录可能通过环境变量访问(本地文件夹中的DLL只是为了成功编译代码,我们可以将其指向实际的FICO XPRESS求解器安装目录,但我们将DLL放入 lib 文件夹中,以便我们可以将其添加到SVN中),并且该项目可以成功地运行fico xpress求解器. 现在,我们将项目移植到.NET Core,以便在L
0 2024-04-21
编程技术问答社区
C#解决最简单的方程
在C#中,我正在寻找一种解决此类简单方程式的方法. Z = A + B 我正在尝试建立一个课程,如果我给出了另外两个参数,这将为我提供第三个参数. 示例,给定Z=A+B 如果您知道A=3和B=6,那么您知道Z=9 如果您知道A=4和Z=8,那么您知道B=4 我将如何在软件中最好地执行此类任务? 另一个想法是使用数学表达式评估,例如NCALC.他们可以将数学表达式解释,例如将3*(8+2)转换为30,但不能求解x=2 - > x=2. 之类的方程式. 解决方案 您确定NCALC不会做您需要的事情吗?在 http://ncalc.codeplex.com/中以示例. 定义参数,甚至动态或表达式 Expression e = new Expression("Round(Pow([Pi], 2) + Pow([Pi2], 2) + [X], 2)"); e.Parameters["Pi2"] = new Expression("Pi * [
0 2024-04-21
编程技术问答社区
解决密码的有效方法
嗨,我遇到了这个难题,这是一个著名单词和数字的难题,称为 cryptarithms"> cryptarithms"> cryptarithms"> .说你的表达为 s e n d + m o r e = m o n e y 现在有趣的部分是,每个字母都代表一个唯一的数字从0-9表示.我想编写一个广义的求解器,但最终为此写了一个蛮力强制解决方案.有什么人,我该如何解决? 我认为可以使用谓词逻辑或集合理论来解决.而且我对查找基于C#或Python的解决方案特别感兴趣.有一个.? 解决方案 在Pycon 2009 Raymond Hettinger在Python中谈论了AI编程,并覆盖了Cryptarithms. 可以看到整个演讲的视频此链接. 其他解决方案 这是一个小问题,以至于蛮力解决方案不是一个坏方法.假设每个字母必须代表一个唯一的数字(即我们不允许解决方案s = 9,m = 1, * = 0),我们看到要尝试的组合数为 n!,其中 n 是Cryp
0 2024-04-20
编程技术问答社区
Microsoft Solver Foundation为简单的ILP提供了错误的答案
我想使用Microsoft Solver Foundation在C#中解决二进制线性问题.我不知道为什么我会得到错误的答案.客观值应为41.1,但我得到213. 5个变量的值应为1,而其他变量应为0.但是我得到了许多错误的变量. . 矩阵的每一行的总和应为感谢您的任何帮助. 定义决策变量: SolverContext context = SolverContext.GetContext(); Model model = context.CreateModel(); Decision[,] x = new Decision[name_column.Length, 7]; for (int i = 0; i
解决简单方程的C# dll
我正在寻找一个c#dll来求解简单的方程.示例.. 10 = 2 + 3 + x 结果应为x = 5; 是否有免费的DLL? 解决方案 我已经使用了这个数学表达式解析库,并带有积极的结果.他提供的文档对于启动非常有用. mathieumathparser.aspx?display = print 您的应用程序可以容纳库将库将其分解为组件部分的临时方程.然后,您可以提供所需变量的值,并将评估结果. 库包含许多功能(TRIG,日志,阶乘,DateTime,Random等),并且可以处理用户定义的功能. 其他解决方案 您可以使用其他解决方案 使用System.Math如果您必须使某些内容更加困难,那么添加的内容要比添加更加困难.否则..做自己是免费的!
0 2024-04-13
编程技术问答社区
Z3:使用C API找到所有可能的解决方案
我是Z3求解器中的新来者,使用Windows 10,VS2013命令提示. 我正在尝试使用C,我尝试使用Z3求解器解决以下问题. 问题集: a,b,c满足a + 2*b + 3*c = 7? 的可能组合 所以我根据Z3的C代码示例在C代码下方进行了. void example(){ Z3_context ctx = mk_context(); Z3_solver s = mk_solver(ctx); Z3_model m = 0; Z3_ast a, b, c, b_mul_two, c_mul_three, zero, two, three, seven, sum; Z3_ast args2[2], args3[3]; Z3_ast c1, c2, new_constraint[3], new_constraint_and; Z3_ast a_new, b_new, c_new, a_eq_new, b_
0 2024-04-10
编程技术问答社区
我如何访问和打印分布在MPI工作者之间的完整矢量?
如何从MPI中的单个线程访问全局向量? 我正在使用一个库 - 特别是一个ode求解器库 - 称为cvode( sundials ).该库与MPI一起使用,因此多个线程并行运行.他们都在运行相同的代码.每个线程都会将线程"旁边"它发送一个数据.但是我希望其中一个线程(rank = 0)在某些方面打印出数据状态. 库包括每个线程可以访问他们自己的数据(本地向量).但是没有访问 global 向量的方法. 我需要在特定时间输出所有方程的值.为此,我需要访问全球向量.任何人都知道如何在MPI向量中获取所有数据(如果可能的话,使用CVODE)? ? 例如,这是我的代码,每个线程运行 for (iout=1, tout=T1; iout
2 2024-04-10
编程技术问答社区
防止我的C代码打印(严重降低执行速度)
我有问题. 我终于找到了一种使用外部库来解决我的数值系统的方法.该库自动打印矩阵.对于dim = 5来说很好,但是对于dim = 1.000.000,您了解问题... 那些寄生虫" printf"的执行大大减慢了,我想摆脱它们.问题是:我不知道它们在哪里!我在我的图书馆中查看了每个" .h"和" .c"文件:它们无处可找到. 我怀疑它们已经包含在库本身中:superlu.so.我无法访问它们. 如何防止我的C代码在执行过程中打印任何内容? 这是我的makefile.我使用 libsuperlu-dev 图书馆直接从Ubuntuu中下载. .so文件已经存在. LIB = libsuperlu.so main: superlu.o read_file.o main.o sample_arrays.o super_csr.o cc $^ -o $@ $(LIB) clean: rm *.o rm main 解决方案 只是为
0 2024-04-09
编程技术问答社区
解决由用户定义的变量方程
在C,Python,C ++或JavaScript中的答案将不胜感激. 我读了几本书,完成了所有例子.现在我想编写一个简单的程序. 但是,我已经遇到了以下障碍: 我的目的是从用户那里取方并将其保存在变量中, 例如: -3*X+4 or pow(2,(sin(cos(x))/5)) > [In valid C Math syntax] ,然后计算某个X值的给定表达式. 这样的东西: printf("%g", UserFunction(3.2)) // Input 3.2 for X in User's Function and Print Result 有什么想法吗?对于我的一生,我无法弄清楚.除了我的挫败感,解决方案可能很简单.预先感谢您. 解决方案 没有一种简单的方法可以在 c 中进行此操作,但我认为 muparser 可能对您有用,它用 c ++ 编写,但具有 c 绑定. exprtk 也是一种选择>只有,从加利方面,获得有趣的结果
0 2024-04-08
编程技术问答社区
用C语言进行矩阵求解(在CUDA内)。
作为较大问题的一部分,我需要求解小型线性系统(即nxn,其中n〜10),因此使用相关的CUDA库在速度方面没有任何意义. 不幸的是,尚不清楚的事情是如何解决此类系统,而无需拉动GSL,特征等大型枪支等. 任何人都可以将我指向直c? 的密集矩阵求解器(ax = b)的方向 对于那些有兴趣的人来说,代码这一部分的生成器的基本结构是: ndarray=some.generator(N,N) for v in range N: B[v]=_F(v)*constant for x in range N: A[v,x]=-_F(v)*ndarray[x,v] 不幸的是,我对更高数学的了解大约为零,因此任何建议都将不胜感激. 更新:我一直在为此而努力,并且有一个近乎解决但无法正常工作的解决方案.欢迎潜伏的任何人都可以在 pastebin . 我正在使用透明的折磨分解,这似乎是最通用的方法.该测试的想法是每个线程都执行相同的工作.我知道很
2 2024-04-07
编程技术问答社区
除了 "简单求解器 "外,还有什么软件能解决给定输入/输出的数字电路吗?
全部 - 我在这里找到了一个叫做"简单求解器"的东西: http://home.roadrunner.com/~sssolver/~ssolver/syn.html 您可以在此处下载 求解器download-103308.html 我的问题是:简单的求解器是唯一为您提供了您想要的输入/输出的数字电路的求解器吗?除了简单的求解器外,还有其他软件可以解决数字电路吗? 将感谢所有/所有建议. 解决方案 看Logic Friday 1.这是一种交互式工具,因此将定义为函数表,表达式或门网络的handle/handle/solve boolean表达式.另一个很酷的工具是
0 2024-04-01
编程技术问答社区
布尔表达式求解器/简化器
我正在寻找一个非常大(但不复杂)代数的布尔表达求解器: boolscheausdrückevereinfachen(axiome) 我想拥有一些代码(C ++或Java [或库]),以简化巨大的布尔表达.我没有找到东西.我只想做一些"简单"转换,例如: a && ~a -> 0 a || a && (b || c) -> a 但更长的时间.我想使用符号(a,b,c1,d1 ..)目前是不正确的,false,0或1. 预先感谢您. 编辑: 如果我自己写自己,我可以使用Javaluator并进行评估. 当我有:(adb+c) && d时,我想从乘以.有人一个主意吗? 解决方案 我最喜欢的此类任务工具是Logic Friday 1. 它免费用于非商业用途. 逻辑星期五1接受布尔表达为公式和真实表.它包括伯克利工具的编译二进制文件 espresso 和misii.后者用于多级功能. 另一个工具是
4 2024-04-01
编程技术问答社区
多重数独AI方法
我正在概念化一个 sudoku 的求解器,称为多sudoku ,其中多个板像这样重叠: 如果我正确理解游戏,则必须以一种方式解决每个网格,以使每个两个或多个网格之间的重叠是每个网格的一部分. 我不确定我应该如何考虑这一点.有人有任何提示/概念线索吗?此外,如果想到人工智能中的任何主题,我也想听到这些. 解决方案 约束编程(CP) sudoku是典型的约束编程问题.您有一组变量(网格中的字段)每个都有一个域(这是Digits 0 to 9)和一组在这些变量上的约束 解决约束编程问题的一种通用方法是 arc一致性(AC):您传播约束.通过(部分)填充的变量,您可以减少剩余变量的域,等等.最后,如果传播不再可以使域变较小,则必须制作 opeach .. 有了选择,您可以为某个变量选择一个值.一个好的策略是选择剩下少量值的变量.接下来,您再次传播,并可能做出另一个选择,依此类推. 您的程序可能会发现一个选择是错误的:它使一个或多个变量的域名为空.在这种情况
2 2024-03-07
编程技术问答社区
如何解决不等式系统?
我将问题(表布局算法)减少到以下问题: 想象我有n变量x 1 ,x 2 ,...,x n .我也有一些(不确定的)不平等数量,例如: x 1 > = 2 x 2 + x 3 > = 13 等. 每个不等式是一个或多个变量的总和,并且使用> = operator始终将其与常数进行比较.我不能提前说我每次都会遇到多少不平等,但是所有变量都必须是非负的,所以每个变量已经是一个变量. 如何以这样的方式求解该系统,以使变量的值尽可能小? 添加:阅读Wikipedia文章,并意识到我忘了提到变量必须是整数.猜猜这使它成为np-hard,是吗? 解决方案 最小化x1 + x2 + ...其中xi满足线性约束称为线性编程.它在 wikipedia "> wikipedia 其他解决方案 您拥有的是一个相当基本的线性编程问题.您想最大化等式X_1 + ... + X_n约束 X_1 >= 2 X_2 + X_3 >= 13 etc. 有许多算法可
4 2024-01-23
编程技术问答社区
灯游戏版本的可溶性
我正在尝试为游戏算法创建一个解决性函数.基本上是一个函数,该函数是否可以解决或无法解决. 游戏是一种灯游戏.基本上,您有一个按钮.游戏开始时,将打开这些灯的随机数或存储的图案.按下任何灯都将切换四个按钮的正方形,包括按下按钮. 因此,我正在寻找一种算法,如果我们可以关闭所有灯并返回false,如果我们不能这样做. 解决方案 每行的光线数和每列的光线数必须为偶数(其中'0'也被视为"偶数"). 证明:假设您必须按2个水平相邻按钮.如果您仅从1盏灯开始,无论您做什么,最终都会亮着一盏灯.另一方面,一旦您在任何距离上都有2个灯,您就可以将一个灯"移动"靠近另一盏灯,直到它们相邻,此时您可以将它们都关闭. 对于垂直相邻按钮是正确的,并且按2x2按钮网格的扩展为:每当您关闭任何 single 某些某些光线时,另一个示为灯上的倍数保持在每行2和列的倍数. 例如,这是可以解决的: 这不是一个(注意某些列和行中的奇数):
28 2024-01-23
编程技术问答社区
熄灯-寻找最坏的初始状态
我有一个围绕一个小型游戏旋转的任务,称为 lights over . 游戏 游戏由具有尺寸3x3的板组成,每个单元格可以是1或0,例如: 0 1 0 1 1 0 0 0 0 据说当所有细胞为1时,游戏都可以解决,因此: 1 1 1 1 1 1 1 1 1 在每个回合中,用户都可以单击任何将翻转其状态和邻居状态的单元格,向左,右上,上方和下方(如果存在).因此,单击第一个示例板中间的单元格将产生: 0 0 0 0 0 1 0 1 0 任务 现在,我必须找到游戏中最糟糕的初始板,并且还要弄清楚如果发挥最佳状态,则需要多少转弯到解决状态. . 尝试 我试图编写一个递归求解器,鉴于初始板,它找到了求解游戏的最佳转弯序列.之后,我想用所有可能的初始董事会喂食. 但是,递归呈堆叠溢出.因此,我可能必须以迭代方式重写它.我该怎么做? 这是代码,作为最小完整示例: import java.util.ArrayList; im
4 2024-01-23
编程技术问答社区
河内塔--用Python解决半途而废的算法
是否可以在中途解决河内塔?我已经进行了广泛的研究,以寻找在中途解决用户配置的代码,但我还没有找到一个.这是用于作业的,我要求代码从用户停止求解并继续为用户求解的位置,而无需将拼图重置为正方形. 我知道那里有递归算法很容易获得,但这不是我要搜索的内容. 我正在搜索可以从用户求解的位置接管直到直到的算法,然后继续从那里求解. 有什么想法吗? 到目前为止,我提出了一种算法,该算法将优化算法(通过递归完成)存储到数组中,然后检查用户的输入是否等于数组中的任何内容,然后继续继续从那里解决.但是,当在优化算法数组中找不到用户的配置时,问题就在于. 到目前为止,以下是我的代码(我排除了stack.py代码): def solveHalfway(n, start, end, middle, count): gameInstance.stackA = [3,2] gameInstance.stackB = [] gameInstance.stackC = [
0 2024-01-23
编程技术问答社区
仅在GPU上求解小的对称正定数Ax=b
我正在尝试在实时3D建模中优化应用程序.应用程序的计算部分几乎完全在CUDA的GPU上运行.该应用需要解决小(6x6)双精度对称正定线性系统AX = B 500倍以上的解决方案.目前,这是通过使用Cholesky的有效基于CPU的线性代数库来完成的,但需要从CPU -GPU复制数据,然后回到GPU每秒数百次,每次启动内核的开销等. . . 如何仅将数据完全将数据放到CPU上,如何计算GPU上的线性系统的解决方案?我已经阅读了一些有关岩浆库的信息,但它似乎使用混合算法而不是仅GPU算法. 我已经准备好了一个事实,即GPU上单个线性系统的解决方案要比现有的基于CPU的库慢得多,但我想看看是否可以通过删除该库来弥补这一点主机和设备之间的数据通信以及内核启动的开销等每秒数百次.如果没有GPU仅类似Lapack的替代方案,我该如何实施某些东西来解决此特定的6x6案例?如果没有GPU Blas图书馆的大量投资? 可以做到这一点吗? 解决方案 NVIDIA于去年秋天将批处理A
6 2024-01-22
编程技术问答社区
Z3 条件性声明
如何在z3中写有条件的语句. eg: if (a%2==0){ value=1 } 我试图通过Microsoft Research在Z3求解器中实现这一目标,但到目前为止还没有运气 解决方案 查找SSA表格: 本质上,您必须更改程序才能看起来像: value_0 = 0 value_1 = (a%2 == 0) ? 1 : value_0 在此所谓的静态单分配表中,您现在可以或多或少地直接翻译每行; value_N的最新作业是value的最终值. 循环将是有问题的:通常的策略是将它们展示为一定的计数(有限的模型检查),并希望这足够了.如果检测到最后一个展开还不够,则可以在此时生成未解释的值.这可能会导致您的证明因虚假反调查而失败;但这是您可以做到的最好的事情,没有一个计划涉及适当处理感应和循环不变的计划. 请注意,该研究领域称为"象征性执行",并且历史悠久,并且仍在进行积极的研究.您可能需要阅读以下内容:
4 2023-12-26
编程技术问答社区
Z3:无效的有界变量
我试图在Z3(Python)中看到句子的有效性,但我收到以下消息:Invalid bounded variable(s) 我在这里复制我遵循的步骤: v, a, b, c, d, e = Ints('v a b c d e') lt_1 = (v == 4) lt_2 = (v == 2) lt_3 = (v == 3) lt_4 = (v == 5) lt_5 = (v == 0) lt_6 = (v >= 0) lt_7 = (v
6 2023-12-26
编程技术问答社区