I want to level by predecessors THEN priority

J

Jamie Fristrom

If I use Standard levelling, and I have tasks that look
like this:
Task X Priority 1
Task Y Priority 2 Predecessors 1
Task Z Prioirty 3
Then it does task X first, then task Y, then task Z,
instead of Task Z (the highest priority), Task X, Task Y.

If I use Priority, Standard, that situation works, but then
this situation doesn't work:
Task X Priority 1
Task Y Priority 3 Predecessors 1
Task Z Priority 2
This should do Task X, then Task Y, then Task Z, but it
goes: Z, X, Y.

If I set the priority for task X to 3, accepting that
Project doesn't understand that being a predecessor to a
high-priority task implies that you're just as high a
priority, then it works, but I'm trying to migrate a
project from Excel that has about two-thousand tasks in it,
and I would need some way to automate the process. Is
there some way to automate the process so that priorities
are 'correct'?
 
J

Jamie Fristrom

I was hoping to avoid writing my own VBA script. Is there a
library of popular VBA scripts somewhere? It seems to me
that this is how everyone in software engineering would
want Project to work, and that Project's behavior with my
two samples is fundamentally wrong.

But if I do have to automate it, here's the algorithm in
non-optimal pseudocode. What am I missing here?

set_priorities_recursively( task_id )
{
foreach( predecessor_task( task_id] ) )
{
if( priority( predecessor_task ) < priority( task_id ))
{
priority( predecessor_task ) = priority( task_id );
set_priorities_recursively( predecessor_task );
}
}
}

for( priority=1000; priority>0; priority-- )
{
for( task=0; task<numtasks; task++ )
{
if( priority( task ) == priority )
{
set_priorities_recursively( predecessor_task );
}
}
}
 
S

Steve House

Being a predecessor to a higher priority task DOES NOT necessarily imply
that it acquires the same high priority as its successor. You could just as
easily assume instead that a successor task "should" inherit the lower
priority of its parent task. The priority settings have nothing to do with
the task's importance in the project. Instead, they are dealing with the
relative importance of the task in question's earliest possible completion
to the on-time completion of the project as a whole and even then have
meaning if and only if the task of interest comes into conflict with other
tasks in the schedule for the attentions of the resources assigned to them.

An example of the reason for using task priorities that I use with classes
is t0 imagine a resource assigned to 5 day Task A in the office starting
Monday at 8 and finishing Friday at 5pm. He also needs to be at a
conference on Wednesday for 1 day. We put that in the schedule and give it
a Start No Earlier Than constraint to force it to Wed. Our resource is
overallocated that day expected to be both in the offic and at the
conference. So we level and find the conference moves to Monday. But
that's not reasonable - they're not going to reschedule the convention
around our convenience. So we set the conference a higher priority than
Task A before leveling. Now A gets split over Wednesday - resource is in
the office Mon and Tue, conference on Wed, back to the office and finishes
task A working Thu, Fri, and the following Mon, a more reasonable schedule.

In your 2nd example, if you want it to level in the order XYZ, set both
tasks X and Y to priority 3 and be done with it. There's nothing engraved
in granite that says all the tasks have to be ranked at a unique priority.
It's a control for you to apply if needed, not an inherent attribute of the
task itself. I don't meant to sound condescending, but you're going to be
better served by understanding the way Project *does* work and not worrying
so much about the way you think it *should* work. It actually is a very
good implementation of classic CPM scheduling methodologies.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top