void CMA_ES_Population::updateIndividuals() { arz = MatrixXf(lambda_, n); arx = MatrixXf(lambda_, n); arx.row(0) = xmean; arz.row(0) = 0.f * xmean; for(int i = 1; i < arz.rows(); i++) { for(int j = 0; j < arz.cols(); j++) { std::random_device rd{}; std::mt19937 gen{ rd() }; std::normal_distribution<> d{ 0, 1 }; arz(i, j) = static_cast<float>(d(gen)); } arx.row(i) = xmean + sigma * (B* D* arz.block(i, 0, 1, n).transpose()).col(0); ASSERT(!std::isnan(arx.row(i).sum())); } // clear fitness and copy individuals for(unsigned i = 0; i < total; i++) fitness[i].clear(); individuals = arx; }
void drawLabels(){ TLatex l; l.SetTextSize(0.04); l.DrawLatex(500,50,"-z"); l.DrawLatex(500,1430,"+z"); l.DrawLatex(900,330,"TIB L1"); l.DrawLatex(900,1000,"TIB L2"); l.DrawLatex(1300,330,"TIB L3"); l.DrawLatex(1300,1000,"TIB L4"); l.DrawLatex(1700,330,"TOB L1"); l.DrawLatex(1700,1000,"TOB L2"); l.DrawLatex(2100,330,"TOB L3"); l.DrawLatex(2100,1000,"TOB L4"); l.DrawLatex(2500,330,"TOB L5"); l.DrawLatex(2500,1000,"TOB L6"); TArrow arx(2900,1190,2900,1350,0.01,"|>"); l.DrawLatex(2915,1350,"x"); TArrow ary(2900,1190,2790,1190,0.01,"|>"); l.DrawLatex(2790,1210,"y"); TArrow arz(2790,373,2790,672,0.01,"|>"); l.DrawLatex(2820,667,"z"); TArrow arphi(2790,511,2447,511,0.01,"|>"); l.DrawLatex(2433,520,"#Phi"); arx.SetLineWidth(3); ary.SetLineWidth(3); arz.SetLineWidth(3); arphi.SetLineWidth(3); arx.Draw(); ary.Draw(); arz.Draw(); arphi.Draw(); //FIXME : when tkmaps with taxis in color palette, introduce this TGaxis* axis = new TGaxis(3060,hmin,3060,hmax,0,100,510,"+L"); axis->SetLabelSize(0.02); axis->Draw(); canvas->Update(); }