Hi Sean,
Thanks a lot for you reply.
Please see my inline response.

On Thu, Jun 2, 2016 at 6:58 AM, Sean Luke <[log in to unmask]> wrote:

> On May 31, 2016, at 1:22 AM, Atm Golam Bari <[log in to unmask]> wrote:
> >>> MultiPopCoevolutionaryEvaluator (under ec/coevolve/) extends
> SteadyStateEvaluator and overrides evaluatePopulation(, , )
> 1. I presume you modified MultiPopCoevlutionaryEvaluator to do these
> things.

> 2. SteadyStateEvaluator doesn't use evaluatePopulation.  It uses
> evaluateIndividual and works with SteadyStateEvolutionState, not
> SimpleEvolutionState.


> >>> GroupedProblem inside MultiPopCoevolutionaryEvlauator is changed into
> SimpleProblem
> ???  The purpose of coevolution is to evaluate individuals in the context
> of one another.  SimpleProblem would make no sense.
​- My idea was like this : send one individual to the problem, play the
interaction game with other individuals from different population inside
problem class.​

> >>> Inside performCoevolutionaryEvaluation (, , ), writing
> prob.evluate(....) is called two times each for one population to be
> workable with SimpleProblem.
> This isn't coevolution then.  It's just two separate populations.
​  - I used the above idea to measure the context of one other inside the
problem class. I am not sure ho​w much it make sense in terms of

> > What am I missing? Is it a right way to handle SSEA in a two pop
> coevoluton? Any suggestion or new approach is highly appreciated.
> I think you need to first think about what SSEA means in a coevolutionary
> context.  Steady State is basically this:
> ​
> Loop forever:
>         I <- breed new individual
>         F <- evaluate individual
>         G <- add individual into population, perhaps displacing an
> existing individual
> How would you modify this loop to do SSEA in the way you're hoping?  What
> kind of coevolution are you trying to do?
​- I need "Parallel 2-Population Competitive Coevolution"​

​- I don't want to modify this loop.
What I did in custom evaluator is as follows -
public class EvalParetoSSEA extends SteadyStateEvaluator {
public void evaluateIndividual(final EvolutionState state, Individual ind ,
int subpop) { //Overriding
 performCoevolutionaryEvaluation( state, state.population,
(SimpleProblemForm)p_problem )
//See this is SimpleProblem, If I use GroupProblem I get a runtime error :
SSEA uses SimpleProblem
//This is what I did when want to send
​from inside performCoevolutionaryEvluation​
for(int i = 0; i < state.population.subpops[0].individuals.length; i++)
                for(int k = 0; k < numShuffled; k++)
                    for(int ind = 0; ind < inds.length; ind++)
                    inds[ind] =
                    updates[ind] = true;
                    if (ind == 0)
                    prob.evaluate(state,inds[ind],subpops[ind], 0);
                                      *//This line gets the
                    prob.evaluate(state,inds[ind],subpops[ind], 0);

                    //prob.evaluate(state,inds,updates, false, subpops, 0);

​     }


} ​

​So, the  question that I want to ask now :
>>How shall I modify SimpleProblem to work with GroupProblem inside
performCoevolutionaryEvolution? Or do I really need it.
>>evaluteindividual of steadystateEvaluator sends one individual, if I
override evaluate individual inside custom evaluator I get null pointer
exception (Please see above). So, I can't use this version?
>> What I finally did is - use steadystateevaluator's evaluateindividual to
send individual from a single population one by one to the problem class,
catch that individual and the opponents from different population and
perform interaction game, set fitness etc. But I am not sure whether it is
any kind  (say Parallel 2-pop competitive) of  coevolution ?

​Thanks a lot for your time.​


> Sean