Loading...
Searching...
No Matches
HillClimbing.h
1/*********************************************************************
2* Software License Agreement (BSD License)
3*
4* Copyright (c) 2008, Willow Garage, Inc.
5* All rights reserved.
6*
7* Redistribution and use in source and binary forms, with or without
8* modification, are permitted provided that the following conditions
9* are met:
10*
11* * Redistributions of source code must retain the above copyright
12* notice, this list of conditions and the following disclaimer.
13* * Redistributions in binary form must reproduce the above
14* copyright notice, this list of conditions and the following
15* disclaimer in the documentation and/or other materials provided
16* with the distribution.
17* * Neither the name of the Willow Garage nor the names of its
18* contributors may be used to endorse or promote products derived
19* from this software without specific prior written permission.
20*
21* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32* POSSIBILITY OF SUCH DAMAGE.
33*********************************************************************/
34
35/* Author: Ioan Sucan */
36
37#ifndef OMPL_GEOMETRIC_HILL_CLIMBING_
38#define OMPL_GEOMETRIC_HILL_CLIMBING_
39
40#include <utility>
41
42#include "ompl/base/SpaceInformation.h"
43#include "ompl/base/goals/GoalRegion.h"
44
45namespace ompl
46{
47 namespace geometric
48 {
61 {
62 public:
64 HillClimbing(base::SpaceInformationPtr si) : si_(std::move(si)), maxImproveSteps_(2), checkValidity_(true)
65 {
66 }
67
68 ~HillClimbing() = default;
69
74 bool tryToImprove(const base::GoalRegion &goal, base::State *state, double nearDistance,
75 double *betterGoalDistance = nullptr) const;
76
78 void setMaxImproveSteps(unsigned int steps)
79 {
80 maxImproveSteps_ = steps;
81 }
82
84 unsigned int getMaxImproveSteps() const
85 {
86 return maxImproveSteps_;
87 }
88
90 void setValidityCheck(bool valid)
91 {
92 checkValidity_ = valid;
93 }
94
96 bool getValidityCheck() const
97 {
98 return checkValidity_;
99 }
100
101 private:
102 bool valid(const base::State *state) const
103 {
104 return checkValidity_ ? si_->isValid(state) : true;
105 }
106
107 base::SpaceInformationPtr si_;
108 unsigned int maxImproveSteps_;
109 bool checkValidity_;
110 };
111 }
112}
113
114#endif
Definition of a goal region.
Definition: GoalRegion.h:48
Definition of an abstract state.
Definition: State.h:50
Hill Climbing search.
Definition: HillClimbing.h:61
bool getValidityCheck() const
Get the state validity flag; if this is false, states are not checked for validity.
Definition: HillClimbing.h:96
HillClimbing(base::SpaceInformationPtr si)
Constructor.
Definition: HillClimbing.h:64
void setValidityCheck(bool valid)
Set the state validity flag; if this is false, states are not checked for validity.
Definition: HillClimbing.h:90
unsigned int getMaxImproveSteps() const
Get the number of steps to perform.
Definition: HillClimbing.h:84
void setMaxImproveSteps(unsigned int steps)
Set the number of steps to perform.
Definition: HillClimbing.h:78
bool tryToImprove(const base::GoalRegion &goal, base::State *state, double nearDistance, double *betterGoalDistance=nullptr) const
Try to improve a state (reduce distance to goal). The updates are performed by sampling near the stat...
Main namespace. Contains everything in this library.
STL namespace.