问题标签 [clp]

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 回答
49 浏览

python - 从 Python 子进程运行可执行文件时出错

我正在尝试从 Python 3.5 运行可执行文件(线性规划求解器 CLP.exe)。

当我在 Eclipse PyDev 中运行 python 文件时,我可以在 Eclipse 控制台中看到结果。

但是,“solutionFile.txt”文件中没有保存解算结果。

在 Eclipse 控制台中,我得到:

当我从命令行在 MS windows shell 中运行命令时:

我可以在解决方案文件中得到结果。而且,如果我在命令行中运行该命令,粗线不会出现在输出中。

如果我从 Python subprocess 运行命令,为什么没有创建 solition.txt 文件并且没有保存解决方案结果?

0 投票
1 回答
405 浏览

prolog - 计算 CSP 中的解决方案

我正在使用序言,我有这个代码:

如果我想计算所有解决方案,我该怎么做?我已经阅读了关于 clpb 中使用的 sat_count(+Expr, -Count) 但我无法在没有错误的情况下实现它

0 投票
2 回答
404 浏览

prolog - 如何使用 Prolog CLP FD 进行路径限制?

我正在尝试通过 Prolog CLP FD 使用限制编程来解决提出的难题。这个谜题包含以下简单规则:

阴阳谜题说明

现在,在我的代码中,我已经涵盖了 2x2 网格的限制,并且必须将其中一个连接到至少一个相同颜色的网格。

问题是我找不到一种方法来建立限制,即一件必须有一个路径(连接)到所有其他相同颜色的部分,而不通过相反颜色的部分,所以我得到了这种输出:

其中 1 并非全部相互连接。

如何在 CLP FD 中编写这种图形限制?

编辑:我正在使用 SICStus Prolog。

0 投票
1 回答
524 浏览

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

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

或者

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

0 投票
0 回答
170 浏览

python-2.7 - 通过 Modbus TCP-IP 发送多个 Python-clp 数据

我正在开发一个项目,使用 Python 语言开发计算机视觉代码,需要通过 Modbus TCP/IP 通信向 PLC 发送数据。我已经建立了通信,我只能发送有关二进制记录的信息,但我也想通过 Modbus 从识别的对象发送其他资源,但我不知道如何使用对我有利的记录。谢谢,有人可以帮我吗?

0 投票
1 回答
106 浏览

prolog - 在约束处理规则中表示逻辑析取

我正在 Prolog 中编写一个约束求解器,它实现了一个简单的逻辑公式:

"(alive(A) and animal(A)) iff (awake(A) or asleep(A))".

我在约束处理规则中找到了一种实现它的方法,但它比原始公式要冗长得多:

是否可以使用单个语句而不是多个冗余语句来实现此公式?

0 投票
1 回答
607 浏览

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

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

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

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

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

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

这对 Prolog 可行吗?

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

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

0 投票
0 回答
102 浏览

python - 反复使用 CyLP - 占用内存?

我有一个重复实例化 CyClpSimplex 对象的程序(理想情况下解决数万个 LP),但我的内核在大约 6000 次迭代后终止了该程序。我认为这是因为内存使用过多(我在一个 docker 容器中,并且确实 hyperkit 目前正在使用 2GB 的 RAM)。

我不擅长 C++,也没有使用 Cython 的经验(CyLP 的大部分内容是用什么编写的),但我怀疑这些 CyClpSimplex 对象没有被解构。查了源码发现cython CyClpSimplex类的__dealloc__函数居然被注释掉了!有谁知道从 python 中释放此内存的方法?我对这个问题的理解完全偏离了标准吗?

0 投票
1 回答
155 浏览

prolog - Prolog 中的 CLP(B) 加权 sat_count/3

对于 SWI-Prolog 的 CLP(B) 库,我想实现sat_count/2的加权版本

我没有找到用于修改代码的库的详细文档。如何实现 sat_count/2 的加权版本?


编辑 1(2017 年 1 月 11 日)

感谢@mat 的回复,我无法添加评论,因为我没有足够的声誉。

weighted_sat_count/3应该采用一对权重列表,每个变量一个权重(True 的权重和 False 状态的权重),然后其他两个参数与sat_count/2.

计数是每个可接受分配的权重之和。每个可接受分配的权重是每个变量权重的乘积。

计算结果的算法是:

使用与计算的权重相关联的访问节点的地图,该算法可以更有效。 weight[,]是权重对的列表,1 表示 True,0 表示 False。


编辑 2(2017 年 3 月 11 日)

例如:

  1. A+B+C,一个简单的SAT公式

  2. 权重对列表:[(0.7, 0.3), (0.9, 0.1), (0.5, 0.5)],每个变量一个

?- weighted_sat_count([(0.7, 0.3), (0.9, 0.1), (0.5, 0.5)], +([A, B, C]), Count).


0 投票
0 回答
244 浏览

cmake - 配置光学规划器时 CLP 库问题

我在配置光学规划器时面临 CLP 问题。请建议如何克服这个问题。

这是问题: