custom algorithms youtube video

13 views
Skip to first unread message

Achiya Elyasaf

unread,
Jun 3, 2012, 5:15:04 AM6/3/12
to heuris...@googlegroups.com
hi
after you add the stochastic branch you say that the second branch has 2 sub-scopes and mutation gets only 1, therefore you had to add the ParentCopyCrossover.
here is what i don't understand:
  1. this means that your current crossover output is just one child (because the crossover successor is the same successor of ParentCopyCrossover)? how do you choose which one? is there a way to output the 2 children?
  2. StochasticBranch has FirstBranch, SecondBranch and successor. What is the successor for? either we go to first or we go to second, isn't it? when will it happen? after the first/second branch finished?
  3. What is SubScopeRemover for? why would you want to remove all sub-scopes?

Thanks

Achiya

Andreas Scheibenpflug

unread,
Jun 4, 2012, 4:37:14 AM6/4/12
to heuris...@googlegroups.com
Hi Achiya,

you are right, the output of a crossover operator is one child. A
crossover expects two solution candidates (or subscopes) and produces
one child as output which it writes to the current subscope. The
ParentCopyCrossover chooses one solution candidate randomly, but it
can't produce two childs. If you need two childs, you could remove the
ParentCopyCrossover and directly use the subscopes which the selection
operator created.
Every operator in HL has a successor which is the operator that gets
executed after the current operator. In this case the StochasticBranch
has no successor which means that after the First or SecondBranch is
executed on every subscope, the successor of the
UniformSubscopesProcessor (the predecessor of the StochasticBranch)
gets executed.
The SubScopesRemover is used to remove the two subscopes that the
selection operator created as they are not needed anymore because we
have already created a new solution candidate.
If you want to see in detail how the operators change the scopes you
can use the debug engine to have a closer look at the scope tree. You
can choose the debug engine in the Engine tab page of the algorithm
and can then right-click in the Operator Graph view on operators and
place breakpoints on them. If you click on run and switch back to the
Engine view, you can have a look at the scopes and the current values
of the parameters and step through the algorithm.


Best regards,

Andreas
Reply all
Reply to author
Forward
0 new messages