Project portfolio management requires optimizing your portfolios to discover the most valuable set of projects to execute within your constraint limitations such as limited money, time, resources, and risk tolerance. In addition, a good project portfolio optimization tool should be able to integrate project dependencies such as “Project B” can only be executed if “Project A” is executed first.
Finding optimized project portfolios isn’t at all about just manually “picking the best projects” as some project portfolio management tool vendors suggest. In even small portfolios of just 32 projects there are over 4 billion possible combinations, so finding the best set that meets your constraint limitations is not trivial. And the number of possible combinations rises exponentially as a function of the number of projects in your portfolio.
So it is important that your project portfolio management tool includes a solid optimization module. A properly implemented “Genetic” or “Evolutionary” algorithm can provide such a module.
Genetic or evolutionary algorithms are modeled after the biological processes of natural selection, and have been used to find good solutions to problems that have many possible solutions. For example, in the classic Traveling Salesperson Problem, the challenge is to find the shortest distance that would be required for a salesperson to visit each city in her territory and return home. Using the textbook example, we’ll assume that each city is connected to every other city. A 10 city tour has about 181,000 possible solutions, and a 20 city tour has about 10,000,000,000,000,000 (1016) solutions! Instead of testing each possible route (the brute force approach), which becomes computationally impossible for even modestly large numbers of cities, genetic algorithms allow you to create a number of random routes (the “parent” set), select the shortest routes from that random set, and then cross-over the parents to produce a set of “child” routes. The shortest routes are then selected from this new pool of parent and child routes, and the process is repeated until the user stops the process or the algorithm converges on a shortest route.
Why does this work?
Consider that one route may contain a partial route within it that is a very good solution for visiting a particular subset of cities whereas another route may contain partial route within it that is a very good solution for visiting a different subset of cities. By design portfolio crossing-over these two routes, one of the offspring will now contain both of these short routes, and will consequently be shorter overall than either of the parent routes.
How does this work for project portfolio management?
A genetic algorithm works for optimizing project portfolios by creating an initial set of “Parent” portfolios that meet your constraints, and then combining these parent portfolios in such a way to create a generation of “Child” portfolios. The best combined set of parent and child portfolios are then selected and used to create the next generation of portfolios. This process continues until the user-specified optimization parameters are satisfied and/or the process converges to a single optimized result (i.e., the identical result is obtained after a set number of generations).
Steps 1 to 4 below describe how this works:
Step 1: An initial set of random portfolios is created to form the “Parent” population. Parent portfolios that do not meet the constraint criteria are eliminated.
Step 2: Pairs of individual portfolios in the parent population are crossed-over to create new portfolios. The new population now consists of both the original Parent portfolios and the new “Child” portfolios. Child portfolios that do not meet the constraint criteria are eliminated.
Step 3: The population is ranked from highest to lowest by portfolio value.
Step 4: The least valuable portfolios are eliminated, and the remaining population becomes the Parent population for the next generation (back to Step 2).
One possible drawback of using genetic algorithms is the potential of “premature convergence” where the optimizer finds a solution that is not near-optimal because the population of potential solutions being used lost diversity too quickly. In others words, the parent-child project portfolio sets were too close together in composition. This can be avoided in the same way that nature maintains diversity: by generating “genetic” mutations. Mutations are new portfolios that are created using the same random input algorithm as the initial parents, and are used to add diversity to the population, and prevent premature convergence before a higher optimization is found. In the steps above, the mutated portfolios would be added after cross-over has finished (Step 2), but before the population is ranked by fitness (Step 3). This ensures the survival of only mutations that meet the minimum fitness criteria of that generation.
If you’re evaluating genetic algorithms as a project portfolio optimization tool, make sure that it has the ability to modify the input parameters such as initial number of parents, number of generations, minimum number of repeats before convergence, and number or percent mutations. Also, look for flexibility in the types of constraints that you can set. For example, constraints can be based on the sum total of a particular attribute, such as the total cost for all projects, or on an average of the attribute, such as the average number of employees per project. You should also be able to set constraints as not-to-exceed (maximum) or not-less-than (minimum).