- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 Prolog 中编写任务调度程序/计划程序,为此我打算使用 CLPFD library (在 SWIPL 上)。我想知道使用有限域来解决调度问题有多么强大,以及如果我使用它会对 CPU 负载产生什么影响。
调度问题将基于本文第 10 页中所述的断言:“Constraint-Based Scheduling”。事实上,我的任务/事件将是非常异构的(有些是可抢占的,而另一些则不是),并且事件资源将具有不同的容量。现在,我只是在处理一个简单的案例(不可抢占的、分离的调度),我遇到了这样的事情:
/* Non-preemptive, disjunctive scheduling. *******************************/
planner :-
/* 'S' stands for start point.
'E' stands for end point. */
set(a1,S1,E1),
set(a2,S2,E2),
set(a3,S3,E3),
interval(intersection,[S1,E1],[S2,E2],[]), % Tests whether activities
interval(intersection,[S2,E2],[S3,E3],[]), % intersect. If they do,
interval(intersection,[S3,E3],[S1,E1],[]), % backtracking occurs and
(...). % an alternative solution
% will be looked for.
/* A set of times in which activity A executes (non-preemptive) */
set(A,[S],[E]) :-
/* 'A' is the activity.
'R' is release point and 'D' deadline point.
'Lst' stands for Latest Start Point.
'Eet' stands for Earliest End Point. */
preemptable(A,no),
rd(A,R,D),
p(A,P),
Lst is D-P,
Eet is R+P,
S in R..D,
E in R..D,
S #=< Lst,
E #>= Eet,
S #< E,
P #= E-S,
indomain(S),
indomain(E).
set(A,[],[]). /* When the activity can't be scheduled. */
最佳答案
一般来说,CLP(FD) 是解决此类问题的合适且行之有效的方法。但是请注意,即使在 library(clpfd)
中,也有许多不同的方法可以对您的问题进行建模。 :例如,您可以使用全局约束 serialized/2
或 cumulative/1
来表达它。其他 Prolog 系统通常会为您提供比 SWI-Prolog 更好的性能,但是您对问题建模和搜索解决方案的方式通常比任何特定实现的优化对性能的影响要大得多。
关于performance - Prolog 对有限域库性能的 CLP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17040949/
让我们有以下假设场景……一个 5x5 的网格,比如说 3 个数字。 我们想定义对位置的约束。在 CLP 中,我们通常用整数定义约束,所以这是一种方法: ... Fig1X #\= 2, Fig1Y
我正在尝试使用 SWI Prolog CLP(FD) 解决调度问题。在尝试解决更大的问题时,我正在应用更高级的标记策略,在这里,更好地了解程序在什么时候失败和回溯将是有益的。因此,我喜欢记录哪些变量绑
我正在使用 clp(fd) 编写 Prolog 程序并且我很难实现我想要的约束之一。 输出是一个整数列表(长度取决于程序另一部分的输入),其中有某些相互排斥的预定义数字对,每对中的一个数字必须在输出中
我正在 Prolog 中编写任务调度程序/计划程序,为此我打算使用 CLPFD library (在 SWIPL 上)。我想知道使用有限域来解决调度问题有多么强大,以及如果我使用它会对 CPU 负载产
在有些instances中,可以对递归谓词进行CLP(FD)处理,其好处是谓词可以双向转换。这种方法的局限性是什么?例如,以下computation CLP(FD)-fied是否可以: Fn: n-t
在上个学期的 Prolog 类(class)中,我在引入 CLP 时落后了一点。现在我正在努力 catch ,并尝试参加教授提供给所有学生的过去考试。 特别是,有这个问题: What is the d
我做了两个实现来解决 Shikaku 难题。一个使用顶部、左侧、宽度和高度 (TLWH) 作为每个矩形的参数,另一个使用顶部、左侧、底部、右侧 (TLBR)。 出于某种原因,使用 TLBR 的速度要快
我正在尝试设置 Coin-CLP按照网站上的说明还支持 CPLEX(我已经安装并在我的机器上顺利运行)。 不幸的是,当我尝试在安装时运行配置步骤时,在我想要包含 CPLEX 的版本中看起来像这样: .
我是 Prolog 编程的新手,我写了一个代码来解决 4 x 4 幻方,但是当我运行程序时,程序没有给出任何输出;它只是继续执行(忙),最终我不得不退出 SWI-Prolog。请指导我解决这个问题。
我正在 Julia 中开发一个包,它使用 Clp 和 JuMP 来解决 Simplex 问题,这里是代码示例: model = JuMP.Model(Clp.Optimizer) @variable(
我正在尝试在 prolog CLP 中编写 map 着色程序。这是到目前为止的代码。请任何人帮助我。这里有什么问题。我想在这里替换maplist函数。任何帮助表示赞赏。 :- use_module(l
这个问题已经有答案了: Using a constrained variable with `length/2` (4 个回答) 已关闭 6 年前。 为什么以下退出时显示 ERROR: Out of
我想使用clp-java解决这个问题 Maximize 2 * x + 5 where x com.github.quantego clp-java 1.16.11 他们更
我有以下 CLP(FD) 查询: ?- use_module(library(clpfd)). ?- [I,N,M,J] ins -2147483648..2147483647, I - 3*N #=
有什么地方可以找到 clpfd 实现中的差异集合吗? 最佳答案 有一种支持一种语言的列表 形式或另一种约束逻辑编程。这个 有时表示为 CLP(*): 参见“基于逻辑编程的约束逻辑”部分: https:
我使用 CLIPS 开发了一个专家系统,并且希望能够在命令行上运行它。这可能吗? 我的最终目标是让 Java 程序在 CMD 中执行 .clp,并将输出和输入传递到命令行和 gui。 我可以在clip
我正在将代码从 Oracle JDK 导入到 OpenJDK (Java 8)。剩下的唯一需要解决的问题是如何改变 Java Clip (java.sound.sampled.Clip) 的音量?即使
我想在我的 Android 应用程序中构建一个新的线性编程模型,使用 cpl-java . 我的函数是E+T+U+URam,我想最小化这个函数,但我不知道如何使用这个库以及如何添加我的约束,我的限制:
我正在尝试在我的 iPhone 应用程序中加载 .clp 文件。为此,我使用下面的代码 NSString *filePath = [[NSBundle mainBundle]
我必须以包含 9 个向量(每个长度为 9)的向量格式解决数独谜题。由于向量是 Prolog 中的链表,我认为如果我首先将拼图转换为 2D 数组格式,搜索速度会更快。 示例拼图: puzzle(P) :
我是一名优秀的程序员,十分优秀!