Matlab - Optimizar distancia recorrida

 
Vista:
sin imagen de perfil
Val: 2
Ha aumentado su posición en 55 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Optimizar distancia recorrida

Publicado por Cristian Alexis (1 intervención) el 25/11/2020 21:11:11
Cordial saludo.

Por favor sollicito de su apoyo para encontrar una manera de mejor el código de tal modo que optimice(reduzca) la distancia total.

El programa recoge los datos desde un archivo exscel que esta distribuido así:
72 filasx 2 columnas; una fila representa una ciudad y las columnas representa su coordenada:

5.346999095,-72.4059986
12.56213711,-81.69032658
5.716613585,-75.31662785
5.719998392,-72.94000289
7.089992288,-73.84999903
4.310006937,-74.80999211
2.690002461,-75.33001205
...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
%csvread para leer archivos o datos que tengan formato csv
 
dts= csvread('ciu_colo.csv')
plot(dts(:,2),dts(:,1), '.b');
 
%programa que escoja una ruta para luego calcular la distancia totak recorrida
nciu= size (dts,1)%cuantas filas y cuantas columnas
mat_dis= zeros (nciu, nciu);
 
for i= 1:nciu
    for j=1:nciu
        %sqrt((x2-x1)^2 + (y2-y1)^2)
        mat_dis(i,j)= sqrt((dts(i, 1) - dts(j,1))^2 + (dts(i,2) - dts(j,2))^2);
    end
end
 
ale_res=randperm(nciu);
 
%%%%%%% Crear o modificar el programa de tal manera que la respuesta sea
%%%%%%% mejor a la que se hizo en clase
%fijar los ejes para que sean los mismos para todos los plot
 
set(gca, 'Xlim', [-81.6903 -67.4930], 'Ylim', [ -4.2200 12.5621]);
hold on %mantiene el grafico sujeto al max y al min
distancia=0;
for i=1:nciu
if i<72
     distancia=mat_dis(ale_res(i),ale_res(i+1))+distancia;
 else
     distancia=mat_dis(ale_res(72),ale_res(1))+distancia;
end
l=sprintf('%0.2f',distancia);
plot(dts(ale_res(1:i),2), dts(ale_res(1:i),1),'b');
legend(l);
pause (0.2)
 
end
hold off


imagen_2020-11-25_151045
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 7.541
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Optimizar distancia recorrida

Publicado por JOSE JEREMIAS CABALLERO (5835 intervenciones) el 27/11/2020 13:52:05
De envío un avance y además una idea, lo puede generalizar para n filas, ejecuta el código para que vea la parte grafica
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
clear
A=[5.346999095,-72.4059986
12.56213711,-81.69032658
5.716613585,-75.31662785
5.719998392,-72.94000289
7.089992288,-73.84999903
4.310006937,-74.80999211
2.690002461,-75.33001205];
plot(A(:,1),A(:,2),'*')
[minimo,fila]=min(A(:,1));
cor(1,:)=A(fila,:);
for i=1:size(A,1)
    if i~=fila
        d(i)=norm(cor-A(i,:));
    end
end
[minimo1, fila1]=min(d);
cor(2,:)=A(fila1,:);
hold on
plot(cor(:,1), cor(:,2),'-*')
 
 cor(1,:)=A(fila1,:);
 A(fila,:)=[];
 for i=1:size(A,1)
    if i~=fila1
        d(i)=norm(cor(1,:)-A(i,:));
    end
end
 [minimo1, fila2]=min(d);
 cor(2,:)=A(fila2,:);
plot(cor(:,1), cor(:,2),'-*')
hold on

1
>> optimizar_distancia


Saludos
JOSE JEREMIAS CABALLERO
Servicios de programación matlab
Servicio de Asesoría Online en proyectos con Matlab
Asesorías online en Métodos Numéricos
jjcc94@hotmail.com


https://programacioncaballero.blogspot.com
https://www.facebook.com/programacioncaballero
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar