I am unable to store values for every iteration, values are overwritten in each iteration.
Infos
Cette question est clôturée. Rouvrir pour modifier ou répondre.
Afficher commentaires plus anciens
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
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
le 18 Avr 2013
This stores all of the data in a matrix where the row corresponds to the loop.
Sanuj Shukla
le 18 Avr 2013
Modifié(e) : Sanuj Shukla
le 18 Avr 2013
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
le 19 Avr 2013
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!