首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用Prolog库单纯形法求解线性方程组

用Prolog库单纯形法求解线性方程组
EN

Stack Overflow用户
提问于 2021-01-05 17:04:45
回答 1查看 151关注 0票数 2

我正在尝试使用SWI-Prolog simplex library来求解一个以实数集为域的线性方程组。有没有人知道为什么下面的查询不成功?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
maximize(
[],
state(
 0,
 [],
 [ 
   c(0,
    [- 0.95*x(3),0.05*x(0),0.05*x(1),0.05*x(2)],
    =,
    1479754163278877r9007199254740992),
   c(0,
    [0.95*x(2),- 0.05*x(0),- 0.05*x(1),- 0.05*x(3)],
    =,
    185786871969449310676024028079063r3975352282315727403093661252059136
   ),
   c(0,
    [0.95*x(1),- 0.05*x(0),- 0.05*x(2),- 0.05*x(3)],
    =,
    756128230024134313216574233897861r15901409129262909612374645008236544
   ),
   c(0,
    [0.95*x(0),- 0.05*x(1),- 0.05*x(2),- 0.05*x(3)],
    =,
    294112628726237r72057594037927936
   )
 ],
 []
),
S).

我打算解决的系统如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
0.05*x(0)+0.05*x(1)+0.05*x(2)-0.95*x(3)
= 
1479754163278877/9007199254740992

- 0.05*x(0)- 0.05*x(1)+0.95*x(2)- 0.05*x(3) 
=
185786871969449310676024028079063/3975352282315727403093661252059136

- 0.05*x(0)+0.95*x(1)- 0.05*x(2)- 0.05*x(3)
=
756128230024134313216574233897861/15901409129262909612374645008236544

0.95*x(0)- 0.05*x(1)- 0.05*x(2)- 0.05*x(3)
=
294112628726237/72057594037927936

或者,你能知道用Prolog解决这个问题的更好方法吗?

EN

回答 1

Stack Overflow用户

发布于 2021-01-06 16:12:29

看起来求解器假设所有变量都是非负的。所以问题变成了:我们能否将x是自由变量的Ax=b重新表述为使用非负变量的东西?答案是:是的。使用称为变量拆分的技术,我们可以将每个x(j)替换为xplus(j)-xmin(j) where xplus(j),xmin(j)>=0。因此方程系统就变成了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  sum(j, a(i,j)*(xplus(j)-xmin(j))) = b(i)   for all i
  xplus(j),xmin(j)>=0

我们可能需要确保(xplus(j),xmin(j))对中只有一个可以成为非零。这可以自动保持,因为如果两者都在基矩阵B中,则基矩阵B将变为奇数。但我们也可以设定一个目标来处理这个问题:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  min sum(j, xplus(j)+xmin(j))

只要方程组有一个可行解,目标就会确保只有一个(xplus(j),xmin(j))是非零的。

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

https://stackoverflow.com/questions/65583359

复制
相关文章
用Python的Numpy求解线性方程组
解决线性方程组的最终目标是找到未知变量的值。这是带有两个未知变量的线性方程组的示例:
拓端
2021/01/13
1.5K0
用Python的Numpy求解线性方程组
解决线性方程组的最终目标是找到未知变量的值。这是带有两个未知变量的线性方程组的示例,x并且y:
拓端
2020/09/26
4.1K0
prolog实例_prolog实例
Jetbrains全家桶1年46,售后保障稳定 现在打开编辑器GNU-Prolog,打开文件可以直接询问机器:
全栈程序员站长
2022/11/16
1.3K0
matlab高斯消元法求解线性方程组
高斯消元法的基本原理是通过一系列行变换将线性方程组的增广矩阵转化为简化行阶梯形式,从而得到方程组的解。其核心思想是利用矩阵的行变换操作,逐步消除未知数的系数,使得方程组的求解变得更加简单。
叶茂林
2023/10/09
4580
matlab高斯消元法求解线性方程组
用单纯形法求解线性规划(linear programming)问题,速度到底有多快呢?
我们最早接触到的与运筹学相关的知识可能就是线性规划问题了。求解线性规划问题的基本方法是单纯形法(Simplex algorithm),与单纯形法相关的方法我们已经有许多推文介绍啦感兴趣的小伙伴可以去看一看。在学习过程中,老师可能会告诉大家这是求解速度比较快的一类问题。但是说归说,有的同学可能对此会有些不解。用单纯形法求解线性规划问题到底有多快呢?随着问题规模的变化,求解所耗的时间是怎么变化的呢?
用户1621951
2019/10/23
2.6K0
用单纯形法求解线性规划(linear programming)问题,速度到底有多快呢?
运筹学单纯形法求解线性规划问题_运筹学单纯形法计算步骤
线性规划是研究在一组线性不等式或等式约束下使得某一线性目标函数取最大(或最小)的极值问题。
全栈程序员站长
2022/09/20
9910
运筹学单纯形法求解线性规划问题_运筹学单纯形法计算步骤
数值优化(B)——二次规划(上):Schur补方法,零空间法,激活集方法
这一节我们开始介绍二次规划的相关内容。二次规划也是一类具体的非线性规划的问题,也有对应的方法。
学弱猹
2021/08/09
1.8K0
非线性方程组求解迭代算法&图像寻初始值讲解
前段时间过冷水在学习中遇到了一个解非线性方程组的问题,遇到非线性方程组的的问题过冷水果断一如既往、毫不犹豫的 fsolve()、feval()函数走起,直到有人问我溯本求源的问题——非线性方程组求解算法。
巴山学长
2020/10/23
1.3K0
非线性方程组求解迭代算法&图像寻初始值讲解
Prolog 语言入门教程
Prolog 是一种与众不同的语言,不用来开发软件,专门解决逻辑问题。比如,"苏格拉底是人,人都会死,所以苏格拉底会死"这一类的问题。
ruanyf
2020/01/21
3.4K0
用对偶法求解 SVR
即 它在线性函数两侧制造了一个“间隔带”,对于所有落入到间隔带内的样本,都不计算损失;只有间隔带之外的,才计入损失函数
杨熹
2018/12/24
1.4K0
数值优化(A)——线性规划中的单纯形法与内点法
在这一节我们会给大家介绍带约束优化中更为具体的线性规划的内容。相信大家在运筹学中会对线性规划更加熟悉,比方说单纯形法就是运筹学一开始就会讲授的内容。那么在优化中,我们也会关注它们,通过介绍他们来了解优化在运筹中的应用,也能够让大家更好的了解为什么“运筹优化”一般都放在一起来说。
学弱猹
2021/08/09
1.6K0
用遗传算法求解函数
用遗传算法求解函数f(x) = x + 10sin(5x) + 7cos(4x) 在区间[0,9]的最大值。
Stanley Sun
2020/08/11
1.4K0
用遗传算法求解函数
用 Mathematica 求解多项式
█ 本文译自 Bill Gosper 在 Wolfram 社区发表的热点文章:Solving polynomials 多项式是由一组常数系数,a、b、c、……(数值)确定的。 TableForm[{a x + b, a x^2 + b x + c, a x^3 + b x^2 + c x + d, ". . ."}] // TraditionalForm 多项式求解问题就是找到一个值 x,使这些项的总和等于 0. 根据 x 的最高次数分别称为线性、二次、三次、四次、五次、六次、七次、八次......
WolframChina
2018/05/31
3.8K0
运筹学教学|十分钟快速掌握割平面法及对偶单纯形法(附Java代码及算例)
过去一段时间里小编一直接触启发式算法,自从学习了运筹学以后,就对运筹学的精确方法垂涎已久,像什么单纯形法啦,分支定界啦,割平面啦...... 就在小编一边做梦一边睡大觉的时候,boss发来一个任务:用Gomory割平面法求解混合整数规划问题。于是小编马上从床上跳起来,挑灯夜战为大家整出了这个代码...
用户1621951
2020/12/31
3.7K0
运筹学教学|十分钟快速掌握割平面法及对偶单纯形法(附Java代码及算例)
凸优化(1)——引入,优化实例分析,凸集举例与相关性质
这是一个全新的系列,我们会给大家介绍凸优化(Convex Optimization)相关的内容。
学弱猹
2021/08/09
1.5K0
线性方程组
线性方程组,是任何标准大学数学教材讲解矩阵是都要用到的,并用它引出矩阵概念。之所以如此,可能有两个原因:一是因为我们在初中的时候就已经学习过线性方程组,对它不陌生,正所谓“温故而知新”;二是矩阵的确是为了求解线性方程组而被提出的。所以,此处也不免俗,依然从线性方程组开始,引出矩阵。
老齐
2020/05/15
2.3K0
线性方程组
用Python求解线性规划问题
线性规划简介及数学模型表示线性规划简介一个典型的线性规划问题线性规划模型的三要素线性规划模型的数学表示图解法和单纯形法图解法单纯形法使用python求解简单线性规划模型编程思路求解案例例1:使用scipy求解例2:包含非线性项的求解从整数规划到0-1规划整数规划模型0-1规划模型案例:投资的收益和风险问题描述与分析建立与简化模型
用户3577892
2020/06/12
6.8K0
用Python求解线性规划问题
【运筹学】线性规划 最优解分析 ( 唯一最优解 | 无穷多最优解 | 无界解 | 无可行解 | 迭代范围 | 求解步骤 )
使用单纯形法求解线性规划时 , 得到最优解时 , 所有的非基变量对应的检验数都小于
韩曙亮
2023/03/28
3.6K0
python不用库求解根号N
假设 ,那么会发现 会比 更接近于最终答案,因此,我们可以通过以下递推公式求解:
西西嘛呦
2022/09/28
2K0
python不用库求解根号N
单纯形法
限制条件由等式和不等式组成。每一个线性的等式在几何上就限制了可行解必须在一个超平面上。每一个线性的不等式在几何上就限制了可行解必须在一个超平面的一边。于是这些限制条件就限制了可行解必须在某个单纯形上,所谓单纯形就是很多超平面围成的区域。
卡尔曼和玻尔兹曼谁曼
2019/01/22
9370

相似问题

用Prolog求解CNF

24

用Python求解线性方程组

14

用Python求解线性方程组

25

用Prolog求解不等式

15

用Python求解线性方程组

60
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文