33 #ifndef SHARK_ALGORITHMS_DIRECTSEARCH_INDICATORS_ADDITIVE_EPSILON_INDICATOR_H 34 #define SHARK_ALGORITHMS_DIRECTSEARCH_INDICATORS_ADDITIVE_EPSILON_INDICATOR_H 56 template<
typename ParetoFrontType,
typename ParetoArchive>
57 std::size_t
leastContributor( ParetoFrontType
const& front, ParetoArchive
const& )
const{
58 std::size_t leastIndex = 0;
59 double leastValue = std::numeric_limits<double>::max();
60 for( std::size_t i = 0; i != front.size(); i++ ) {
62 double result = std::numeric_limits<double>::max();
63 for(std::size_t j = 0; j != front.size(); ++j){
65 result = std::min(result,max(front[j]-front[i]));
67 if(result < leastValue){
76 template<
typename ParetoFrontType,
typename ParetoArchive>
77 std::vector<std::size_t>
leastContributors( ParetoFrontType
const& front, ParetoArchive
const& archive, std::size_t K)
const{
78 std::vector<std::size_t> indices;
79 std::vector<RealVector> points(front.begin(),front.end());
80 std::vector<std::size_t> activeIndices(points.size());
81 std::iota(activeIndices.begin(),activeIndices.end(),0);
82 for(std::size_t k=0; k != K; ++k){
85 points.erase(points.begin()+index);
86 indices.push_back(activeIndices[index]);
87 activeIndices.erase(activeIndices.begin()+index);
92 template<
class random>
93 void init(std::size_t , std::size_t , random& ){}
95 template<
typename Archive>