While no reconoce una condición
Publicado por Fernando Tacle (5 intervenciones) el 16/02/2021 15:04:33
Saludos cordiales, estoy elaborando un código, todo me funciona bien, pero en la sentencia while no reconoce una de las condiciones que se asignó, e intentado solucionar de varias maneras pero no lo consigo, su ayuda con este problema por favor. El problema radica solamente en la sentencia While, esta en la condición que no se cumple lmax>long
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
39
40
41
42
43
44
45
46
47
48
49
50
51
clear all
tic
s = [1 2 3 4 5 6 7 7 5 10 11 12 13 14 15 16 17 13]; % nodo de salida
t = [2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]; % nodo de llegada
tf=0.00437368; % horas
tr=0.53019202; % horas
tm=1.89; % horas
capalim1_18=[7.736 7.736 7.736 7.736 5.89 5.89 5.89 5.89 5.89 5.89 5.89...
5.89 5.89 5.89 5.89 5.89 5.89 5.89]; % Límite de cada línea MVA
weights = [0.83 1.83 2.28 1.60 1.28 1.11 1.7 1.08 1.69 1.42 ...
2.22 3.77 2.52 7.69 2.19 5.14 1 2.16]; % longuitud de las líneas
names = {'1' '2' '3' '4' '5' '6' '7' '8' '9' '10' '11' '12' ...
'13' '14' '15' '16' '17' '18' '19'}; % número de nodo
G = graph(s,t,weights,names);
plot(G,'EdgeLabel',G.Edges.Weight);
camroll(90);
nlin=1:numnodes(G)-1;
for a=1:length(weights)
tfm(a)= tf;
trm(a)= tr;
end
mtr=[nlin' s' t' capalim1_18' tfm' trm' weights']; %almacena la matriz de tramos
% matriz de nodos
nd=1:numnodes(G); % nodos donde se encuentran las cargas
pot=[7.736 -0.355 -0.47 -0.175 -0.335 -0.23 -0.175 -0.175 -0.565 -0.085 -0.113 ...
-0.446 -0.261 -0.826 -0.393 -0.747 -0.799 -0.555 -0.52]; % potencias por nodo
us=[387 387 387 387 387 387 386 387 387 387 387 387 387 387 387 ...
387 387 387 386]; % numeros de ussuarios por nodo
mno=[nd' pot' us']; %almacena la matriz de nodos, usuarios y cargas
% Se calcula aleatoriamente la reconexión
long=0;
ini=0;
fin=0;
n=0;
lmax=max(max(weights))
while lmax>long && ini-fin>=0 && ini-fin<=1
ini = s(randi([1 length(s)],1)); % Numero aleatorio de inicio
fin = t(randi([1 length(t)],1)); % Numero aleatorio de inicio
inf1=[ini fin];
inf1=sort(inf1);
% Se asigna la potencia máxima que transmite el nuevo tramo
if ini>5 && fin>5
carg=5.89;
else
carg=7.736;
end
d = distances(G); % Identifica las distancias entre nodos
long=d(inf1(1),inf1(2)) % Calcula la longuitud entre el nodo inicial y final de la reconfiguración
n=n+1
end
long;
Valora esta pregunta
0