问题标签 [planning]

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 投票
5 回答
8946 浏览

artificial-intelligence - 搜索和规划有什么区别

在人工智能方面,我现在正在阅读有关规划的内容。但作为一个对人工智能的天真者,我无法理解他们坚持“计划和搜索之间的区别”的意思。

我有 C/C++ 之类的过程编程知识,并且可以根据数据结构进行搜索。

而且我无法理解他们给出的“人工智能:一种现代方法 - Stuart Russell”中给出的 Buy(ISBN0123654789) 和 Have(ISBN0123456789) 的示例,搜索一个十位数的 ISBN 号码将采取 100 亿次行动。

我的问题是关于如何搜索一本书需要 100 亿次操作,但计划不需要。

0 投票
0 回答
1513 浏览

javascript - 有哪些免费/开源的房间规划工具可用?

我正在为一家租赁公司开展一个项目,他们希望展示一些带有家具的平面图布局,访问他们的网站的人可以四处移动。

我发现查理的房间规划工具还可以,但与我的想法不完全一样。

我有平面图的 JPG 图像,我想诀窍是允许将家具图像放置在这个“画布”区域的顶部并移动和旋转。

我知道 jQuery / jQueryUI 支持拖放,但我不确定我是否见过 jQuery 拖放和旋转工具。如果“jQuery 房间规划工具”已经存在,那就太好了。

有哪些免费/开源的房间规划工具可用?基于 HTML5 和 jQuery 的工具将优于 Flash 工具。

0 投票
2 回答
1071 浏览

c# - C# 和 SWI-Prolog - 将字符列表转换为事实列表

因此,我正在使用 Unity3D 开发游戏,并且正在使用 Prolog 进行 IA 规划。我的问题与猴子和香蕉问题非常相似,但是我在断言新的初始状态时遇到了问题。

通过改变初始状态,我的角色将能够在环境中重要的事情发生变化时再次计划他的行动。

但是让我们回到我的问题:

我通过套接字将一个字符串传递给prolog,并且我想建立一个事实列表。然后,我想将这些事实用作我的计划程序的初始状态。

通过将字节数组转换为字符列表,我可以在 SWI 终端上写入套接字的输入流。通过在输出流上写一些东西,我还可以从 prolog 服务器返回一个字符串。但我不知道我应该如何将这些字符/字符串变成事实列表。

另外,我想使用该事实列表作为初始状态,通过将其传递给规划过程,就像我将参数传递给命令式编程语言中的函数(如果是这样的话)。

我想做的是这样的(伪代码):

我现在真的很困惑,我希望有人能帮助我。谢谢!

参考:

完整的猴子香蕉问题代码。

SWI 套接字服务器代码示例。

0 投票
2 回答
827 浏览

prolog - 如何在 Prolog 中编写条件规划?

我试图编写一个可以理解用 C# 编写的学生程序的 prolog 代码。现在我被困在识别学生程序中的“if”语句的过程中。例如:以下是我期望学生提供的代码。

我将这个预期代码的目标定义为:

问题是我如何在 prolog 事实和规则中表示上述学生代码,以找出任何可能的条件都满足目标。

我试图将学生代码的第一部分更改为如下所示的事实,但真的不知道如何将学生的“if”语句表示为 prolog 中的事实/规则(我想,我不应该将其更改为 prolog “如果”,对吧?)

另一个,在我的目标中,当我进行比较时,例如gt(Vd,0)我认为我不能使用序言大于运算符,也Vd> 0不会Vd @> 0导致 Vd 中的值实际上是用户输入的某个值,但它表示为符号值(在这种情况是:)val_d

注意:使用上述目标,我认为如果将学生代码更改为以下代码,则可以满足定义的目标。

或者

但同样,我需要帮助/想法如何在序言中将此代码表示为操作/规则/事实以实现目标。

非常感谢任何帮助。

非常感谢

0 投票
0 回答
118 浏览

prolog - 比较计划

我有一个项目旨在检查学生程序的正确性。我目前使用这样的方法:

  1. 我指定了学生计划必须实现的目标。

  2. 我将学生程序更改为一系列事实和行动(在 Prolog 中),并检查这些事实和行动是否能够满足目标。

例如,如果我要求学生编写一个程序来求 a + b 的总和,并将结果存储在 c 中,那么我将指定目标是这样的(Prolog 风格):

这种方法可以很好地检查学生的顺序程序。然后,当我尝试检查包含条件的学生程序时,我才意识到可能我不能再使用这种方法了。

例如,如果我要求学生编写程序以使用以下公式从总购买中找到折扣(以美元为单位):

. (总购买量 < 50) -> 客户获得 5% 折扣

. (50 <= 总购买量 < 100)-> 客户获得 10% 的折扣

. (总购买量 >= 100)-> 客户获得 20% 的折扣

那么我不能只写我的目标,折扣的价值(以美元计)只是总采购*百分比折扣。

我面临的一些问题:

  1. 百分比折扣的值可能会根据总购买量的值而有所不同(所以我不能有一个谓词可以用来表示百分比折扣的值)

  2. Total purchase 的值是一个变量值(来自用户的输入) - 所以我永远不知道这个变量的值。因此,我也无法确定特定时间百分比折扣的价值。

  3. 用户可以编写多种变体的 IF 语句,以及 IF 内的条件语句。

有人建议我使用条件规划的概念来解决这类问题。但是当我阅读一些关于条件规划的信息时,我们作为程序员指定了初始状态、计划和目标。就我而言,看起来我是必须指定目标的人,但初始状态和计划是由学生通过解析他们的代码提供的。

所以我想,这有点不同。但是,如果我的想法不正确,请告诉我,并请给我更正。

或者如果不是条件规划,我可以用什么样的方法来解决这种问题(检查学生代码的正确性)?任何信息,无论是理论上的观点还是实际实施中的信息,都非常感谢。

我有一个想法,可能我应该在学生的计划(通过解析他的代码)和我的预期计划之间做一些比较计划之类的事情。因此,如果学生的计划与我的预期计划相同或超集,那么我可以说学生计划/代码是正确的。但我想我应该以比模式匹配更好的方式进行比较(因为我猜,它只是行不通)。但是怎么做?请告诉我,如果这是我必须做的正确方法。

非常感谢。

注意:我之前在此链接中有一个相关但具体的问题: 如何在 Prolog 中编写一种条件规划?. 但是,我刚刚意识到那些特定的问题可能无法帮助我解决这个普遍问题。

0 投票
1 回答
1231 浏览

sql - 如何从 PostgreSql 的预订中只返回工作时间?

从如何在 PostgreSql 的预订表中找到第一个空闲时间的好答案中选择

用于查找从给定日期和时间开始的日程安排间隙(2012-11-17 8:在下面的示例中)它还可以找到星期六、星期日和公共假期。公众假期定义见表

如何也排除周末和公共假期?

硬编码空闲时间保留为查询

每个空闲时间范围都需要单独的联合行。

从给定日期和时间开始,在工作日和工作时间(8:00 .. 18:00)中返回空闲时间的最佳方式是什么?

更新

Select in answer 总是在 8:00 返回空闲时间。如何在指定的开始日期返回不早于指定开始时间的空闲时间,例如如果开始时间为 9,则不早于 2012-11-19 9:00?开始时间可能只有值 8,9,10,11,12,13,14,15,16 或 17

即使 2012-11-19 8:00 如果免费,它也应该返回 2012-11-19 9:00。仅当 2012-11-19 9:00 没有空闲时间且后续工作日 8:00 首次空闲时,才应返回 8:00。

我尝试通过将2012-11-19 9:添加到两个位置来解决此问题,如下面的查询所示,但此查询仍返回 2012-11-19 8:00 的空闲时间。如何解决此问题,使其在 2012-11-19 9:00 返回空闲时间?

更新2

我尝试了更新的答案,但它返回了错误的数据。完整的测试用例是:

观察到的第一行:

预期的 :

怎么修 ?

0 投票
2 回答
272 浏览

algorithm - 人工智能中高级规划的算法

我目前正在从事一个人工智能项目,其中代理需要将盒子从其原始位置推拉到某个目标位置。然后,该项目将扩展为包括多个代理,因此我们有一个主管负责创建“高级”目标,而代理负责实际的实现。

在实践中,目前,主管应该决定将箱子放在球门位置的顺序。事实上,将一个盒子放在它的目标位置可能会阻塞通往另一个目标的路径。

我们解决这个问题的第一个方法是尝试考虑“切割位置”。如果某个位置将可行走空间分成两个子集,其中一个是我们的代理,另一个是一个或多个目标,那么它就是一个切割位置。例如,考虑以下级别,其中“x”是代理,“A”和“B”是框,“a”和“b”是各自的目标位置:

在这种情况下,目标“a”的位置是一个切割位置,因为如果将一个盒子放在那里,那么代理将无法到达目标“b”。

您能否建议一种快速算法来计算切入位置,并且可能会返回每个切入位置阻挡的目标数量?

0 投票
1 回答
992 浏览

prolog - Prolog planner 只生成一个计划

我有一个 prolog 计划器,它可以正确处理一个主要问题,即当时只生成一个计划。该计划是正确的,但对于我的申请,我真的需要制定所有可能的计划。

示例调用 go([in(app1,s1),stone(s2),active(s2),stone(s3),active(s3)],[in(app1,s1),in(app1,s3),in( app1,s2)],AllPlans)。

回答:

drop(s2,app1) drop(s3,app1) //正确 _2368 _2366 _2364 _2362 _2360 _2358 _2356 _2354 _2352 _2350 _2348 _2346 _2344 _2342 _2340 _2338 _2336 等...无限

0 投票
2 回答
1232 浏览

artificial-intelligence - 使用 PDDL 或等效的规划语言/系统

我想做一些自动故事生成演示,我正在采用的方法是使用 AI 规划。我一直在阅读几篇相关论文,并发现 PDDL 可能是形成规划问题的最广泛使用的语言。我一直在查看语法和几个示例代码来学习如何使用它。

我被卡住的部分是如何让计划者工作。我发现了一些流行的规划器(快进、MBP、IPP),但我无法使它们工作,甚至使用来自源本身的说明。

我在 Ubuntu 13.04 上使用 Gnome 终端。

我对计划很陌生,这可能是一个非常幼稚的问题,但我保证我已经搜索了超过 3-4 天,没有任何运气。此外,欢迎提出使用其他规划系统的建议。

0 投票
1 回答
543 浏览

search - 规划和搜索使用示例

使用搜索技术或更具体的规划技术的应用有哪些?我对使用中的示例最感兴趣。

我知道 A* 用于机器人技术中的路径规划,该规划用于物流(细节会很好),但还有哪些其他用途?

对于一般的搜索,谷歌等会想到他们的倒排索引。再说一次,它还用在什么地方?