问题标签 [clpr]

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.

0 投票
1 回答
474 浏览

error-handling - 在 prolog 中没有充分实例化参数

我正在尝试运行此代码,但每当我使用此查询时都会收到此错误:gp174(P, S). ERROR: >=/2: Arguments are not sufficiently instantiated.

这是我的代码:

我该怎么办?
我应该在哪里加载我的 clpr 库?

0 投票
1 回答
213 浏览

prolog - 使用 Prolog 解决不等式

我正在使用 prolog 解决不等式问题。我找到了一个代码,它解决了 ax+b>=0 类型的方程。

我使用的代码如下。

例如

  1. 当我们给出 {2*X+2>=5}。它给出了正确的答案。{X>=1.5}。

    2.但是如果我输入像 {(X+3)/(3*X+1)>=1} 这样的分数。它给出 {1- (3+X)/ (1+3.0*X)=<0.0}。

我怎样才能解决这类不等式问题以找到最终答案。(包括分数的问题)。
请帮我。
如果有任何学习资料可以参考,请告诉我。

0 投票
1 回答
202 浏览

prolog - lib(ic) 的精确解决方案

使用 ECLiPSe Prolog,lib(ic)我偶然发现了David H. Bailey 提出的以下问题,“解决科学计算中的数值异常”。Unum book提到了我。实际上,这只是其中的一部分。首先,让我根据 来制定方程(is)/2另外,请注意,所有这些十进制数字都以基数 2 浮点数(包括 IEEE)精确表示

所以这确实是0.0(根本没有四舍五入)。但现在与$=代替is

此区间不包含 0.0。我知道区间算术通常有点过于近似,如下所示:

但至少等式成立!但是,在第一种情况下,不再包括零。显然我没有理解一些东西。我也尝试过eval/1,但无济于事。

Null不包括的原因是什么0.0


(在@jschimpf 出人意料的回答之后编辑)

这是书中第 187 页的引文,我将其解释为数字被精确表示(现在划线)。

使用可以模拟 IEEE精度的 {3,5} 环境。输入值是完全可表示的。...
{-1, 2}
...完成了
这项工作,用不到...

否则,第 184 页的声明成立:

...

0.80143857 x + 1.65707065 y = 2.51270273

这些方程式当然看起来很无辜。假设精确的十进制输入,该
系统由x = -1 和y = 2 精确求解。

这是用 SICStus 重新检查的library(clpq)

所以 -1, 2 是确切的解决方案。


精确的配方

这是一个在输入系数中没有舍入问题的重新表述,但解决方案仍然只是 -∞...+∞。因此,微不足道的正确,但不可用。

0 投票
0 回答
113 浏览

prolog - 将 CLPR 输出写入控制台

我是Prolog的初学者。我想修改代码以将输出写入控制台。如何将此程序的输出写入控制台?

询问 :-

0 投票
2 回答
54 浏览

xsb - 带有 clpr 约束的 XSB Prolog 元解释器问题

我在我的 Mac (El Capitan 10.11.2) 上运行 XSB Prolog:XSB 版本 3.6。(Gazpatcho) 2015 年 4 月 22 日 [i386-apple-darwin15.2.0 64 位;模式:最优;引擎:slg-wam;调度:本地] [构建日期:2016-01-17]

我正在使用 clpr 包并想编写一个小元解释器:

但是,try({X=1+2})不起作用——它与第四个子句不匹配,并下降到第五个子句。

知道为什么吗?

0 投票
1 回答
524 浏览

recursion - 使用 Prolog 在 CLP(R) 中编写递归函数的正确方法

我对 CLP 在 Prolog 中的工作方式感到非常困惑。不仅我发现很难看到好处(我确实在特定情况下看到了它,但发现很难概括这些好处),而且更重要的是,我几乎无法弥补如何正确编写递归谓词。以下哪项是 CLP(R) 方式中的正确形式?

或者

换句话说,我不确定何时应该在约束之外编写代码。对我来说,第一种情况似乎更合乎逻辑,因为PrevNNewF属于约束。但如果这是真的,我很想知道在哪些情况下在递归函数的约束之外使用谓词是有用的。

0 投票
1 回答
607 浏览

random - 将 Prolog 和 CLP(R) 用于约束系统

我正在寻找使用 Prolog 生成满足约束系统的随机向量。

例如,我们的用户可能会在运行时向我们的软件提供以下信息:

给定一个向量<x1, x2, x3, ... x30>,我们可能有两个约束:

我想做的是生成一个大致遵循以下形式的 Prolog 程序:

这将在 30 维空间中输出一个均匀随机的向量。

这对 Prolog 可行吗?

还有消耗该输出的问题。我想做的是有任何调用来next()重新生成一个新的向量。具体来说,我需要避免重新编译,因为我希望能够每秒生成大约 10,000 个这些向量。我能达到这种性能水平吗?

我希望在我们软件的其余部分运行的 JVM 上使用嵌入式(进程内)SWI-Prolog 实例。那就足够了吗?

0 投票
1 回答
464 浏览

command-line-interface - SWI-Prolog:如何编写命令行输出的解决方案?

我正在使用 SWI-Prolog 和clpr库来解决对实数的约束。我通过从命令行调用 SWI-Prolog并通过另一个程序解析输出来做到这一点。

例如,要解决类似{F = 1.8 * C + 32}, {C = 25}.我生成以下命令的问题:

SWI-Prolog 的输出是:

如果结果是纯数字,但如果结果再次是约束(或更复杂的解决方案),则此方法效果很好。例如,{X > 3}, {Y < 5}, {X + Y = 10}.我在 SWI-Prolog 环境中获得了解决方案{Y < 5.0, X = 10.0 - Y},但我没有找到将其写入命令行输出的方法。有没有办法做到这一点?

0 投票
2 回答
75 浏览

optimization - minimize/1 没有重新排列解决方案的顺序

对于哥伦比亚的 Observatorio Fiscal[1],我正在编写一个简单的税收最小化问题,使用 CLP(R)(在 SWI-Prolog 中)。我想先使用最小化/1 找到最小的解决方案。相反,它首先列出更大的解决方案。这是代码:

这是交互式会话的样子:

如果我将“最小化”这个词切换为“最大化”,它的行为是相同的。如果我不包含最小化或最大化子句,它不会寻找第三种解决方案,但除此之外它的行为相同:

[1] Observatorio Fiscal 是一个新组织,旨在模拟哥伦比亚经济,以预测法律变化的影响,类似于美国国会预算办公室或税收政策中心所做的事情。

0 投票
1 回答
99 浏览

vector - How to interface Prolog CLP(R) with real vectors?

I'm using Prolog to solve simple geometrical equations. For example, I can define all points p3 on a line passing trough two points p1 and p2 as:

And then a predicate like line((0, 0, 0), (1, 1, 1), _, (2, 2, 2)) is true.

But what I'd really want is to write down something like this:

Where P1, P2, and P3 are real vectors.

What's the best way of arriving at something similar? The best I found so far is to rewrite my own add, subtract and multiply predicates, but that's not as conveniant.