How to use the break command in nested loops?
1 回表示 (過去 30 日間)
古いコメントを表示
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 件のコメント
AndresVar
2022 年 2 月 17 日
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.
回答 (1 件)
David Hill
2022 年 2 月 17 日
編集済み: David Hill
2022 年 2 月 17 日
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 件のコメント
Image Analyst
2022 年 2 月 17 日
What? No failsafe to prevent an infinite loop? That's not very robust.
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!