This document aims at introducing you quickly at the SelfPlanner intelligent calendar application. SelfPlanner aims at helping you schedule your tasks onto your calendar. Traditionally, tasks are kept in task lists and are accomplished by the user on a priority or urgency basis. This many times results in having tasks for long time into the task list or do not have them been accomplished at all. On the other hand, calendars are mainly used to put on them events, i.e. meetings, classes etc.
SelfPlanner aims at putting your tasks into your calendar, i.e. pre-arranging time to accomplish them. In this way, tasks are treated in the same way as events. However, SelfPlanner does not arrange events where other people participate too (i.e. meetings). Meeting arrangements can be performed by existing tools, like the meeting arrangement facilities of Google calendar.
We hope that you will have fun using SelfPlanner and we would appreciate very much your comments and your suggestions to improve this tool.
To use SelfPlanner, you need first to sign up. After pressing the Sign-Up button in the main application window (http://selfplanner.uom.gr), you are asked to provide a username and a password (twice), as well as you Google account details (Fig.1). The latter is necessary, since SelfPlanner uses Google Calendar to display the resulting schedules. If you are not using Google Calendar, this is a great opportunity to start using it! If you are using Google Calendar, we would propose you to create an alternative account to associate with SelfPlanner. However, even using your normal account is no problem (as long as you trust us :-), since you can continue using your account in the traditional way (i.e. putting events directly on your calendar), while SelfPlanner will try to accommodate your tasks in the remaining free time slots.
Fig. 1: Creating a new SelfPlanner account.
Note that creating a new account for SelfPlanner is a moderated procedure. Your request will be approved manually by us in due time (usually within the next 24 hours).
Note finally that SelfPlanner encrypts any message exchanged between the client and the server.
After your Sign-Up request has been approved, you are ready to use the system. Go to the system’s main page (http://SelfPlanner.uom.gr), put your username and password in the login area and press “Login”. After a few seconds, the main dialog box appears (Fig.2).
Fig. 2: The main dialog box
Note: From time to time the system refuses to log you in. This is a known bug we are working on; please try again (you might need to try 2 or 3 times).
In the main dialog box you can see a list of your tasks. Depending on which radio button is selected, you may see all of your tasks (select All), only the completed tasks (select Completed) or only the active ones (select Not Completed).
Locations play a crucial role in SelfPlanner. Each task may have a location or a class of locations assigned to it. The system computes the temporal distance between locations, i.e. the time the user needs to go/travel from one location to another, and leaves the necessary time between adjacent tasks that are scheduled in different locations.
Note: The system computes travelling time with car (not walking). Any time below 3 mins is considered 0. Any other temporal distance is rounded on the next multiple of 30 mins, except it its distance from the previous multiple of 30 mins is less than 3 mins. Distances that cannot be computed (e.g. between US and Europe) are considered one day.
In order to assign locations to tasks, you first need to define these locations. This can be done by clicking at the link Locations, exactly below the Login and Sign-Up buttons in the main application Windows. The system asks you again to enter your login data, and after a few seconds, the location manager window appears (Fig.3).
Fig. 3: The location manager window
In this window you can define new locations of your interest, by writing their name in the text box above the map, pressing the button Place Marker and then clicking on the map at the point where the location should be.
To remove a location, press the button Remove Marker and then click on the location you want to remove. To move the map to an alternative area of the earth quickly, write a name (e.g. Stanford) in the text box at the lower right corner and press the button Search.
Note: After you add a location, the system computes the distances between the new location and all the old ones. Please do not logout or close the window until the message “Ready” appears at the bottom of the window. Please also ignore any “error” messages appearing at the same area before the “Ready” messages: They concern distances that cannot be computed, e.g. between a location in US and another in Europe.
Having defined your locations of interest, you might want to define some classes of locations. A class of locations is just a set of locations that have some common attribute. For example, a class could be Hotels or Hotels in Thessaloniki or Restaurants etc. A location can be member of several classes. Location classes are used alternatively to single locations: If a location class is assigned to a task, SelfPlanner will select a specific location that is member of this location class, to schedule the task. In other words, when you assign a location class to a task, SelfPlanner has not only to schedule the task in time but also in space!
To define a class of locations, in the main dialog box (Fig.2) press the Locs button and then the Location Classes dialog box appears (Fig.4). In this dialog box you can see your existing list of classes of locations, create new ones and edit or delete existing ones (double clicking an existing location opens it for editing).
Fig. 4: The Location Classes dialog box
To add the new class of locations, simply click the Add button and the dialog box New Location Class appears (Fig.5). There you have to give a name for the new location class, as well as to select all the simple locations that are members of this location class.
Fig. 5: Adding new location classes
The same dialog box appears in case you select to edit an existing class of locations; however, you cannot alter the class name.
In the main dialog box (Fig.2) there is a combo box labeled Current Location: . With this combo box you can define your current location, in order to be taken into account before producing your plan. For example, if you specify that you current location is in US, the system won’t schedule your first task in 2 hours from now in Europe.
Your current location is usually extracted automatically by the location of the last task you have accomplished. However, it might be the case that the last task was accomplished many hours ago and, since then, you have changed your location. For this reason the system gives you the option to specify your current location manually.
If you want to define a task that has a very specific time to be accomplished and that is not interruptible (however it could be periodic), you can do that by clicking the Quick Ins button in the main dialog box (Fig.2). The dialog box Quick Insert appears (Fig.6).
Fig. 6: Quick inserting a new task
In the text box labeled Task Name: you have to define a name for this task. From the combo box labeled Location: you have to select the location or the class of locations where the user must be in order to accomplish this task. Note that a special location called Anywhere appears on the top of this list. By selecting Anywhere as the location of a task, this means that the specific task can be executed anywhere; in other words, the system does not have to leave any temporal distance between this task and any adjacent tasks.
You have also to define the start time of the task and its duration (its end time is computed automatically), which must be a multiple of the system’s quantum of time being 30 mins (usually you would like to specify upper bounds). The task will be scheduled exactly at the time and with the duration you specify with these controls, provided that there is no conflict with other tasks.
Fig. 7: Defining a new task as periodic using the Quick Insert dialog box
To specify that the task is periodic, you need to check the Periodic check box. Then you have to specify the type of the period (radio buttons Daily, Weekly and Monthly) and the number of iterations. There are two ways to specify the number of iterations. Either by selecting End after X recurrences or by selecting End by deadline and specifying a deadline at the Deadline calendar control. In the last case, you have also to specify whether the first and last periods are included in the iterations. This is because, depending on the current date/time and the deadline, it might be the case that the first and/or the last period are not entirely in the domain (this option is practically not used with quickly inserting tasks but with general tasks, see next section). In any case, the entire set of the periods to be scheduled is shown on the right hand side of the dialog box and the user can select to bypass some instances by just clearing their check boxes.
If the new task we want to define is not very specific in time or it is interruptible, we cannot use the Quick Ins button. In that case, we press the New Task button in the main dialog box (Fig. 2) and the New Task dialog box appears.
Fig. 8: The New Task dialog box.
The New Task dialog box has four tabs. In the tab labeled Task we enter the basic task details (similar to what we entered while quickly inserting new tasks). In the tab labeled Domain we define the temporal domain of the new task, i.e. when it can be scheduled. In the tab labeled Domain Prefs we define our preferences over the task’s temporal domain, i.e. whether we want the task to be scheduled as early as possible or as late as possible etc. Finally, in the tab labeled Periodic we specify whether the task is periodic or not, in a way similar to how we did it in Fig. 7. Let’s see all of them in turn.
In the tab Task of the New Task dialog box (Fig.8) we have to define the name of the new task, its duration and its location, in a way similar to what we did while quickly inserting new tasks (Fig.6). Note the absence of a Start time: calendar control (as in Fig.6): Now we are going to define a temporal domain for the new task and its start time will be decided by SelfPlanner. Note also the button Loc Classes: This does nothing more than showing the dialog box Location Classes (Fig.4), giving the user the possibility to define new location classes without exiting the New Task dialog box.
By setting the check box Interruptible we specify that this task can be accomplished in parts (e.g. writing a paper cannot be done at once). For interruptible tasks, we have to specify three additional parameters, which are:
· Minimum part duration: This is the minimum allowed duration a part can have (in mins). For example, for writing a paper, a scheduled part of 30 mins is perhaps useless; an author might need parts of at least 2 hours to be productive.
· Maximum part duration: Similarly, this is the maximum allowed duration a part can have (in mins). For example, for writing a paper, a scheduled part of more than 6 hours might be undesirable.
· Minimum part distance: This is the minimum distance different parts of the same task should have (in mins). For example, while we defined that the maximum part duration for writing a paper is 6 hours, we do not want the system to schedule two parts of 6 hours each of this task next to each other or very close to each other. So, by specifying a minimum part distance of, e.g., 12 hours, we avoid to have two parts of the same task close to each other, thus implicitly violating the maximum part duration constraint.
Note: Similar to the minimum part distance, we are working on implementing a maximum part distance constraint, setting the maximum temporal distance between any pair of parts of the same task.
This is the most crucial (and perhaps cumbersome) part of a task’s definition. A domain consists of a set of intervals specifying when the task (or its parts) is allowed to be scheduled. SelfPlanner uses an innovative way to define temporal domains, which is based on a combination of template applications and manual editing. Let’s see them in detail.
Fig. 9: The Domain tab.
Figure 9 gives an overview of the domain tab. There are plenty of controls in it, so let’s explain them in turn. First of all, you have to define the Release Date and the Deadline, by using the two calendar controls on the top side of this resizeable dialog box.
The main area of the dialog box consists of several tabs. In order to see the current domain, you have to select the Manual tab in the first row of tabs. In that case, a second row of tabs appears, giving you the option to see the current domain in various views: Day View, Week View, Month View and Year View (this second row of tabs does not appear if you select another tab in the first row). Fig. 9 presents the Week View of the current domain (perhaps you need to resize the dialog box in order to have a better view of the domain). The various colors are interpreted as follows:
· Green cells in the view denote timeslots that are included in the domain.
· Red cells denote timeslots that are not included in the domain.
· Pink cells (not shown in Fig. 9) denote timeslots that are undefined; however, undefined cells are considered as being in the domain.
· Black cells (also not shown in Fig. 9) denote cells before the release date or after the deadline.
The user can change the status of a cell from green to red and back by just clicking on it or clicking and dragging. For every cell that changes its status, a message appears in the List of Actions on the left hand size of the dialog box. This list of actions is an ordered list denoting what actions the user has performed on the domain of the current task. Actually, this is exactly the way the temporal domain is stored internally: not as a list of intervals but as a list of actions. The user can manage this list by deleting actions (using the button Del), changing their order (using the buttons MoveUp and MoveDown), which might result in changes to the domain, saving the list of actions (using the button Save) in order to reload it (using the button Load) for another task.
Note the special button Goto: This button gives the user the option to watch temporally the domain as this would be if only some of the first actions were in the list. Just select an action in the list (not the last one) and press the GoTo button.
A special note for the Month View and Year View tabs. By selecting one of these views, the current domain is shown by days and not by half hours. In that case, apart from the usual colors (green, red, pink, black) described in the Week View, there is another one: Gray cells denote that within a day there are both green and red timeslots. Note also that by clicking on a day in the Month View or in the Year View, all the timeslots of that day get the same color (red or green). As always, every action is recorder in the List of Actions (Fig.10).
Fig. 10: Month View of a domain.
Note finally the two buttons at the bottom of the domain view: In any view we see only one “period” of the view, e.g. a day or a week or a month or a year. To go to the previous or the next period, just use these buttons.
Manually editing a domain is not very efficient, both from a computational and from a user’s experience point of view. So, the user can use templates in order to perform several changes to the whole domain with a few clicks. There are three types of templates, Day Templates, Week Templates and Month Templates.
· A Day Template characterizes the half-hours of a day as INCLUDED (green) and NOT-INCLUDED (red). It has 48 timeslots.
· A Week Template characterizes the half-hours of a week day as INCLUDED (green) and NOT-INCLUDED (red). It has 336 timeslots (Fig. 11).
· A Month Template characterizes the days of a month as INCLUDED (green) and NOT-INCLUDED (red). It has 30 timeslots.
Fig. 11: A Week Template specifying the hours that downtown shops are open in Greece (not Shopping Centers).
For each type of templates there are some predefined templates (they cannot be deleted by the user), however the user can define new ones and save them with new names. To define a new template you can start changing an existing one by clicking to its cells, and finally save it using the Save Template button at the bottom of the dialog box (Fig. 11) and giving it a new name. Alternatively, you can start creating an entirely new template from scratch, by pressing the button New Template (Fig. 11). Note that while editing a template, the List of Actions does not change. Editing a template does not change the domain of the current task; only applying a template does change a domain.
So, there are four ways to apply a template to the domain of a task:
· Add the green timeslots to the domain. This is achieved by pressing the Add Hours button while the Complement checkbox is unchecked.
· Removing the red timeslots from the domain. This is achieved by pressing the Remove Hours button while the Complement checkbox is unchecked.
· Add the red timeslots to the domain. This is achieved by pressing the Add Hours button while the Complement checkbox is checked.
· Removing the green timeslots from the domain. This is achieved by pressing the Remove Hours button while the Complement checkbox is checked.
So, a template can be used in different ways and by combining several templates one can create very interesting domains. Note that, as already mentioned, the order in which several templates are applied to a domain may matter!
Finally, one can apply a template either at the whole domain or on part of it. In order to apply a template to a whole domain (and this continues to be true even if the width of the domain changes by resetting the values of the release date and the deadline), the check box Entire Domain at the bottom of the dialog box has to be checked while applying the template. Otherwise, the user can select the temporal interval on which the template will apply, by setting its ends using the calendar controls From: and To:.
For any template applied to a domain, a new action appears in the List of Actions displaying all the parameters of this application.
Note: Any change to a template after its application to a domain does not affect the domain. In other words, a copy of the template is stored with its domain the template has been applied.
Using the tab Domain Prefs the user can express her preference over when she prefers the task to be scheduled within its domain (Fig.12). There are five options:
· No-preference: The user does not have any preference over when to schedule the task.
· As later as possible: The user prefers the task to be scheduled as late as possible. The deadline time-slot receives one unit of utility. The release time timeslot does not receive any utility. The utility corresponding to the intermediate timeslots (including those that are out of the task’s domain) is computed with linear interpolation between the two ends.
· As earlier as possible: The user prefers the task to be scheduled as early as possible. The release time timeslot receives one unit of utility. The deadline timeslot does not receive any utility. The utility corresponding to the intermediate timeslots (including those that are out of the task’s domain) is computed with linear interpolation between the two ends.
· After this time point: The user prefers the task to be scheduled after a specific time point. This time point is defined using the calendar control Step point. Any timeslot after the step point is assigned a unit of utility. Any timeslot before the step point does not have any utility.
· Before this time point: The user prefers the task to be scheduled before a specific time point. This time point is defined using the calendar control Step point. Any timeslot before the step point is assigned a unit of utility. Any timeslot after the step point does not have any utility.
Having defined the utility of the various timeslots, the utility the user receives by scheduling a specific task at a specific interval (or a set of intervals in case of an interruptible task) is computed as the sum of the utilities corresponding to the various timeslots the task occupies divided by the duration of the task.
Fig. 12: Expressing preferences over a task’s domain.
Note: Having step utility functions for periodic tasks does not make any sense, with the exception of the specific instance of the periodic task for which the step point falls in its period.
In order to define a task as periodic, you have to set the check box Periodic in the tab Periodic of the New Task dialog box (Fig.13).
Fig. 13: Defining a new task as periodic.
Fig.13 is similar to Fig.7, with the only difference being the absence of a Deadline calendar control. However, the deadline can be set in the Domain tab of the same dialog box. Note also that the Deadline calendar control gets deactivated each time the user selects to specify the number of periods using the End After radio button.
A periodic task is considered as a collection of simple, non-periodic tasks. However, defining a task as periodic has several benefits for the user, since she specifies the parameters of the task once only. For example, the user has to specify a single domain (spanning over all task’s periods) and then this domain is cut in slices and each slice is attached to each period. Note that the several slices, although they have the same maximum width (i.e. a period), do not have to be similar in shape (in terms of busy/not busy periods). Furthermore, the various instances of the periodic task do not have to be scheduled in the same way.
To edit an existing task, just double click on its name in the task list on the main dialog box (Fig.2). Irrelevant to how the task has initially defined, either with the New Task button or with the Quick Ins button, the dialog box of Fig. 8 will appear, giving you the possibility to change all the details of the task. Note that for tasks that have been initially defined with the Quick Ins button, their domain has been defined in such a way that they can only be scheduled at a specific time-point, i.e. the one that has been specified by the user in the Quick Insert dialog box (Fig.6).
The user can set ordering constraints between pairs of tasks. This can be achieved by pressing the button Prefs in the main dialog box (Fig.2). The Binary Constraints/Preferences dialog box appears (Fig.14), where the current list of binary constraints is displayed (note that a second list with binary preferences is foreseen, however this feature is not yet supported).
Fig. 14: The list of current binary constraints.
To define a new ordering constraint, you have to press the New button below the list with the constraints and then the dialog box Add New Constraint appears (Fig.15). This dialog box contains two list controls, each one of them listing the entire set of tasks. To define a new ordering constraint of the form A<B, you have to select one task from the left list and another (different) task from the right list and then press the button OK.
Fig. 15: Defining a new ordering constraint.
You can change your account settings, i.e. your password and your Google account settings, by pressing the button Params in the main dialog box (Fig.2). The dialog box Parameters (Fig.16) appears. Of course you cannot change your username!
Fig. 16: Changing your account’s settings.
After having defined all of your tasks, you might want to see them on your calendar. Just press the Solve button in the main dialog box and wait a few seconds. If SelfPlanner succeeds in solving the scheduling problem, a message of the form:
Problem solved in X.X seconds. Check/refresh your Google Calendar
appears at the bottom of the main dialog box (Fig.17). Usually X.X is 0.0; this is the time needed by the scheduler to solve the problem. Any additional time you might have waited was due to the tasks’ preprocessing (before sending the problem to the solver) and due to the communications taking place mainly between the system and Google Calendar.
Fig. 17: A Problem has been solved.
Having the problem been solved, you just need to refresh your Google calendar to see the solution (right click anywhere on the right frame of your browser where Google calendar is displayed and select Refresh).
Note: Google Calendar supports multiple calendars for each user, however SelfPlanner puts the tasks only in the default calendar.
Scheduling problems are solved using an adaptation of the Squeaky Wheel Optimization framework. Please have a look at the following publication for more details:
I. Refanidis. Managing Personal Tasks with Time Constraints and Preferences. 17th International Conference on Automated Planning and Scheduling Systems (ICAPS-07), Providence, Rhode Island, US, September 2007. AAAI Press.
You can find it at http://users.uom.gr/~yrefanid/personal/john_publications.html .
Each time you connect to SelfPlanner, some tasks or parts of tasks that have been previously scheduled might have been accomplished by you. The system checks the start times of all existing tasks or parts of tasks and for all of them whose start times lies between your last connection and the current time, it asks you whether you have accomplished them or not (Fig. 18). For each task you have accomplished, the non-editable text box Remaining duration: in Fig.8 is updated in order to show the part of the task that has not yet been accomplished. Any task with remaining duration equal to 0 is considered a completed task.
Fig. 18: Asking about the completion status of past tasks (or parts of tasks)
SelfPlanner supports all timezones. Any time you define the domain of a task, either by manual editing or by applying a template, all your actions are considered with respect to your computer’s timezone. So, if you change country, you have to change your timezone in order for your tasks to be consistent with the local time.
Note also that you have also to change the timezone of your Google calendar account, in order to be the same with your computer; this has to be done using Google calendar’s menus.
As for the daylight savings, each time a change in the hour occurs (twice a year), SelfPlanner considers this hour as out of the domain of any task (even in case an hour is gained).
You can always use directly your Google Calendar and add events on it or arrange meetings with it. Any event added by you directly on your Google Calendar is identified by SelfPlanner and considered as busy time. So, no task will be scheduled at the timeslots used by Google Calendar’s events.
SelfPlanner does not support meeting scheduling, so if you want to arrange a meeting and invite participants or negotiate with them about the time (and the place) of the meeting, you have to do that using the Google Calendar’s facilities.
The only problem with events or meetings added directly on your Google Calendar’s account is that they do not have a location reference. So, SelfPlanner might schedule a task adjacent to them, without taking into account travelling times. We are working to alleviate this problem.
Note: Google Calendar supports multiple calendars for each user, however SelfPlanner reads only the default calendar.
If you experience any problem while using SelfPlanner or if you have any suggestion to improve/enhance it, please send us your feedback! You can do that by selecting the Leave a comment! link on the main application window (below the login area). Otherwise, send an e-mail to either firstname.lastname@example.org, or email@example.com.
Refanidis & Anastasios Alexiadis
University of Macedonia, Dept. of Applied Informatics