Parul Patel: Group Activity Planner(GAP)
Group Activity Planner (GAP)
Summary
GAP is an AI program (agent) that provides assistance to any team or group that
is attempting to schedule an activity. At a high level, the agent will increase its knowledge
about the user and their preferences. Given the knowledge base that it creates, it can help
its users to schedule activities. A user can request a specific date and a specific time that
he/she would like a group of users to meet for an activity. The agent is very useful
in providing users with scheduling capability based upon user
preferences/profiles, and their current schedules.
GAP is composed of objects including the agent, the users, user preferences, user schedules, and
activities. In the future, GAP can be enhanced to have properties on activities to add even
more complexity by associating properties such as location (e.g. hold an activity in California…
even though a schedule may permit it, travel time/expense may not), or physical constraints
(e.g. if an activity is sky diving, certain people with certain medical conditions may not be
able to participate even though the schedule may permit it). GAP can grow to include much more
knowledge (as shown by adding properties to Activities), however, for the purposes of this project,
GAP will make the following assumptions:
-
If the schedule indicates that the date/time slot is available for a particular user, then the
activity (regardless of nature) can be added to that user GAP will only be aware of activities
that the user has notified it of (e.g. the user may have scheduled a meeting and not let the
agent know… in which case according to the agent, the user is free during that date/time interval).
-
Activities are not differentiated.
-
Preference is always given to earlier date/time slots (in the case where the agent is requested
to find a date/time slot) that a group can meet. A group is 1 or more users.
-
All users are defined by name and all users have a preference file (which may be blank) and all
users have a schedule (which also may be empty). A user name is a single word and two users cannot
have the same name.
-
All time slots are one hour in duration and military time (multiples of one hour can be requested).
Illustrative Example
-
We have to let the agent know who are all the users.
-
We have five users: Tom, Mary, John, Dave, and Lisa.
-
add_user('Tom').
-
add_user('Mary').
-
add_user('John').
-
add_user('Dave').
-
add_user('Lisa').
-
Then we have to give preferences for the users. This is the time that a user will not be available
for a meeting.
-
Mary does not want to see anyone on 11/28/99 from 8:00 am to 12:00 pm.
-
add_preference('Mary', 11/28/99, '8:00', '12:00').
-
John want's to go to golf on 11/29/99 from 1:00 pm to 3:00 pm.
-
add_preference('John', 11/29/99, '13:00', '15:00').
-
Now the user can try to schedule meetings:
-
Tom's wants to have a meeting to discuss operating systems with Mary and Dave on 11/28/99 from
10:00 am to 1:00 pm.
-
schedule_meeting('Operating Systems', ['Tom','Mary','Dave'], 11/28/99, '10:00', '13:00').
Result:
[ Could not schedule meeting ]
Users available: Tom Dave
Users unavailable: Mary
-
Lisa wants to get together with Mary, Dave, and John to study aritificial intelligence on
11/28/99 from 6:00 pm to 9:00 pm.
-
schedule_meeting('Artificial Intelligence', ['Lisa','Mary','Dave','John'], 11/28/99, '18:00', '21:00').
Result:
[ Meeting scheduled for: Lisa Mary Dave John ]
-
Now the user can see their schedules.
-
Lisa wants to see her schedule.
Result:
Artificial Intelligence 11/28/99 18:00 21:00
-
The agent can print the schedules and preferences of all the users.
Result:
**************
User: Dave
Preference:
Schedule: Artificial Intelligence 11/28/99 18:00 21:00
**************
**************
User: John
Preference: 11/29/99 13:00 15:00
Schedule: Artificial Intelligence 11/28/99 18:00 21:00
**************
**************
User: Lisa
Preference:
Schedule: Artificial Intelligence 11/28/99 18:00 21:00
**************
**************
User: Mary
Preference: 11/28/99 8:00 12:00
Schedule: Artificial Intelligence 11/28/99 18:00 21:00
**************
**************
User: Tom
Preference:
Schedule:
**************
TECHNIQUES
There were three main challenging areas of development of the GAP application:
1. Searching the Tree,
2. Saving State Space changes after each command, and
3. Conflict Checking.
The GAP agent saves the state space in a tree format. Each node on the tree consists
of the user, preference, and schedule for each individual. Each state is traversed using
the depth first search mechanism. The agent uses depth first search to both find and to
update the knowledge base database about users, preferences and activities
that are being scheduled.
After the user enters a command, the change in the state space is reflected before the next
command. This is similiar to the situation calculus discussed in class. The new
situation (environment) is passed on to the next command, thus saving the
state space changes after each command.
The agent also determines if there are conflicts with schedules and preferences before scheduling
any meetings. It performs this conflict checking by using constraint satisfaction
techniques. Knowledge about existing schedules and preferences are stored in domain's knowledge
base. Rules are created that use this knowledge to constrain their firing; once the constraints
are satisfied, the rules can be executed.