none
Load balance tasks in Microsoft Project file RRS feed

  • Question

  • Hi, i have been using Microsoft Project to define my scheduler jobs and their dependencies.
    Every task has a duration and predecessors or successors. Each task is basically a job and predecessors are the jobs that should finish before te current job can start.

    When i let all jobs run at their minimum dependencies, i sometimes can have 5 jobs running or 20 jobs running concurrently depending on how they are connected.

    Now, i want to add additional dependencies (predecessors, in other words constraints) between the tasks so that at any time only a maximum of 10 jobs (say) can run. The additional dependencies should be added such a way that the total time to finish all jobs is minimum.

    Today, i feed the mpp file to my custom written tool that loads the tasks, their duration and predecessors into an array list and uses a SQL table to temporarily store intermediate data (that's queryable). I first identify the tasks in the critical path and assign resources to these first, however each task in the critical path cannot run unless their predecessors finish first, and their predecessors cannot run until their own predecessors finish first and so on.
    Anyway, i created algorithm for this in 2005 and it still works very good. However the load balancing takes considerable time and i hate to use SQL server for intermediate data (i can use LINQ now)

    I want to move away from custom code and want to know if microsoft project can load balance tasks and accomplish my requirements.

    So let's say i have 100 tasks and the minimum dependencies (predecessors/successors) and their duration are defined, and i have 10 cpus (threads) available, in other words lets's say i have 10 resources that can work concurrently, how can i have microsoft project add additional predecessors so that no more than maximum 10 tasks can be running at any time, while keeping the  total time to minimum.
    The start/end time for each task in the mpp can be ignored. Any task can start as soon as it's predecessors are done

    Thanks,
    -srinivas yelamanchili


    sri

    Tuesday, July 10, 2012 11:45 PM

Answers

  • Hi,

    Project can perfectly load balance tasks, though not the way you describe it; it can introduce delay onto tasks to that effect.

    - Create a resource TasksCount, give it a Max UNits of 10 (or 1000%)

    - Assign it to all tasks; should the tasks already have resoruces, first make them NOT effort driven.

    - Do Resource leveling: that's it. If you want other resources NOT to intervene in leveling, in the Resource Sheet insert the column Can Leel and set to No for all resoruces.

    I doubt whether your program will do much better that this: so why re-invent the wheel?

    Greetings,

    Wednesday, July 11, 2012 11:51 AM
    Moderator

All replies

  • srinivas,

    To answer your basic question as to whether Project can "load balance tasks", the answer is "no".

    Predecessors and successors should only exist where there is a true dependency between tasks, not as a control function. The only way I can see to come up with the control you desire is with an algorithm in a VBA macro, but then, you already have custom code through SQL that apparently does what you want. Stick with that.

    John

    Wednesday, July 11, 2012 2:34 AM
  • Hi,

    Project can perfectly load balance tasks, though not the way you describe it; it can introduce delay onto tasks to that effect.

    - Create a resource TasksCount, give it a Max UNits of 10 (or 1000%)

    - Assign it to all tasks; should the tasks already have resoruces, first make them NOT effort driven.

    - Do Resource leveling: that's it. If you want other resources NOT to intervene in leveling, in the Resource Sheet insert the column Can Leel and set to No for all resoruces.

    I doubt whether your program will do much better that this: so why re-invent the wheel?

    Greetings,

    Wednesday, July 11, 2012 11:51 AM
    Moderator