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!