Info
この質問は閉じられています。 編集または回答するには再度開いてください。
I am unable to store values for every iteration, values are overwritten in each iteration.
1 回表示 (過去 30 日間)
古いコメントを表示
for p = 4:4:population
routes = pop(rand_pair(p-3:p),:);
dists = total_dist(rand_pair(p-3:p));
[~,idx] = min(dists);
best_of_4_route = routes(idx,:);
ins_pts = sort(ceil(n*rand(1,2)));
I = ins_pts(1);
J = ins_pts(2);
for k = 1:4
tmp_pop(k,:) = best_of_4_route;
switch k
case 2
tmp_pop(k,I:J) = fliplr(tmp_pop(k,I:J));
case 3
tmp_pop(k,[I J]) = tmp_pop(k,[J I]);
case 4
tmp_pop(k,I:J) = tmp_pop(k,[I+1:J I]);
otherwise
end
display(best_of_4_route);
display(d);
% diary on
a_str = sprintf('%e\t',d);
fid = fopen('newfile.txt','w');
fprintf(fid, '%s', a_str);
fclose(fid);
new_pop(p-3:p,:) = tmp_pop;
end
I want to store value of 'best_of_4_route', 'd' for every iteration. The code I have written only overwrite.
0 件のコメント
回答 (1 件)
Mahdi
2013 年 4 月 18 日
This is only one of many ways (I would suggest pre-locating but I need more of the code) *Before *the for loop, add this line:
best_of_4_route=[];
And change your the line inside the for loop to
best_of_4_route =[best_of_4_route; routes(idx,:)];
Similar logic for d.
4 件のコメント
Mahdi
2013 年 4 月 18 日
I meant the first for loop. Try this:
best_of_4_route=[]
for p = 4:4:population
routes = pop(rand_pair(p-3:p),:);
dists = total_dist(rand_pair(p-3:p));
[~,idx] = min(dists);
best_of_4_route = [best_of_4_route; routes(idx,:)];
ins_pts = sort(ceil(n*rand(1,2)));
I = ins_pts(1);
J = ins_pts(2);
for k = 1:4
tmp_pop(k,:) = best_of_4_route;
switch k
case 2
tmp_pop(k,I:J) = fliplr(tmp_pop(k,I:J));
case 3
tmp_pop(k,[I J]) = tmp_pop(k,[J I]);
case 4
tmp_pop(k,I:J) = tmp_pop(k,[I+1:J I]);
otherwise
end
display(best_of_4_route);
display(d);
% diary on
a_str = sprintf('%e\t',d);
fid = fopen('newfile.txt','w');
fprintf(fid, '%s', a_str);
fclose(fid);
new_pop(p-3:p,:) = tmp_pop;
end
end
この質問は閉じられています。
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!