pyepo.model.grb.tsp =================== .. py:module:: pyepo.model.grb.tsp .. autoapi-nested-parse:: Traveling salesman problem Classes ------- .. autoapisummary:: pyepo.model.grb.tsp.tspABModel pyepo.model.grb.tsp.tspGGModel pyepo.model.grb.tsp.tspGGModelRel pyepo.model.grb.tsp.tspDFJModel pyepo.model.grb.tsp.tspMTZModel pyepo.model.grb.tsp.tspMTZModelRel Module Contents --------------- .. py:class:: tspABModel(num_nodes: int, *args, **kwargs) Bases: :py:obj:`pyepo.model.bases.tspABBase`, :py:obj:`pyepo.model.grb.grbmodel.optGrbModel` Gurobi-backed TSP abstract base. Provides paired-variable ``setObj`` / ``solve`` / ``_addExtraConstr`` shared by GG and MTZ. DFJ overrides those. .. py:method:: setObj(c: numpy.ndarray | torch.Tensor | list) -> None A method to set the objective function :param c: cost vector .. py:method:: solve() -> tuple[numpy.ndarray, float] A method to solve model .. py:class:: tspGGModel(num_nodes: int, *args, **kwargs) Bases: :py:obj:`tspABModel` Gavish-Graves (GG) formulation. .. py:method:: relax() -> tspGGModelRel A method to get linear relaxation model .. py:class:: tspGGModelRel(num_nodes: int, *args, **kwargs) Bases: :py:obj:`tspGGModel` LP relaxation of the GG formulation. .. py:method:: solve() -> tuple[numpy.ndarray, float] A method to solve model — returns fractional solution. .. py:method:: relax() -> NoReturn A forbidden method to relax MIP model .. py:method:: getTour(sol: numpy.ndarray | torch.Tensor | list) -> list[int] A forbidden method to get a tour from solution .. py:class:: tspDFJModel(num_nodes: int, recycle_cuts: bool = False, *args, **kwargs) Bases: :py:obj:`tspABModel` Danzig-Fulkerson-Johnson (DFJ) formulation with lazy subtour elimination. Uses one undirected Var per edge (``x[j,i]`` aliases ``x[i,j]``), so the paired-vars ``setObj`` / ``solve`` / ``_addExtraConstr`` inherited from ``tspABModel`` are overridden here. With ``recycle_cuts`` the subtour cuts found in one solve join the model's lazy pool, so later solves on new cost vectors skip rediscovering them. .. py:attribute:: recycle_cuts :value: False .. py:method:: setObj(c: numpy.ndarray | torch.Tensor | list) -> None A method to set the objective function :param c: cost vector .. py:method:: solve() -> tuple[numpy.ndarray, float] A method to solve model .. py:class:: tspMTZModel(num_nodes: int, *args, **kwargs) Bases: :py:obj:`tspABModel` Miller-Tucker-Zemlin (MTZ) formulation. .. py:method:: relax() -> tspMTZModelRel A method to get linear relaxation model .. py:class:: tspMTZModelRel(num_nodes: int, *args, **kwargs) Bases: :py:obj:`tspMTZModel` LP relaxation of the MTZ formulation. .. py:method:: solve() -> tuple[numpy.ndarray, float] A method to solve model — returns fractional solution. .. py:method:: relax() -> NoReturn A forbidden method to relax MIP model .. py:method:: getTour(sol: numpy.ndarray | torch.Tensor | list) -> list[int] A forbidden method to get a tour from solution