# C++ Reference: class PathOperator

This documentation is automatically generated.

Base class of the local search operators dedicated to path modifications (a path is a set of nodes linked together by arcs). This family of neighborhoods supposes they are handling next variables representing the arcs (var[i] represents the node immediately after i on a path). Several services are provided:- arc manipulators (SetNext(), ReverseChain(), MoveChain())

- path inspectors (Next(), Prev(), IsPathEnd())

- path iterators: operators need a given number of nodes to define a neighbor; this class provides the iteration on a given number of (base) nodes which can be used to define a neighbor (through the BaseNode method)

Subclasses only need to override MakeNeighbor to create neighbors using the services above (no direct manipulation of assignments).

Method | |
---|---|

`MakeNeighbor` | Return type: |

`Next` | Return type: Arguments: Returns the node after node in the current delta. |

`number_of_nexts` | Return type: Number of next variables. |

`Path` | Return type: Arguments: Returns the index of the path to which node belongs in the current delta. Only returns a valid value if path variables are taken into account. |

`PathOperator` | Arguments: Builds an instance of PathOperator from next and path variables. 'number_of_base_nodes' is the number of nodes needed to define a neighbor. 'start_empty_path_class' is a callback returning an index such that if c1 = start_empty_path_class(StartNode(p1)), c2 = start_empty_path_class(StartNode(p2)), p1 and p2 are path indices, then if c1 == c2, p1 and p2 are equivalent if they are empty. This is used to remove neighborhood symmetries on equivalent empty paths; for instance if a node cannot be moved to an empty path, then all moves moving the same node to equivalent empty paths will be skipped. 'start_empty_path_class' can be nullptr in which case no symmetries will be removed. |

`~PathOperator` | |

`Prev` | Return type: Arguments: Returns the node before node in the current delta. |

`Reset` | Return type: |

`SkipUnchanged` | Return type: Arguments: TODO(user): Make the following methods protected. |