I think it is expected that after a random perturbation you get an infeasible solution. If that happens, I see two options:
-
Go back to the current local minimum and try another random perturbation. Repeat this until you hit some limit or find another feasible solution.
-
Apply some sort of repair algorithm to repair the infeasibility. If that does not succeed within reasonable time then either stop or do 1.
So in some cases you just will have to give up because you cannot find another feasible solution within reasonable time. At that point local search has to stop with the current best solution.
If restoring feasibility is hard for your problem then maybe you can try tabu search to escape the local minimum? Tabu search does not make big jumps in the search space like random perturbation but it maintains feasibility.
#CPLEXOptimizers#DecisionOptimization