问题标签 [clingo]

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 投票
2 回答
106 浏览

answer-set-programming - 如何告诉我的图形着色问题程序只分配一次颜色 1?

基本上,我有一个图形着色程序,其中每个节点与另一个节点的边缘必须是不同的颜色。这是我的代码:

我如何告诉程序一次只分配颜色 1?标记为 %line 的行是给我带来问题的行。这是我尝试过的另一种无效的解决方案:

如果有人可以帮助我,将不胜感激。

0 投票
1 回答
133 浏览

answer-set-programming - Clingo 答案集编程线交叉点

我有一条规则会生成以下内容

其中以下部分是从 5,1 开始到 5,3 结束的路线

在路线(x1,y1,x2,y2)

  • x1 = 第一个点的 x 坐标
  • y1 = 第一个点的 y 坐标
  • x2 = 第二个点的 x 坐标
  • y2 = 第二个点的 y 坐标

我想编写一个约束,以便这些路线不会相互交叉,但我不知道如何解决这个问题。我将不胜感激在这件事上的任何帮助。

0 投票
1 回答
1175 浏览

answer-set-programming - 使用最大化时如何在 cligo 中显示所有最大结果?

我目前正在编写一个asp程序。当我在程序中注释该行时#maximize{S:ce(S)}.,答案显示如下

其中答案 7 和答案 8 的ce值相同4

当我取消注释该行时#maximize{S:ce(S)}.,答案显示如下

的结果只有一个ce(4),但我想得到 ce 的最大值的所有结果,我应该怎么做才能得到具有值的两个结果ce(4)

0 投票
1 回答
124 浏览

clingo - 使用 clgo 输出作为 clgo 输入

我想将一些 cligo 调用的输出传递到另一个 cligo 调用中,这样第一个的答案集被视为第二个的事实。它应该看起来有点像这样:clingo foo.lp | clingo bar.lp,但是 的输出clingo foo.lp包含一些额外的行,并且答案集的格式在语法上无效。我怎样才能做到这一点?

0 投票
1 回答
168 浏览

database - sum-method 的 ASP Clingo 性能问题

我当前的代码旨在对给定数据库中的一些值求和,并选择早餐、午餐和晚餐食物的组合。在用于测试的小数据库下,您可以找到我正在运行的代码,并在给定的时间间隔内找到 42 个答案。然后我还想计算其他列(蛋白质、脂肪、碳水化合物),如下所示。但我遇到了一些巨大的性能问题。代码只是没有运行(我等了一个小时,但没有显示结果)是否有可能简化 sum-chain sum_prot_fat_carb_bf /+lu /+di ?这样我的程序才能最终运行......我用这种编程语言没有想法了。如果你能帮助我,我会很高兴。此致

0 投票
1 回答
173 浏览

traveling-salesman - 时间窗的旅行推销员问题

我正在尝试通过额外的约束 - 时间窗口来解决 TSP 问题。

所有标准假设均适用:

  • 我们在给定的城市开始和结束。
  • 每个城市只被访问一次。
  • 我们试图根据旅行成本(此处为旅行时间)找到最佳路径。

此外,每个城市都有自己的时间窗口格式,这限制了可以访问城市的时间:

  • 我们不能在关闭时间之后访问一个城市。
  • 我们可以在开放时间之前到达任何城市并等待它开放。如果我们这样做,等待时间会添加到经过的总时间中,但不会添加到旅行时间中。所以time_spent_travellingtotal_time_passed是我们需要跟踪的两个不同的东西。

我设法编写了根据total_time_passed找到最佳解决方案的约束,但我需要找到最佳time_spent_travelling

这是我的逻辑:

这里的示例数据(用 cligo 运行它需要大约 30 秒):

我使用 MAX 函数通过选择实际到达时间或城市的开放时间来计算给定城市的到达时间 - 以较晚者为准。它工作得很好,所以我的第一个想法是向位置事实添加额外的字段,如下更改此行:

这种方式 location 保存有关time_spent_travellingtotal_time_passed的信息。虽然这适用于 5 个城市,但有 20 个城市的计算时间过长(我在 15 分钟后放弃了) - 我希望程序在两种情况下运行的时间大致相同,但显然这里有一些我不明白的地方.

我还尝试将等待时间存储为单独的事实,但它似乎以同样的方式影响计算时间,并在#minimize 函数中引入了另一个我无法解决的问题。

所以这是我的问题:

  • 我可以做些什么来计算time_spent_travelling的最佳值,但正确考虑等待时间?
  • 为什么我上面描述的代码中的微小变化会对求解过程产生如此高的计算影响?

我最近开始使用 cligo,很有可能我没有看到解决这个问题的简单方法。习惯于声明式编程,很难改变编写程序的方式。

我提供的代码可以用 cligo 简单运行: clingo logic data

我的输出:

这里的结果考虑了等待时间,在这个特定示例中为 9。(378 是仅花费在旅行上的时间)。

0 投票
2 回答
1005 浏览

prolog - ASP 哈密顿循环故事

您好,我是新手。我过去做了一点!我正在尝试解决这个问题,我相信它可以用解决,让我知道你的意见。如果您不熟悉 ASP,您可以访问此站点 [clingo 和 gringo][1]。您可以使用此命令在终端中运行文件,clingo name_of_the_file.lp或者clingo name_of_the_file.lp4我在 Ubuntu 中对其进行了测试。

(这些是 .lp 或 .lp4 文件)我阅读并理解的第一个代码是具有 3 个结果的代码

我得到这个结果:

我试图将此代码转换为:

这似乎有点尴尬我得到了这个结果:

我试图纠正它,就像你在评论中告诉我的那样:

我得到了这个结果:

(如果我把node(1..6). 结果是UNSATISFIABLE

0 投票
2 回答
129 浏览

clingo - 答案集编程初学者

我是答案集编程的初学者,对 cligo 完全陌生。我尝试了以下关于护士换班的事实和限制条件,但我没有得到任何模型,并且 cligo 没有标记任何错误。我不断收到UNSAT。我做错了什么?

0 投票
1 回答
232 浏览

answer-set-programming - 答案集编程:如何分配数字,使得没有两个连续的字符或整数在同一个密码中

在给定以下密码约束的情况下,创建一个生成所有可能密码的 ASP 模型。存在多少个密码?

请不要评论答案,而只是告诉我我的 cligo 解决方案在程序中的错误之处。

2.) 密码必须至少包含 4 个字符,最多包含 6 个字符,其中包含数字和特殊字符。

3.) 密码必须至少包含一个数字字符。

4.) 密码必须至少有一个特殊字符。

5.) 密码不能有连续的重复字符 [无效密码示例:9988*] [有效密码示例:9897#]


编辑添加我还认为另一种看待问题的方式可能是

%3.) 密码必须至少有一个小于和大于 9 的数字字符,大于 9 是特殊字符。

5.) 密码不能有连续的重复字符 [无效密码示例:9988*] [有效密码示例:9897#]

0 投票
1 回答
244 浏览

answer-set-programming - Clingo:完整性约束中的逻辑或

对于演讲练习,我必须在Answer Set Programming(我们Clingo用作解释器)中表示以下完整性约束:

“你必须计划大师班的日历。通常,讲座在星期五(8小时)和星期六(4或5小时)。而第7周和第16周都是满的,这意味着讲座从周一到周五,每天 8 小时,周六有 4 或 5 小时的讲座。”

该问题的基本设置如下:

现在,如上所述(最后一行以粗体显示),我们遇到了以下约束的一些问题:

“在这个大师班中,周六的讲座时间可以是4 小时或 5小时。”

目前,我和我的同事将这种约束表示为:

像这样表示约束是否正确?有更好的方法吗?