RE: Leveling by ID vs. "Standard"
- From: Jim Rodgers <JimRodgers@xxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: Fri, 22 Dec 2006 16:59:01 -0800
Folks are headed home to be with family and friends
for the Holidays, but for you hard core types I have
more data on the "Standard Leveling without Splits"
debacle in my lab.
Once I level (without splits), I get a 3 to 5 splits if
I use the Standard method. My "trick" for removing
the splits not only causes tasks go wander into
non-working time (where, I thought, they could not
go), but this simply creates as many splits elsewhere.
They don't go away; they just move over. Even if I
clear the [standard] leveling, the splits continue to
move to other tasks, while other tasks move into
non-working time when I try to "fix" them.
THE GOOD NEWS -- SORT OF
Now, when I use "Level By ID Only" the splits go away
after leveling. And they stay away through repeated
cycles of clear / level / clear / level, etc.
The fact that I get WORSE times using the Standard
leveling method is IRRELEVANT. This is because the
resulting schedule is defective. The times it produces
are based on a schedule with splits when splits are not
allowed.
Meanwhile, after a few initial rogue assignments
changing [spontaneously?] from Flat to something else,
I have seen no more of that behavior.
I opened up an SRX with MS Support. I will have this
whole thing in their hands soon -- which probably
means after Christmas. (Wait, do they even celebrate
that holiday in Greenland?)
Merry Christmas to everybody who's still listening.
And thanks.
== Jim
"Jim Rodgers" wrote:
I have run out a couple of threads on this forum.
to find out why tasks sometimes become split --
even when the "Can Split" flags everywhere are
set NOT to split.
Now the plot thickens.
-THIS- thread is about why does "Standard" leveling
get worse results than the "By ID Only" leveling.
Now I am finding some connections.
Mike Glen, MVP, points out in his tutorial...
"Microsoft Project: 19 – Levelling for Results,"
http://pubs.logicalexpressions.com/Pub0009/LPMArticle.asp?ID=489
that leveling can get different results on different
PCs or on the same PC if tasks or resources are
entered in different order [and maybe for other
reasons]. And he points out that MS is, as one
would expect, secretive about the algorithms they
use in the Project leveling engine. So, these
differences are hard to anticipate.
Now, I'm thinking this is a two-way street. After
talking to MS Support, I am thinking there may be
a leveling "bug" (undocumented feature) in Project
that INTERACTS with the project data, perhaps
via the file data structure.
Here's why:
I get splits sometimes, despite setting them not to
happen. At first, it seemed the splits simply could
not be cleared away by clearing the leveling. NOW,
I find that clearing the leveling sometimes actually
CAUSES the splits! Bummer.
So I wrote a routine that scans all tasks to find all
the splits. I learned that I can kill off the splits (most
of the time) by changing the duration to one minute
and then back to what it was. (I am using Fixed
Units with Effort Driven turned OFF, so resources
are not modified in the process, etc.) Don't know
why, but (usually) it works. While doing this, I get
a message box for every split it finds.
Here's the code:
Sub RepairSplits()
Dim iTask As Integer
Dim vTemp As Variant
For iTask = 1 To ActiveProject.Tasks.Count
If ActiveProject.Tasks(iTask).SplitParts.Count > 1 Then
MsgBox "A split was found in task: " & vbCrLf & _
ActiveProject.Tasks(iTask).Name
vTemp = ActiveProject.Tasks(iTask).Duration
SetTaskField "Duration", "1m"
DoEvents
SetTaskField "Duration", vTemp
End If
Next iTask
End Sub
Armed with this tool, I have been leveling and
clearing and leveling, over and over again. If I
level "By ID" nothing funny happens. But if I
level by the "Standard" method, it -sometimes-
generates splits in about 5 of the approximately
500 tasks. And sometimes, Project will error
out of my "de-splitting" macro because it won't
let me change the duration at all. Interestingly,
I -can- change it from the Project interface. And
dig this: after restoring the original duration,
Project moves that task into non-working time.
Well, actually, it's nonworking time for one of
the resources, but ok time for the other resource.
Could having two resources assigned to the task
be a problem if the two resources have different
working time calendars?
Well, I know I'm an idiot and all, but that can't be
it, can it? Project lets me enter these resources
that way.
Oh yeah. Resources. I am getting an occasional
"contribution" there, too. It's not repeatable enough
for me to characterize just yet, but I have had a
couple of assignments develop special Work Contours
that I did not give them. The default is Flat, right?
(Thanks to MVP Jan De Messemaeker for finding
the first ones in my project for me.)
Being a habitual dumb@$$, I don't really know
the correct way to check for inadvertently mis-set
Work Contours in a project with 500 tasks. So
here's another code I wrote to detect this
aberration:
Sub RepairContours()
Dim iTask As Integer
Dim iAsgn As Integer
Dim vTemp As Variant
For iTask = 1 To ActiveProject.Tasks.Count
For iAsgn = 1 To ActiveProject.Tasks(iTask).Assignments.Count
If Not ActiveProject.Tasks(iTask).Assignments(iAsgn).WorkContour
= pjFlat Then
MsgBox ActiveProject.Tasks(iTask).Name & vbCrLf & _
" has a non-Flat Work Contour in an assignment involving
" & vbCrLf & _
ActiveProject.Tasks(iTask).Assignments(iAsgn).ResourceName
ActiveProject.Tasks(iTask).Assignments(iAsgn).WorkContour =
pjFlat
End If
Next iAsgn
Next iTask
End Sub
From now on I am NOT going to use the "Standard"
leveling -- at least not on this particular project. It
seems to cause incorrect function of the program
and damage the data I entered for the tasks and
resources.
What am I not telling? Most of the tasks were VBA-
generated by copying and pasting "model" tasks and
then programmatically editing them to have certain
predecessors, durations, resources, etc.
It would be nice if Project 3000 had an object model
that allowed the user to enter "leveling rules sets" and
even manipulate them programmatically.
That would be way cool.
Does any of this rambling stimulate anyone to mention
similar experiences or, especially, ways around some
of this strange behavior? Are there any MSDN, TechNet,
or KnowledgeBase articles about this stuff? (My searches
have fallen on hard times. MS Searches are not what
they used to be.)
Thank you in advance for the support I have been getting
from the MS Project Community.
-- Jim
- Follow-Ups:
- Re: Leveling by ID vs. "Standard"
- From: Mike Glen
- Re: Leveling by ID vs. "Standard"
- References:
- RE: Leveling by ID vs. "Standard"
- From: Jim Rodgers
- RE: Leveling by ID vs. "Standard"
- Prev by Date: Re: Ho Do You Flag Tasks That Are Due To Start
- Next by Date: Re: Problem: Duration does not change while adding resources
- Previous by thread: RE: Leveling by ID vs. "Standard"
- Next by thread: Re: Leveling by ID vs. "Standard"
- Index(es):
Relevant Pages
|