Skip to content

1_2_ How Does Optimo Work

BIM-based Performance Optimization edited this page Jan 19, 2015 · 2 revisions

Optimo is an integrated system that is developed for enabling designers to optimize building performance problems with multiple objectives in Dynamo. Optimo uses an evolutionary Multi-objective Optmization (MOO) algorithm (Non-dominated Sorting Genetic Algorithm-II or NSGA-II) to create a package of nodes in Dynamo that can help designers optimize multiple conflicting objectives and approach to a set of optimal solutions.

Optimo includes four nodes:

  1. Initial Solution List: Generates the initial set of random variables within the provided range and with the size of population defined by user. The output of this node is a list of variables and objective. The objective values are null and they are assigned by Assign Fitness Function Results node.

  2. Assign Fitness Function Results: Gets a list of objective values as input parameters and assigns them to the population list. This workflow enables the Optimo to accept objective functions as nodes or packages of nodes.

  3. Generation Algorithm: Gets the parents solution list in each generation (initial solution list at the beginning of optimization process) and generates the children solution list using genetic algorithm. The objectives are assigned using Assign Fitness Function Results again.

  4. Sorting: Uses Pareto Front sorting to sort the solutions.


For future versions of optimo:

Future versions of Optimo will have support for two more optimization algorithms- SMPSO and MOEAD

  1. NSGA II
    • NSGA is a non-domination based genetic algorithm for multi-objective optimization. It works in the following way: An initial population is initialized and sorted. Each individual in the population is sorted based on their fitness (determined by the fitness functions). The parents for the next generation of population are selected by using binary tournament selection. These parents create the next generation with crossover and mutation operators. This continues until a goal is reached or until a set number of generations has been created.
    • NSGA II is best used for problems with a PF that consists of several non-continuous convex parts.
  2. PSO and SMPSO
    • A PSO (Particle Swarm Optimization) algorithm works similarly to how a flock of birds moves towards a source of food: each bird follows a leader (one who is currently closest to the goal) with a certain velocity based on their distance from the leader. The farther away the bird is from the leader, the faster it will go. If any other bird is closer to the goal, then they become the leader. In the algorithm, the birds are part of the population (particles in this case), and the food source is the target goal (determined by the fitness functions). Even though this is not a genetic algorithm, mutation operators are still used to get the population out of a local optimum (if needed).
    • SMPSO is the most diverse algorithm, as it excels in all test cases except for ZDT3 (see below).
  3. MOEAD
    • MOEAD is an evolutionary multi-objective optimization algorithm based on decomposition. It works in almost the same way as NSGA II. The only difference is that instead of viewing all objectives as one problem, this algorithm splits up objectives and optimizes them individually. Then, all of these solutions are compared together. The best (based on the fitness functions) solutions will be chosen as a jumping off point for the next generation.
    • MOEAD did not do better than the other algorithms in any of the tests below, however it was very close to the leader in some cases. It also outperformed the other two algorithms in some UF test cases.

Performance of NSGA II/SMPSO/MOEAD Tested Using ZDT and DTLZ Problem Families

zdt/dtlzResults

All three algorithms were compared using the above chart of test results (number of iterations taken to reach PF; lower number is better) for the ZDT(Zitzler-Deb-Thiele) and DTLZ(Deb-Thiele-Laumanns-Zitzler) problem families. They are described below.

ZDT1- Tests for a convex Pareto-optimal front(PF)

ZDT2- Tests for opposite of ZDT1 (concave PF)

ZDT3- Tests for discrete PF- PF consists of several noncontinuous convex parts

ZDT4-Tests for the algorithm's ability to deal with multimodality (tests 21^9 PFs)

ZDT6- Tests algorithm with a non-uniformly distributed PF where the density of solutions is lowest near the PF and biggest away from the PF

DTLZ1- Tests for a linear PF

DTLZ2- Tests for a PF with the shape of a quadrant of a sphere

DTLZ3- Tests for the algorithm's ability to converge on a given PF

DTLZ4- Tests for a good distribution of solutions

DTLZ5- Tests for a curved PF

DTLZ6- A more difficult version of DTLZ5

DTLZ7- Similar to ZDT3, this tests an algorithm's ability to maintain sub-populations in different PF regions

These results may be used as a guide when deciding which algorithm to use in Optimo- based on your problem's expected Pareto front, one algorithm might be better than the other two.


Performance of NSGA II/SMPSO/MOEAD Tested Using UF Problem Family

ufResults

The above results are for the UF (unconstrained) set of test problems. The results show how close the algorithm got to the desired PF (lower number is better). The expected Pareto fronts and Pareto sets for each problem are shown below.

UF1-

uf1

UF2-

uf2

UF3-

uf3

UF4-

uf4

UF5-

uf5

UF6-

uf6

UF7-

uf7

UF8-

uf8

UF9-

uf9

UF10-

uf10

These results may be used as a guide when deciding which algorithm to use in Optimo- based on your problem's expected Pareto front, one algorithm might be better than the other two.