I’m using Octopus for gentic optimization on high constrained problems.
The fitness evaluation is only based on the price of the solution.
I can’t understand why octopus is giving me so strange and uncomprehensive results :
- Generation 1 is empty
- I set a max poulation of 100 indivduals : 164 ind on Gen 2, 150 on Gen 3, 155 on Gen 4 …
- This is the result the pareto front :
Gen 29 : 5710105.81334
Gen 30 : 5710105.81334
Gen 31 : 5805383.57809
Gen 32 : 5805383.57809
It get up, even if the objectif is to minimize
- When trying to reinstate best solution (based on visual selection thanks to the graph) the graph and the solution does not match (see picture below)
Can someone explain me what is happening on each point ? … octopus seems to be a real black box.
PS : i only had 1 fitness objective (price), i just activate the “diversify parameters” to see better
(i’m also open to document about octopus, as not much literrature is accessible, or even others optimization tools with true/false input to validate each ind -galapagos doesn’t haveit)
the axis and real fitness doesn’t match … (Y axis is just “diversify parameters”)
Octopus is not made for optimizations of just one objective. Please try to supply at least to ‘real’ goals! If this multiobjectivization is nit possible with your problem, you might just switch to Galapagos - it performs well on single objective problems!
I step forward in the research of my problem. It seems to be independant from octopus : it’s like there is multiply ticks in my solution and that octopus (or even galapagos) only read the first one, which is actually the fitness of the previous individual, so genetics solvers are just brained and think that is the fitness of the current genome.
By the way, in the octopus examples, (i think it’s the 3) you present a mono objective optimization (and just add “diversify parameters”)
@robert_vier Can you shed any light on how the fitness value is read, once the new genomes has been send to the gene pool ?
Is the first new value that is read, or it wait that all component have expirated = false ?
Octopus and Galapagos (and most other solvers i guess) are setting a new value to the parameters, then set the ‘expireSolution’ flag on those components which makes all downstream components (all the dependencies of the parameters) update themselves. this, afaik, is happening in one go to the normal ‘user’ (say plugin-coder), and cannot be interrupted. after this, the newly computed values at the objective-components are read and collected by octopus / galapagos.
however if you work with timers, dataDams, any kind of loops, this behaviour of grasshopper (some call it ‘state-less’) might be disturbed. make sure your definition does not use any of those ‘hacks’ to the default behaviour.
@robert_vier Thanks a lot !!
I kind of have that idea before, without really tracking down how the “expireSolution” flag get around my solution.
I finally found which component made all that mess :
the stream freeze/gate component from heteroptera is the one !
by replacing them with the “stream filter” component, I finaly have 1 expiration wave after each actualization of my gene pool, thus, only one fitness value per actualization. Now fitness value and gene pool are again linked together !
This explains my questions 3 and 4.
But still point 1 and 2 remains unresolved. I’m going to launch new optimization test (with multi criteria) to see if it keeps happening.
If you got a faulty setup, octopus might as well do strange things like having an empty first gen or strange truncation behaviour.
Nevertheless - point 2:
where and what do you count / how do you get those numbers?
and: population size is 100, but there s an additional archive which makes it 200 per gen. also it depends if there are enough individuals of type X and how the settings are to gill up pools.
we use octopus since a long time in our office. it is an expert tool and there might be a beginners intro one day but for now there is not much. some knowledge on multi-objective optimization willbe good up front.
for instance the papers on the original algorithms by e.zitzler are a good start.