Discussion:
scheduling problem
(too old to reply)
Brian Mcminn
2005-09-29 18:54:55 UTC
Permalink
The attached short file does not schedule in the way I
expect it to (using 2.1.1).

I expect the milestone date to force OneA and TwoA
to be done first but taskjuggler allocates the tasks
in the order they occur in the input file rather
than in the order that would allow the milestone
to be satisfied.

I'm not sure whether this is a bug or I just don't
understand how to use the tool. How do I tell
taskjuggler that some subset of my tasks really need
to be done earlier than some other tasks?

Thanks,
Brian
Chris Schlaeger
2005-09-29 19:33:51 UTC
Permalink
Don't you get an error message when scheduling this example? At least the current SVN version does, but I've changed a few things in that area recently.

The problem is that you have two chains of tasks

start->OneA->FinishA
start->TwoA->FinishA

Both start and FinishA have a hardcoded date and oneA and twoA use the same resource. So OneA and TwoA must both be completed between the hardcoded dates, yet they can't happen in parallel due to the single resource. And that just doesn't work out.

By removing the hardcoded date in FinishA you get it to schedule without errors. If you want to control the order of OneA and TwoA without specifying explicit dependencies, you need to use the 'priority' attribute.

BTW, use 'scheduling' to enforce a scheduling direction for a task.

Hope that helps,
Chris

--
TaskJuggler Developer
Brian Mcminn
2005-09-29 21:06:13 UTC
Permalink
Oops, I replied to the e-mail I got about this and I just noticed
that it doesn't show up in the forum.

Yes, I get an error but I'm still confused. There are no constraints for the order between OneB and TwoA so I expected taskjuggler to schedule TwoA before OneB. If it had done so, the date for the milestone could have been met and taskjuggler would have completed without printing errors.

It probably wasn't right to call this "asap" - I'm not really trying to affect the scheduling direction. I'm just trying to get certain tasks allocated in a way that satisfies a milestone. While it's true that I could use priority to make this work I expected it to work without such hints.
Chris Schlaeger
2005-09-29 21:58:31 UTC
Permalink
If you look at the 'criticalness' and the 'pathcriticalness' of your tasks, you will see, that they are all the same. TaskJuggler has no way of knowing that you want your milestone FinishA to happen as early as possible. So you have to use 'priority' to tell it what you think is important and what not.

The scheduler uses 'priority' first and then 'pathcriticalness' for tasks that all have the same priority.

For the curious: 'criticalness' is a measure of how likely a tasks will get the assigned resources for all it's time slots. 'pathcriticalness' is a measure for the criticalness of all the pathes that the task is on. You can use this to find the critical pathes in your project.

Chris
--
TaskJuggler Developer
Brian Mcminn
2005-09-29 22:40:17 UTC
Permalink
Sorry to be persistant, but I still don't understand why this doesn't work the way I expect it to. (Typical dumb user comment, but hey, that's what I am w.r.t. this program!) :)

I have modified my simple test to add two more tasks that follow on to the earlier "A" tasks and given them separate resources. I was expecting that even if taskjuggler ignored the small hint of a missed milestone that it would recognize the huge hint of a schedule that was longer than necessary.

The first thing I tried was exactly the file I'm sending. I simply raised the priority of the milestone. This didn't have the effect of raising the pathcriticalness of the tasks that led up to it. Next, I tried raising the priority of task "TwoA" (I uncommented the line with the "prio 2" comment). This shuffled the order but still left the project ending later than it could end. Finally, I got the schedule that I was expecting when I raised the priority of task "OneA" so that it occurred first. This cut a week out of the schedule.

Maybe I'm expecting taskjuggler to do far more than it's capable of doing. I expected that it would just naturally find the shortest schedule without me having to dink with the priorities. Or maybe I've just handed it a pathological case?

Brian
Chris Schlaeger
2005-10-09 17:42:37 UTC
Permalink
There is definitely room for scheduler improvement here. I'll have a look at the optimizer code to improve the handling of such cases. Thanks for the example.

Chris
--
TaskJuggler Developer

Loading...