How to find the corresponding vector?

4 vues (au cours des 30 derniers jours)
vinicius lanziotti
vinicius lanziotti le 8 Déc 2017
Modifié(e) : James Tursa le 8 Déc 2017
x = [1 2 3 4 5];
d = [0 10 20 30 40
10 0 50 60 70
20 50 0 80 90
30 60 80 0 100
40 70 90 100 0];
Dist = zeros(1,n);
for k=1:n
xp = randperm(numel(x), 2);
x(xp) = x(fliplr(xp)) % vector x permuted in two positions
s = sub2ind(size(d),x(1:end-1),x(2:end ));
Dist(k) = sum(d(s));
Distance = Dist(1,k) % travaled distance by elements of the vector x
end
Lowest_Distance = min(Dist)
I need to find the vector x corresponding to Lowest_Distance.
For exemple:
>>
Lowest_Distance = 170
x=
1 2 3 5 4

Réponse acceptée

James Tursa
James Tursa le 8 Déc 2017
Modifié(e) : James Tursa le 8 Déc 2017
Dist = zeros(1,n);
Distx = zeros(n,numel(x)); % <-- ADDED, allocate for saved x vectors
for k=1:n
xp = randperm(numel(x), 2);
x(xp) = x(fliplr(xp)) % vector x permuted in two positions
s = sub2ind(size(d),x(1:end-1),x(2:end ));
Dist(k) = sum(d(s));
Distx(k,:) = x; % <-- ADDED, save the x vector for this iteration
Distance = Dist(1,k) % travaled distance by elements of the vector x
end
[Lowest_Distance,ix] = min(Dist); % <-- MODIFIED, get the index of the min
Lowest_Distancex = Distx(ix,:); % <-- ADDED, pick off x vector corresponding to the min

Plus de réponses (0)

Tags

Aucun tag saisi pour le moment.

Community Treasure Hunt

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

Start Hunting!

Translated by