Prolog 创建会议计划程序

Prolog 创建会议计划程序,prolog,scheduler,Prolog,Scheduler,我被指派在Prolog中开发一个程序,使用限制来安排会议 概念 有许多会议,每次会议都有许多参与者,其中一些是必须参加的,另一些是可选的。每次会议也有一个持续时间和应分配给它的特定类型的会议室。有3种不同类型的房间,每种类型都有自己的容量 目标是最大限度地增加可选参与者的数量,并确保不会在同一时间在同一地点举行会议,所有必须参加的参与者都将出席会议,并且会议应在会议室类型中举行 老实说,我不知道如何处理这个问题,更不用说让它。我可以帮我们一些忙 以下是我创建的“数据库”: %Participan

我被指派在Prolog中开发一个程序,使用限制来安排会议

概念

有许多会议,每次会议都有许多参与者,其中一些是必须参加的,另一些是可选的。每次会议也有一个持续时间和应分配给它的特定类型的会议室。有3种不同类型的房间,每种类型都有自己的容量

目标是最大限度地增加可选参与者的数量,并确保不会在同一时间在同一地点举行会议,所有必须参加的参与者都将出席会议,并且会议应在会议室类型中举行

老实说,我不知道如何处理这个问题,更不用说让它。我可以帮我们一些忙

以下是我创建的“数据库”:

%Participants ID
participantID(1).
participantID(2).
participantID(3).
participantID(4).
participantID(5).
participantID(6).
participantID(7).
participantID(8).
participantID(9).
participantID(10).
participantID(11).
participantID(12).

%Meeting(name, duration, obligatory participants, optional participants)
meeting(thesis_presentation,1,[12,3,5],[1]).
meeting(company_meeting,1,[10,3],[5]).
meeting(chairman_election,3,[1,2,3],[4,5,6]).

%Placement(meeting, type)
place(meeting(thesis_presentation), auditorium).
place(meeting(company_meeting), normal).
place(meeting(chairman_election), auditorium).

%Rooms(id, type, capacidade) -> Regular=normal, Auditorium=projector, Conference Room=videoconference
room(1,normal, 5).
room(2,normal, 5).
room(3,normal, 5).
room(4,conference_room, 10).
room(5,conference_room, 10).
room(6,auditorium, 15).

我认为总体思路是执行搜索:因此,您将会议分配给特定的房间,与特定的人会面,并利用Prolog的回溯机制来确保在发生冲突时回溯。然而,我担心这个问题会被解决,因为它相当广泛。此外,这个任务似乎没有多大意义,因为一个人可以简单地安排所有会议,一个接一个地安排。在这种情况下,所有可选参与者都可以参与。@CommuSoft我理解,但这种方法实际上是通过限制,使用clpfd库。在这种情况下,您首先必须限制时间:设置上限和下限。