inline T Histogram<T>::getPeek() const {
	std::vector<size_t> numberSamplesPerBin;
	std::vector<T> lowerBounds = getLowerBounds();
	std::vector<T> upperBounds = getUpperBounds();

	if(lowerBounds.size() != upperBounds.size()) {ROS_ERROR_STREAM("NOT SAME SIZE" << "lower.size: " << lowerBounds.size() << " upper.size: " << upperBounds.size()); return 0;}

	size_t max_at_index = 0;
	for(size_t i = 0; i < numberBins; ++i) {
		numberSamplesPerBin.push_back( getNumberSamplesBetween(lowerBounds[i], upperBounds[i]) );
		if(i > 0 && numberSamplesPerBin[i - 1] < numberSamplesPerBin[i]) max_at_index = i;
	}

	size_t distanceToMiddle = numberSamplesPerBin[max_at_index] / 2;
	typename std::multiset<T>::const_iterator it = values.lower_bound(lowerBounds[max_at_index]);
	for(size_t j = 0; j < distanceToMiddle; ++j) ++it;

	return *it;
}
Beispiel #2
0
 SimulatedAnnealing::SimulatedAnnealing(
     const std::shared_ptr<OptimisationProblem> optimisationProblem)
     : TrajectoryBasedOptimisationAlgorithm(optimisationProblem) {
   setMaximalStepSize((getUpperBounds() - getLowerBounds()) * 0.1);
 }