TNT_Script/setk.run
2023-02-26 02:42:56 +08:00

71 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/;