2 votos

¿Puedes resolver un valor dentro de una función suelo?

Estoy escribiendo un software que realiza actividades utilizando un retardo exponencial, por ejemplo, realiza una acción en t = 1, 2, 4, 8, 16, etc., suponiendo una base de 2. Quiero que la base se ajuste dinámicamente en función de los recursos disponibles para que las actividades se produzcan con mayor o menor frecuencia, según sea necesario.

He llegado a la siguiente ecuación:

$$a = \sum_{i=1}^n\lfloor\log_b{p+t_i}\rfloor - \lfloor\log_b{t_i}\rfloor $$

$a$ son los recursos disponibles, $p$ es el período de utilización de esos recursos y $t_i$ es el tiempo transcurrido desde la última acción sobre $i$ . Esencialmente expresa cuántas acciones se llevarán a cabo en $i$ en el periodo $p$ y, a continuación, suma todas las acciones de todos los elementos.

¿Cómo puedo resolver la ecuación anterior para $b$ ?

1voto

lowglider Puntos 562

En general, no tendrás una solución única, ni siquiera un intervalo único de soluciones. Por poner un ejemplo sencillo, consideremos el caso en que $a = 1$ y $p$ es muy pequeño; entonces (suponiendo por simplicidad que no ocurren dos acciones dentro de ningún período de longitud $p$ ) la ecuación se cumple siempre que $0 \le b^k-t_i < p$ es decir, cuando $\sqrt[k]{t_i} \le b < \sqrt[k]{t_i+p}$ para algunos $k$ y $i$ .

Sin embargo, yo sugeriría un enfoque alternativo. Si he entendido bien tu intención, quieres ajustar la tasa de backoff exponencial para que se utilicen todos los recursos disponibles. ¿Por qué no, en lugar de contar el tiempo en segundos o en alguna otra unidad arbitraria, contarlo en recursos disponibles?

Es decir, elegir algunos fijos $b$ (por ejemplo $b = 2$ ). Cuando la tarea $i$ comienza en "tiempo" $t$ asígnele una hora de inicio de $t_i = t$ y un retraso de $\delta_i = 1$ y ponerlo en cola. Cada vez que un recurso está disponible, se incrementa $t$ uno a uno, elija la tarea con menor $t_i + \delta_i$ de la cola y ejecutarlo. Si tiene éxito, elimínalo de la cola; si no, multiplica su $\delta_i$ por $b$ y ponerlo de nuevo en la cola.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X