RE: Fwd: Programming bounty
"Dan Heily" <[email protected]>
| Newsgroups | gmane.comp.gnome.apps.planner.devel |
|---|---|
| Message-ID | <00c101c8ed37$28648680$792d9380$@net> |
Maurice; What is puzzling to me is lack of a project end date. What is the origin of the backward pass? By modeling the network of tasks, the order is automatically determined. Forward pass: "start" all tasks that have no predecessor (assuming resource availability). When a task completes (i.e. time = start time + duration) then you look at all successors to the completed task. If the successor has no uncompleted predecessors, then that successor may be started (again within resource constraints). When all tasks are complete, then the earliest start/finish has been determined for all tasks. Backward pass: initially, "start" all tasks with no successor at project end date minus duration. When the task completes, then look at its predecessors. If all successors to that predecessor have been completed then that successor may be "started". When all tasks are complete, you have determined latest start/finish. When I say "start" above, I really mean that the start is added to an event queue. The event queue kept in time order (gets tricky when running the clock in reverse during the reverse pass). After initialization the simulation is started and just executes until there are no more events. Upon completion, if all tasks are not complete, then there must be a resource deadlock (i.e. fewer of a given resource than there are demands for that resource) Additionally in both the forward and reverse simulations, whenever a resource is returned then all tasks waiting on that resource are examined and "started" if the returning resource is sufficient to unblock the task. I was able to do linked lists in FORTRAN by determining how the compiler computes the address of a subscripted variable. For example, to compute the location of X(I) i.e. &X(I), the compiler uses the following formula for a 4 byte variable: &X+4*I-4. The 4*I converts from words to bytes, and subtracting 4 converts from base 1 to base 0 i.e. first element is X(1). The epitome of my simulations was a machine shop simulation that would roll back lower priority tasks that had allocated a resource that was later needed by a higher priority task. The process flows included forks/joins whereby a process could split and later synchronize. Let me relook at the people resources again. Thank you for sharing your thoughts with me. Dan Virginia, USA -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Maurice van der Pot Sent: Wednesday, July 23, 2008 6:59 AM To: [email protected] Subject: Re: Fwd: Programming bounty On Wed, Jul 23, 2008 at 12:22:14AM -0400, Dan Heily wrote: > This two step simulation needs to be invoked whenever a task or > resource is added, deleted or modified. There is a part of planner doing forward and backward passes and each task actually does have a latest_start and latest_finish property. I suspect this is just not presented to the user, but I have not yet looked at the code in detail. However, the above does assume a complete ordering of tasks and determining that ordering is probably the most difficult problem. An algorithm to determine this ordering is what I hope will be implemented (or integrated in the case of libRCPS) in the coming period. > 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. May I ask what languages you are familiar with? Planner is written in C, but in a way that is sorta OO. It uses libraries such as glib to provide us with all sorts of nice things such as lists. > 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. Planner makes a distinction between material resources and work resources. I have not yet noticed the difference though... probably because I only ever use work resources. But aren't the work resources (people) exactly the same as the returnable resources you speak of? > Please advise if this is a direction you would like to explore. Your experience could certainly be very valuable for this project. I regularly have questions about project management or scheduling that I as a software engineer can't answer nor find the answer to. The answers to these questions often directly influence the user-visible part of planner. 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