72 lines
1.2 KiB
Text
72 lines
1.2 KiB
Text
|
macro=
|
||
|
|
||
|
var:
|
||
|
actK
|
||
|
minK
|
||
|
maxK
|
||
|
gVal
|
||
|
a
|
||
|
b
|
||
|
Nval
|
||
|
maxIts
|
||
|
;
|
||
|
|
||
|
if (ntax<0)
|
||
|
quote NO HAY DATOS!;
|
||
|
proc/;
|
||
|
end
|
||
|
|
||
|
set gVal 1;
|
||
|
|
||
|
/* busca el valor de g */
|
||
|
loop 0 nchar
|
||
|
if (!isinfo[#1]) continue; end
|
||
|
if (!isact[#1]) continue; end
|
||
|
set a=maxsteps[#1];
|
||
|
set b=minsteps[#1];
|
||
|
if (('a'-'b')>'gVal')
|
||
|
set gVal 'a'-'b';
|
||
|
end
|
||
|
stop
|
||
|
|
||
|
quote valor de g = 'gVal';
|
||
|
|
||
|
set actK 10;
|
||
|
set minK 0;
|
||
|
set maxK 500; /* Asume 500 como el maximo posible valor de K */
|
||
|
|
||
|
set maxIts 0;
|
||
|
|
||
|
/* busca el mejor valor de K */
|
||
|
loop 0 1
|
||
|
quote actual valor de k = 'actK';
|
||
|
set a 1-('actK'/('actK'+1));
|
||
|
quote 'a';
|
||
|
set b ('actK'/('actK'+'gVal'-1))-('actK'/('actK'+'gVal'));
|
||
|
quote 'b';
|
||
|
set Nval 'a'/'b';
|
||
|
quote valor de N = 'Nval';
|
||
|
if (('Nval'>14.8)&&('Nval'<15.2)) endloop; end /* N esta en el rango */
|
||
|
if ('Nval'>15.2)
|
||
|
set minK 'actK';
|
||
|
else
|
||
|
set maxK 'actK';
|
||
|
end
|
||
|
set a ('maxK'-'minK')/2;
|
||
|
set actK 'minK' + 'a';
|
||
|
set maxIts ++;
|
||
|
if ('maxIts'==100) endloop; end /* salida de emergencia */
|
||
|
setloop 0;
|
||
|
stop
|
||
|
|
||
|
/* Si salio de emergencia */
|
||
|
if ('maxIts'==100)
|
||
|
quote NO SE TERMINARON LAS ITERACIONES;
|
||
|
quote mejor K encontrado: 'actK';
|
||
|
proc /;
|
||
|
end
|
||
|
|
||
|
quote Valor de K: 'actK' (N='Nval');
|
||
|
piwe='actK';
|
||
|
proc/;
|