这个问题是这个问题的后续问题.
我在Sicstus prolog中运行了大量测试:
runtest:-
t1,
t2,
t3,
.
.
t100.
Run Code Online (Sandbox Code Playgroud)
每个测试都是独立的,并将其结果打印到屏幕上.测试之间没有关联,因此每次测试之间不需要存储/保存数据.
我的问题是Sicstus累积内存并最终遇到异常:'资源错误:内存不足'
我试图像这样组织我的测试:
runtest:-
once( t1 ),
once( t2 ),
.
.
once( t100 ).
Run Code Online (Sandbox Code Playgroud)
但我仍然遇到了这个问题.
有没有其他方法告诉Prolog在每次测试调用之间释放所有分配的内存?
调度问题有许多系列.我正在研究一个问题,我有一系列的工作/任务,从一个家庭到另一个家庭的过渡需要重新配置机器(设置时间).
我cumulatives[2/3]用来解决这个问题,但我不确定如何表达设置时间.
在这个小例子中,我有10个任务属于3个不同的家庭.任何任务都可以在任何计算机上运行,但是从一个系列中的一个任务切换到另一个系列中的另一个任务需要添加设置时间.
:- use_module(library(clpfd)).
:- use_module(library(lists)).
go( Ss, Es, Ms, Tm, Lab ) :-
Ss = [S1, S2, S3, S4,S5,S6,S7,S8,S9,S10], %Starttimes
Es = [E1, E2, E3, E4,E5,E6,E7,E8,E9,E10], %Endtimeds
Ms = [M1, M2, M3, M4,M5,M6,M7,M8,M9,M10], %MachineIds
domain(Ss, 1, 30),
domain(Es, 1, 30),
domain(Ms, 1, 3 ),
Tasks = [
%Family 1: Setuptime, Su1 = 4,
task( S1, 6, E1, 1, M1 ), %Task T1
task( S2, 6, E2, 1, M2 ), %Task T2
task( S3, 3, E3, 1, …Run Code Online (Sandbox Code Playgroud) prolog constraint-programming job-scheduling sicstus-prolog clpfd
我正在研究一个使用cumulatives/[2,3]谓词的问题.但是当我尝试将其与minimizein 相结合时,我的表现会非常糟糕labeling
我有以下演示.10个任务,所有持续时间为1,4的机器,所有容量均为1.我的目标是尽量减少总时间,即minimize(maximum(Es)):
:- use_module(library(clpfd)).
:- use_module(library(lists)).
go( Ss, Es, Ms, Tm, Lab ) :-
Ss = [S1, S2, S3, S4,S5,S6,S7,S8,S9,S10], %Starttimes
Es = [E1, E2, E3, E4,E5,E6,E7,E8,E9,E10], %Endtimeds
Ms = [M1, M2, M3, M4,M5,M6,M7,M8,M9,M10], %MachineIds
domain(Ss, 1, 20),
domain(Es, 1, 20),
domain(Ms, 1, 10),
%All task has duration = 1
Tasks = [
task( S1, 1, E1, 1, M1 ),
task( S2, 1, E2, 1, M2 ),
task( S3, 1, E3, 1, …Run Code Online (Sandbox Code Playgroud)