Info

Cette question est clôturée. Rouvrir pour modifier ou répondre.

I am unable to store values for every iteration, values are overwritten in each iteration.

3 vues (au cours des 30 derniers jours)
Sanuj Shukla
Sanuj Shukla le 18 Avr 2013
Clôturé : MATLAB Answer Bot le 20 Août 2021
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.

Réponses (1)

Mahdi
Mahdi le 18 Avr 2013
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 commentaires
Mahdi
Mahdi le 18 Avr 2013
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
Sanuj Shukla
Sanuj Shukla le 19 Avr 2013
Its not working.. only top 6 nodes are stored of each route, and overwritten again in 'newfile.txt'.
best = [best; routes(idx,:)];
save('d')
a_str = sprintf('%d\t',best);
fid = fopen('newfile.txt','w');
fprintf(fid, '%s', a_str);
fclose(fid);
However 50x77 size matrix stores 77 routes when i save workspace by using save('d'). But i need to use it in txt file.

Cette question est clôturée.

Community Treasure Hunt

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

Start Hunting!

Translated by