Re: Resource leveling
Kurt Maute <[email protected]>
| Newsgroups | gmane.comp.gnome.apps.planner.devel |
|---|---|
| Message-ID | <1192409191.5731.10.camel@dori> |
On Sat, 2007-10-13 at 15:56 +0200, Maurice van der Pot wrote: > On Thu, Aug 16, 2007 at 08:48:36AM -0400, Kurt Maute wrote: > > The thing is - I've been trying to get Planner to do priority based > > resource allocations (otherwise, we should just dump the priority field > > - it doesn't do anything else). > ... > > here's where I was going: > > > > Create a sorted list of tasks: dependency, priority, then wbs order > > Loop back thru dependencies, scheduling all predecessors first. > > > > Tricky part: > > Say you have: > > Task T1 - no priority assigned > > Task T2 with a priority of 10, T1 is predecessor > > Task T3 has priority 5 > > If T3 wants to be scheduled during the same time as T1, it will steal > > its resources and push it out. T2, with its higher priority than T3 is > > also pushed out, which is uncool. > > > > This led me to reason that priorities of predecessors should be derived > > from their dependent tasks, if higher than their own assigned priority. > > Likewise, the priority of a child task should be inherited from a parent > > (summary task) if higher. > > > > That is pretty much where I left off... I was adding this > > derived/inherited priority concept. > > > > Here's a copy of the changes so far, if you're brave enough to take a > > look. ;-) > > I've been thinking about what I would expect from simple resource > leveling as a user and also tried out your patch just now. Maybe we can > discuss a bit through mail what our expectations are, because > prototyping this takes too much effort just to show the concepts. ok > For the simplest solution, I would still expect the user to > order/prioritize the tasks. Planner would just try to satisfy the > constraints given. This matches with what your patch does. > > There are a few things that differ from what I expected though. > > The first is that tasks with the same resource and no deps still all > start at the same position. No work is being done for all but one and > the bars are not filled, but they start anyway. I would rather expect it > to look like a bunch of finish-to-start deps without the arrows. Yes, this is behavior that I left in from the simple priority scheduling code that Matteo Nastasi created. I agree it would be more straight forward to display the task as starting when work is actually scheduled to be done on it. > The second is related to the first: split tasks are introduced. The work > for a task can be done in parts. Take the tricky case you mentioned, but > imagine T1 is assigned to a different resource than T2 and T3. In this > case T3 will span from the start of T1 to beyond the end of T2 and it > will have part of its work done before the start of T2 and part of it > after the end of T2. > On one hand split tasks are useful to maximize resource usage, on the > other automatically splitting/joining tasks may make manipulating the > schedule less intuitive. I haven't made up my mind which I find more > important. I don't think other PM tools split tasks - they show them as continuing even though there's no work being performed on them at the time. I think this was sort of a nice feature of Matteo's code - that it would show the amount of work expected to be done on a task throughout its duration. > I was also thinking of a way to more easily adjust priorities. Suppose > the user can drag the start of tasks to indicate where the task belongs > in the priority order of all tasks. Compare this to the way you can > reorder (automatically arranged) icons on a Windows desktop. When you > drag one in between others a caret will appear to show what would happen > if you released the mouse button. > > It's not quite as simple for tasks as it is for icons on a desktop, > because a dragged task will not necessarily move to the spot in between > two other tasks because of things like deps or the resource being > available even earlier. I'll have to think some more on how to represent > this in a UI while dragging It might be best to represent in its own view as a simple list (or maybe as an option in the task list)? > I think it'd be good to move this discussion over to the -dev list. > Will you include the list on your reply if you agree? Done. -- Kurt Maute <[email protected]>