Help Contents

Overview

Quick Start Guide

Portfolio Lists

Portfolios

Attributes

Prioritization

Optimization

Bubble Charts

Bar Charts

Ranking Charts

Efficient Frontier Charts

Sensitivity Charts

Menus

The Optsee® Pro Genetic Optimizer

This algorithm lets the Optimizer test thousand or millions of possible combinations of projects to find an optimized or near optimal project portfolio that meets your constraints. The genetic algorithm works 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 predetermined number of generations).

Genetic 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 (TSP), 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 (Figure 1). 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.

Figure 1: Cross-over works by combining parts of one solution with a parts of another to create two new solutions.

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 a partial route within it that is a very good solution for visiting a different subset of cities. By 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.

The Optsee Optimizer™ genetic algorithm works 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. The Optsee Optimizer™ also uses some additional processing to improve individual portfolios during the optimization process. 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 three or more generations).

The steps below illustrate how this works:

Step 1: An initial set of random portfolios is created to form the parent population. 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 by fitness (highest optimized parameter).

Step 4: The least fit portfolios are eliminated and the remaining population becomes the parent population for the next generation.

It is important to note that because a genetic algorithm is based initially on random inputs, it will usually find different optimized solutions each time it is run depending on both the random inputs and the optimization parameters. Even optimizations performed using identical parameters will often converge on a different result. Thus, while the optimizer has been designed to find good outcomes, there is no way to tell if it has found a single "best" outcome. This is why it is useful to initially run the optimizer several times using small numbers of parents (1000-10,000) to get a feel for how difficult it is to find portfolios that meet your constraints. The more difficult it is to find portfolios that meet your constraints, the more parents you should use in your optimization.

The Optimizer allows you to manually set the parameters for the optimization such as the initial number of parents (up to 250,000), the number of generations to test (up to 100), the number of consecutive repeating identical results that indicate the optimizer has converged on a final, single, optimized result (up to 25), and the percentage of mutations used in each generation (up to 45%).

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 illustrations 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.

Constraints can be based on the sum total of a particular attribute, such as the total cost for all projects or on the average (=sum total/number of projects) of the attribute, such as the average number of employees per project.

Because optimization of large portfolios can be computationally intensive, running optimizations can take several seconds to many hours, depending on the processor speed of the PC, the number of projects, and the parameter settings. In particular, optimizations that are constrained to an average attribute value or a minimum (not less than) attribute value can be more time consuming.

No other Optsee functions can be executed during an optimization; however, the optimization can be cancelled at any time by clicking the [Cancel] button on the Progress Indicator form. If you cancel an optimization before it has finished, the most recent results at the time of cancellation will be displayed in the Optimization Results form. Note that for optimizations using large number of parents, it may take several minutes to empty and re-set the computer memory (RAM) that was being used during the optimization.

When an optimization has finished, the results are displayed in the Optimization Results form. The optimized portfolio is displayed in the "Last" column of the Portfolio form (if it is open) or in the "Base" column (if it is the first optimization).

It is important to note that because the Optsee Optimizer™ uses a genetic algorithm to optimize a portfolio, it will find an optimal selection of projects, but not necessarily the single optimal solution. The optimizer may find different solutions when applied several times to the same portfolio. However, in most cases, when there are an adequate number of parents, the optimizer will find a solution that is within a few percentage points of the optimal solution.

The Optsee® genetic optimizer uses the following parameters:

  • Maximum Number of Parents drop-down menu: This drop-down menu is used to select the maximum number of parents that will be created in the initial population. The optimizer will try to make as many parent portfolios as it can up to this number. However, it may not be able to make the maximum amount due to being unable to find enough portfolios that meet the applied constraints.
  • Maximum Number of Generations drop-down menu: This drop-down menu is used to select the maximum number of generations (including the parent generation) that will be created in the optimization process. The optimizer keeps creating new generations until this number has been satisfied, or until the specified number of "Repeats Indicating Convergence" has been reached.
  • Repeats Indicating Convergence drop-down menu: This drop-down menu is used to select the maximum number of consecutive generations that can be created that have an identical optimized attribute maximum value. Thus, when three or more generations have repeated the same optimized attribute maximum value, the optimization process has converged on the optimum value for that portfolio and the process will cease.
  • Percentage of Mutations drop-down menu: This drop-down menu is used to select the percentage of mutations to be added to each generation created after the initial population has been created. Mutations are new portfolios that are created using the same algorithm as the parents, and are added to the population to add diversity in the population and prevent premature convergence before a high optimization is achieved. However, too large a percentage of mutations can prevent the optimization from converging at a high optimization due to dilution of the population with initial population (non-optimized) solutions.

For additional information on optimizations, see Optimization Introduction, the Optsee Optimizer form, and the Optsee Optimizer Results form.