diff --git a/eo/src/es/make_op_es.h b/eo/src/es/make_op_es.h index 91274a24..40d72ddd 100644 --- a/eo/src/es/make_op_es.h +++ b/eo/src/es/make_op_es.h @@ -102,8 +102,8 @@ eoGenOp & do_make_op(eoParameterLoader& _parser, eoState& _state, eoRealIni // ES crossover eoValueParam& crossTypeParam = _parser.createParam(string("global"), "crossType", "Type of ES recombination (global or standard)", 'C', "Variation Operators"); - eoValueParam& crossObjParam = _parser.createParam(string("discrete"), "crossObj", "Recombination of object variables (discrete or intermediate)", 'O', "Variation Operators"); - eoValueParam& crossStdevParam = _parser.createParam(string("intermediate"), "crossStdev", "Recombination of mutation strategy parameters (intermediate or discrete)", 'S', "Variation Operators"); + eoValueParam& crossObjParam = _parser.createParam(string("discrete"), "crossObj", "Recombination of object variables (discrete, intermediate or none)", 'O', "Variation Operators"); + eoValueParam& crossStdevParam = _parser.createParam(string("intermediate"), "crossStdev", "Recombination of mutation strategy parameters (intermediate, discrete or none)", 'S', "Variation Operators"); // The pointers: first the atom Xover eoBinOp *ptObjAtomCross = NULL; @@ -116,12 +116,16 @@ eoGenOp & do_make_op(eoParameterLoader& _parser, eoState& _state, eoRealIni ptObjAtomCross = new eoDoubleExchange; else if (crossObjParam.value() == string("intermediate")) ptObjAtomCross = new eoDoubleIntermediate; + else if (crossObjParam.value() == string("none")) + ptObjAtomCross = new eoBinCloneOp; else throw runtime_error("Invalid Object variable crossover type"); if (crossStdevParam.value() == string("discrete")) ptStdevAtomCross = new eoDoubleExchange; else if (crossStdevParam.value() == string("intermediate")) ptStdevAtomCross = new eoDoubleIntermediate; + else if (crossStdevParam.value() == string("none")) + ptStdevAtomCross = new eoBinCloneOp; else throw runtime_error("Invalid mutation strategy parameter crossover type"); // and build the indi Xover