25 #ifndef SRC_OPTIMIZATION_INCLUDE_CORBO_OPTIMIZATION_HYPER_GRAPH_VERTEX_SET_H_ 26 #define SRC_OPTIMIZATION_INCLUDE_CORBO_OPTIMIZATION_HYPER_GRAPH_VERTEX_SET_H_ 30 #include <initializer_list> 48 using Ptr = std::shared_ptr<VertexSetInterface>;
58 virtual void getVertices(std::vector<VertexInterface*>& vertices) = 0;
85 virtual void clear() = 0;
96 using Ptr = std::shared_ptr<VertexSet>;
99 VertexSet(std::initializer_list<VertexInterface::Ptr> vertices);
104 void getVertices(std::vector<VertexInterface*>& vertices)
override;
109 void clear()
override;
114 _vertices.push_back(vertex);
117 void addVertices(std::initializer_list<VertexInterface::Ptr> vertices)
120 _vertices.insert(_vertices.end(), vertices.begin(), vertices.end());
123 const std::vector<VertexInterface::Ptr>&
getVertices() {
return _vertices; }
137 #endif // SRC_OPTIMIZATION_INCLUDE_CORBO_OPTIMIZATION_HYPER_GRAPH_VERTEX_SET_H_
void addVertex(VertexInterface::Ptr vertex)
Abstract class representing a set of vertices.
const std::vector< VertexInterface::Ptr > & getVertices()
std::shared_ptr< VertexInterface > Ptr
void setVertexIdx(VertexInterface &vertex, int idx)
std::vector< VertexInterface::Ptr > _vertices
Generic interface class for vertices.
void setParameterVector(const Eigen::Ref< const Eigen::VectorXd > &x)
void applyIncrementNonFixed(const Eigen::Ref< const Eigen::VectorXd > &increment)
Active vertices related methods.
int getParameterDimension()
void computeVertexIndices()
Precompute vertex indices in the hyper-graph (e.g. for the Jacobian or Hessian structure) ...
virtual void computeActiveVertices()=0
void clearConnectedEdges()
virtual std::vector< VertexInterface * > & getActiveVertices()=0
void setParameterValue(int idx, double x)
void discardBackupParametersActiveVertices(bool all=false)
double getParameterValue(int idx)
void setModified(bool modified)
virtual ~VertexSetInterface()
Virtual destructor.
void restoreBackupParametersActiveVertices(bool keep_backup)
void getParameterVector(Eigen::Ref< Eigen::VectorXd > x)
int _vertex_idx
vertex index in jacobian or hessian (determined by friend class HyperGraph).
A matrix or vector expression mapping an existing expression.
double getUpperBound(int idx)
virtual void getVertices(std::vector< VertexInterface *> &vertices)=0
void setUpperBound(int idx, double ub)
void setBounds(const Eigen::Ref< const Eigen::VectorXd > &lb, const Eigen::Ref< const Eigen::VectorXd > &ub)
void setLowerBound(int idx, double lb)
double getLowerBound(int idx)
std::shared_ptr< VertexSetInterface > Ptr
void addVertices(std::initializer_list< VertexInterface::Ptr > vertices)
std::vector< VertexInterface * > _active_vertices
std::vector< VertexInterface::Ptr > & getVerticesRef()
void backupParametersActiveVertices()
void getBounds(Eigen::Ref< Eigen::VectorXd > lb, Eigen::Ref< Eigen::VectorXd > ub)