How to use the break command in nested loops?

Hi, I have a problem using the break command in the following code. When I use the break I exit the loop j, but I want to restart the loop i after the condition. Any idea how can I do in this case? Thanks inm advance.
for i = 1:length(initial_solution.position) - 1
itabu = i;
for j = i + 1:length(initial_solution.position)
jtabu = j;
t = CHECK_MOVE(itabu, jtabu, TL);
if (t == 1) % 0 or 1 / True or False / Tabu or not Tabu
break
end
neighbor.position = SWAP(initial_solution.position, itabu, jtabu);
% Evaluate Objective Function
neighbor = EVALUATE_OF(neighbor);
% Update best neighbor
if neighbor.OF >= best_neighbor.OF
best_neighbor = neighbor;
end
end
end

1 commentaire

AndresVar
AndresVar le 17 Fév 2022
i think you need another outter while loop to repat the whole thing. And a flag to tell it to stop when all the i and js were done.

Connectez-vous pour commenter.

Réponses (1)

David Hill
David Hill le 17 Fév 2022
Modifié(e) : David Hill le 17 Fév 2022
while 1
flag=0;
for i = 1:length(initial_solution.position) - 1
itabu = i;
for j = i + 1:length(initial_solution.position)
jtabu = j;
t = CHECK_MOVE(itabu, jtabu, TL);
if (t == 1) % 0 or 1 / True or False / Tabu or not Tabu
flag=1;
break
end
neighbor.position = SWAP(initial_solution.position, itabu, jtabu);
% Evaluate Objective Function
neighbor = EVALUATE_OF(neighbor);
% Update best neighbor
if neighbor.OF >= best_neighbor.OF
best_neighbor = neighbor;
end
end
if flag
break;
end
end
if ~flag
break;
end
end

1 commentaire

Image Analyst
Image Analyst le 17 Fév 2022
What? No failsafe to prevent an infinite loop? That's not very robust.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange

Produits

Version

R2019a

Question posée :

Yro
le 17 Fév 2022

Commenté :

le 17 Fév 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by