algorithmic modeling for Rhino

Octopus Examples

The last release (0.3.2) of octopus [on food4rhino] contains a small manual and four commented example files which should give a rough overview over basic funtions.

basic new features are:
- you can work single-objective problems by imposing diversity as a second objective
- you can add preference selections that try to get close to the parametrization of that solution, compared to the older preference selection where the respective part of objective space is favoured
- you can change the number of objectives during a search
- 3d models of the solutions can be displayed in octpus' objective-space viewport

also here are two more recent little videos:


you can look, zoom and pan in the viewport of octopus with the same commands as in rhino, to examine the solutions.

- Right mouse button + mouse movement: rotate the scene

- SHIFT + RMB + mouse movement: pan the scene

- CTRL + RMB + mouse movement: zoom the scene

this should give you a good overview of what EMO is.

Traditionally, a good set of solutions for the user

- is close to the real pareto front (check)

- is evenly distributed along its approximation of the pareto-front (check)

- has extents in the search space as big as possible


some examples to get startet:



Add a Comment

You need to be a member of Octopus to add comments!

Comment by andreaquartara on June 14, 2013 at 4:38

Hi guys! I need some help.. my questions are referred to the new version octopus there a legend that hep me to understand the meaning of the colored box of the result? (meaning of red, yellow boxes) each generation each box represent a single indiv? I setted 10 indiv for each generation but I have more than 10 boxes in the results visualization..thanks

Comment by Manuel Sotomayor Millan on March 7, 2013 at 16:34

Thanks djordje.

Now I understood it.

So dumb. Haha

Comment by djordje on March 7, 2013 at 15:53

No, because you are using the "absolute" component, which means each time the value drops below 0, it is "converted" into the same positive value, which is larger than 0.
So Octopus always minimizes the values (goes bellow zero) UNLESS you tell him not to do so - by using "negative" component when you need to maximize fitness and using subtracted absolute value in case when you need exact value as a fitness.

Comment by Manuel Sotomayor Millan on March 7, 2013 at 13:40

but that was actually my question.

If it minimizes and you give it 0 as a target value, then it could go further to negative values.

That is what I assumed.

Is it right???

Comment by djordje on March 7, 2013 at 11:49

It always minimizes the values (which means it goes bellow the zero).

If you want either zero that means that you need to threat 0 as the target value. Robert gave pretty nice explanation in here about both target values and maximizing.

Comment by Manuel Sotomayor Millan on March 7, 2013 at 9:53

I am not sure I understand how to select if i want to maximise or minimize the goal values.

It looks that either minimizes everything or otherwise tends to 0.

In your examples, on how to do that:

If it minimizes everything, the example that goes for a target value could surpass it and go on with negative values.

If everything tends to 0, the one you want to maximize minimizes actually although you invert it to a negative value??

Did I misunderstood something there??

Comment by Robert Vier on January 26, 2013 at 16:10

an optimization algorithm is NOT a replacement of good thinking. it always depends on the problem you are working on, there is no universal answer to how many generations you will need. 

octopus implies a strategy of elitism (the 'archive'), which keeps a fixed number of the 'best' solutions for the next generation. the other solutions for the next generation are bred based on the members of this elite, using the mutation rate and the tournament size.

so basically the more generations, the better. you can follow the process by sliding through the history (when stopped of course. you can always resume - except if you load a history. this is not in there yet), and if you dont see any significant changes anymore, the evolution with the current settings mostly has converged  - so found a very good set of solutions / or got stuck in some kind of deceptive trap, produced, again, by the problem. changing the mutation rate can help with this.

if you search for diversity of solutions, SPEA-2 is lacking a robust strategy to ensure the widest possible extent of the solution set. this extent depends on when it starts to truncate pareto-optimal solutions from the archive to reach its fixed size. the truncation operation ensures the survival of extreme solutions, so once that stage is reached you are fine. but before, it might throw away extreme possibilities which you might want to see in the end. this is a very general problem, and is a task to tackle yet.

Comment by djordje on January 26, 2013 at 15:57

Thank you for the reply Robert.
1) How to determine the number of Generations?
2) Are solutions better the larger the number of the Generations is (the last Generation is therefor the best one?) ?

Comment by Robert Vier on January 16, 2013 at 16:09

you can right click on each of the solutions and choose to 'reinstate'. their final assessment is left up to you.

more on multi-objective problems here

Comment by djordje on January 16, 2013 at 14:30

Thank you for the reply Robert.
But I am not sure I understood you.

These there values need to be merged in the single "number" parameter in order to import them as Fitness into Octopus?
And then what? In Galapagos I minimize or maximize the Fitness and choose the top most Genome. In octopus, first I do not know hot to set this minimization or maximization.
And then when I click on "Start" and get these spatial Genomes (each point represents one Genome, right?) I do not know how to choose the best one.

Comment by Robert Vier on January 16, 2013 at 8:50


for now you could just manipulate your objective values like that:

Besides that, I'll also try to build in a naming strategy for the goal-dimensions.

Comment by djordje on January 13, 2013 at 19:19

I have just tried using Octopus on Rhino5.
And I do not seem to get the logic by which I could minimize or maximize each of fitness imported.
Or maybe even ask for one of my fitness to take an exact value (let's say 3), on of it to be minimized as possible, one of it to be maximized as possible.

Is there some video that could show us how to set these basic steps in Octopus, using some example like above attached files?

Thank you.





  • Add Photos
  • View All


  • Add Videos
  • View All

© 2022   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service