prolog-使用multi_cumulative和多个资源

时间:2017-12-19 22:11:24

标签: prolog clpfd

我需要为任务创建一个计划。我决定使用multi_cumulative(+Tasks,+Capacities),这是累积/ 2的版本。这些函数来自clpfd库。

所以,我有这个基本的例子(我已经应用于更复杂的程序):

  • Ss列表,这是开始时间,
  • Es,结束时间,
  • 容量是具有容量的资源列表,
  • 任务列表,具有以下格式:开始时间,持续时间,结束时间,资源消耗和任务标识符。

schedule(Ss, End) :-

    Ss = [S1,S2,S3],
    Es = [E1,E2,E3],


    Capacities = [
                 cumulative(12),  
                 cumulative(2),   
                 cumulative(10)   
    ],



    Tasks = [
            task(S1, 16, E1, [0,1,1], 1),    
            task(S2, 6, E2, [0,0,2], 2),    
            task(S3, 13, E3, [0,1,2], 3)    
    ],


    domain(Ss, 1, 30),
    maximum(End, Es),

    multi_cumulative(Tasks, Capacities),
    labeling([minimize(End)], Ss). 

问题在于,我需要拥有多个资源。例如,我有资源:“person_works_A”和“person_works_B”。如果我创建的资源可以是两者的一部分(可以在两者中工作),我该如何构建它?因为我没有1个资源“person_works_A”和另一个“person_works_B”,所以我有1个资源可以同时存在。当选择一个时,它应该剩下0个资源。

感谢您的帮助

0 个答案:

没有答案