[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-08-06 UTC."],[[["\u003cp\u003eThe RelocateExpensiveChain operator shifts the most costly subchains within a path to a new location, optimizing route efficiency.\u003c/p\u003e\n"],["\u003cp\u003eIt identifies these expensive subchains by virtually cutting the two most expensive arcs on the path.\u003c/p\u003e\n"],["\u003cp\u003eIt uses a cost callback function to determine the cost of arcs and subchains.\u003c/p\u003e\n"],["\u003cp\u003eThis operator is useful in route optimization scenarios for finding better solutions by relocating costly segments.\u003c/p\u003e\n"]]],["The `RelocateExpensiveChain` class operator relocates the most expensive subchains within a path. It identifies the most expensive chain by cutting the two costliest arcs on the path. Key methods include `MakeNeighbor` and `MakeOneNeighbor`, which likely facilitate the relocation process. The `RelocateExpensiveChain` method takes arguments including the path variables, secondary variables, a function defining an empty path class, the number of arcs to consider, and a function defining arc costs for the path start. It also provides a `DebugString` method for debugging.\n"],null,["# RelocateExpensiveChain\n\nC++ Reference: class RelocateExpensiveChain\n===========================================\n\n\nNote: This documentation is automatically generated.\nRelocateExpensiveChain \n\nOperator which relocates the most expensive subchains (given a cost callback) in a path to a different position. \n\nThe most expensive chain on a path is the one resulting from cutting the 2 most expensive arcs on this path.\n\n| Method ||\n|----------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [`DebugString`](https://github.com/google/or-tools/blob/v9.4/ortools/constraint_solver/routing_neighborhoods.h#L581) | Return type: `std::string ` \u003cbr /\u003e |\n| [`MakeNeighbor`](https://github.com/google/or-tools/blob/v9.4/ortools/constraint_solver/routing_neighborhoods.h#L578) | Return type: `bool ` \u003cbr /\u003e |\n| [`MakeOneNeighbor`](https://github.com/google/or-tools/blob/v9.4/ortools/constraint_solver/routing_neighborhoods.h#L579) | Return type: `bool ` \u003cbr /\u003e |\n| [`RelocateExpensiveChain`](https://github.com/google/or-tools/blob/v9.4/ortools/constraint_solver/routing_neighborhoods.h#L571) | \u003cbr /\u003e Arguments: `const std::vector\u003cIntVar*\u003e& vars, const std::vector\u003cIntVar*\u003e& secondary_vars, std::function\u003cint(int64_t)\u003e start_empty_path_class, int num_arcs_to_consider, std::function\u003cint64_t(int64_t, int64_t, int64_t)\u003e arc_cost_for_path_start` \u003cbr /\u003e |\n| [`~RelocateExpensiveChain`](https://github.com/google/or-tools/blob/v9.4/ortools/constraint_solver/routing_neighborhoods.h#L577) | \u003cbr /\u003e |"]]