Is there anyone who has knowledge about Optimo package

Hello everyone,

I am trying to use optimo package for GA optimization.


In NSGA_II.GenarationAlgorithm, there is three list. I can understand first two list but I do not know what is the last list. It is not fittness score of new population because We are getting the new populations’ fittness score after applying fittness function. Are there anyone who has knowledge abot what excatly this node does ?

1 Like

maybe this old blog post helps:

What are you trying to achieve with your optimization? The generative design tools that are in Revit 2021 and later can run optimizations on Dynamo files - the “optimization” method uses NSGAII.

I want to learn what “NSGA_II.GenarationAlgorithm” this node does. It should create new solution list and first two lists are my new solutions. Bu I do not know what is the third list .

NSGA-II, or the Non-dominated Sorting Genetic Algorithm II, is a popular multi-objective optimization algorithm based on evolutionary principles. The algorithm is designed to efficiently solve optimization problems that involve multiple, often conflicting objectives. NSGA-II uses concepts from evolutionary algorithms such as selection, crossover, and mutation to find solutions to the problem at hand. The main features of NSGA-II include:

  1. Fast non-dominated sorting: The algorithm sorts the population of candidate solutions based on their Pareto dominance levels, which helps maintain diversity among solutions.
  2. Crowding distance: NSGA-II calculates the crowding distance for each solution in the population to maintain diversity in the search space. This metric measures how crowded a solution is in the objective space, with lower values indicating higher crowding.
  3. Elitism: The algorithm ensures that the best solutions found so far are preserved across generations, promoting convergence towards the Pareto-optimal front.
  4. Binary tournament selection: NSGA-II uses binary tournament selection, where two random individuals are compared and the better one, based on dominance rank and crowding distance, is chosen for the mating pool.

These features make NSGA-II effective in finding a diverse set of Pareto-optimal solutions for multi-objective optimization problems. The algorithm has been widely applied in various fields, such as engineering design, scheduling, and resource allocation.

For more information look into the paper by Kalyanmoy Deb, Amrit Pratap, Sameer Agarwal, and T. Meyarivan in 2002.

Regarding the list explanation, I think it depends on what you are trying to achieve with the Dynamo graph and what the inputs and outputs are. Can you share more on that?

Hello Mohammad_Asl, Thanks for information. Here is the more information about my script. I am trying to optimize simple function x^2+y^2


First I created my initial list:

Then I am creating a custom node from the nodes in the first image to get it as a function as in following picture

Here I got my initial population and their fittness values. I am taking that values and giving them to NSGA_II.GenerationAlgorithm to create offspring list.

Here first two lists are my offsprings I assume but I dont get what is the third list. I only have 2 variable and their fittness result. The algorith should look at the fitness results and give me new population based on the fitness values. They can not be new fittnes values because I am calculating the new fittnes values with function apply node as you can see in the picture.


Lastly I am giving the process to the loop and finding the best solutions but still the third list is confusing. I wanna understang clearly what is going on in that node.