32 #ifndef SHARK_ALGORITHMS_DIRECT_SEARCH_MOCMA 33 #define SHARK_ALGORITHMS_DIRECT_SEARCH_MOCMA 46 #include <boost/foreach.hpp> 57 template<
typename Indicator>
66 std::vector<CMAIndividual<RealVector> >
m_pop;
80 m_individualSuccessThreshold = 0.44;
96 std::size_t
mu()
const{
137 template<
typename Archive>
138 void serialize(Archive &archive,
const unsigned int version) {
139 archive & BOOST_SERIALIZATION_NVP(m_pop);
140 archive & BOOST_SERIALIZATION_NVP(m_mu);
141 archive & BOOST_SERIALIZATION_NVP(
m_best);
142 archive & BOOST_SERIALIZATION_NVP(m_evaluator);
143 archive & BOOST_SERIALIZATION_NVP(m_notionOfSuccess);
144 archive & BOOST_SERIALIZATION_NVP(m_individualSuccessThreshold);
145 archive & BOOST_SERIALIZATION_NVP(m_initialSigma);
158 std::vector<SearchPointType>
const& startingPoints
163 m_pop.resize(2 *
mu());
165 std::size_t noVariables =
function.numberOfVariables();
167 for(std::size_t i = 0; i !=
mu(); ++i){
169 individual.
searchPoint() =
function.proposeStartingPoint();
170 m_pop[i] = individual;
174 for(std::size_t i = 0; i !=
mu(); ++i){
175 m_best[i].point = m_pop[i].searchPoint();
176 m_best[i].value = m_pop[i].unpenalizedFitness();
188 for (std::size_t i = 0; i <
mu(); i++) {
189 m_pop[
mu()+i] = m_pop[i];
190 m_pop[
mu()+i].mutate();
196 for (std::size_t i = 0; i <
mu(); i++) {
200 m_pop[
mu()+i].updateAsOffspring();
204 else if ( m_notionOfSuccess ==
IndividualBased && m_pop[
mu()+i].selected() && m_pop[
mu()+i].rank() <= m_pop[i].rank()) {
205 m_pop[
mu()+i].updateAsOffspring();
208 if(m_pop[i].selected())
209 m_pop[i].updateAsParent(offspringSuccess);
216 for (std::size_t i = 0; i <
mu(); i++) {
218 m_best[i].value = m_pop[i].unpenalizedFitness();