RE: Fwd: Programming bounty
"Dan Heily" <[email protected]>
| Newsgroups | gmane.comp.gnome.apps.planner.devel |
|---|---|
| Message-ID | <007e01c8ec7b$af654000$0e2fc000$@net> |
Maurice; First let me introduce myself. I am recently retired person who did simulations early in my career before moving into project management. While managing projects, I wrote a scheduling program that includes the features of your planner. It had the following elements which I have not seen in your planner: 1) Project end date; 2) Early start; 3) Early finish; 4) Late start; and 5) Late finish. To compute early start and early finish I treated the schedule as a discrete event simulation. I would "activate" tasks with no predecessors at the project start time (assuming resource availability). When a task completed, I would start it's successors at the completion time. To compute late start and late finish, again I treated the schedule as a discrete event simulation with time starting at the project end date with time running in reverse. Those tasks with no successors would be activated at the project end time (assuming resource availability). The latest start would be calculated by subtracting task duration from latest finish. At latest start, the task would be marked as complete and the resources would be released (for use by a predecessor task). These two simulations handled the FS, SS, FF relationships. Slack for each task is calculated by subtracting early finish from late finish. This two step simulation needs to be invoked whenever a task or resource is added, deleted or modified. I did the above work before C++ and object oriented programming (OOP) and the wonderful graphics we now have. In summary, I know the algorithms, but am not facile with the C++ and OOP that the planner is written in. I would like to contribute to the planner by teaming with a C++, OOP expert who is VERY facile with linked lists. The symbiosis would enable us to make a major step forward in the planner capabilities. One additional functionality that I also request is the ability to designate a resource as "returnable". For example if a pool of trucks is shared by various tasks, when a task completes the truck used by the task would be returned to the pool. i.e. the resource is not consumed by the task. Please advise if this is a direction you would like to explore. Dan Virginia, USA -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Maurice van der Pot Sent: Tuesday, July 22, 2008 12:22 PM To: [email protected] Subject: Re: Fwd: Programming bounty On Tue, Jul 22, 2008 at 10:57:40AM -0400, Kurt Maute wrote: > I haven't started experimenting with it yet, but I think it looks real > promising. Indeed it does. Two requirements from my side for the implementation of a scheduling algorithm in planner are: 1) that it has a well-defined interface to allow it to be easily replaced with a different algorithm (and make selection at run-time possible at later stage). This could turn out to be the interface of LibRCPS if it is generic enough. 2) that we have a way of benchmarking it with other algorithms. Using PSPLIB (http://129.187.106.231/psplib/) would be very useful in this case, because it would allow us to reuse the benchmark results generated by others. I saw that the author used the J30 set from PSPLIB, so maybe we don't need to do any work here. Additionally there are a few things I would like us to at least keep in mind while thinking about solutions. Although libRCPS can find solutions to multi-mode resource-constrained project scheduling problems (MMRCPSP), I don't think this means it can handle split tasks. Split tasks will probably eventually need to be supported. Maybe the author of libRCPS has already thought about it. Finally, we have to think about how to mix automated scheduling and manual modification by the user. Regards, Maurice. -- Maurice van der Pot Gentoo Linux Developer [email protected] http://www.gentoo.org Gnome Planner Developer griffon26-bCGDfOjggl9Wk0Htik3J/[email protected] http://live.gnome.org/Planner