diff --git a/scheduling/scheduling.typ b/scheduling/scheduling.typ new file mode 100644 index 0000000..76a9ce7 --- /dev/null +++ b/scheduling/scheduling.typ @@ -0,0 +1,36 @@ +#import "@preview/acrostiche:0.3.2": * + +#init-acronyms(( + "EBS": ("Equation-Based Scheduling",), +)) + +#align(center)[#text(size:2em)[Equation-Based Scheduling]] + + +The principle of #acr("EBS") is to use a function to determine which task is allowed to communicate at anypoint in time. +This principle provide a mathematically proovable way for each task to determine when to communicate. + +*Problem Statement:* +#grid( + columns: (1fr,15fr,1fr), + [],[ + Given $n$ tasks $t_i, i in [0,n-1]$, + and an array of $m$ time periods $A = [x_0, dots.h.c, x_(m-1)]$ + where each element $x_i in [t_0,dots.h.c, t_(n-1)]$ is the task allowed to communicate at time $tau_i$, + provide a set of $n$ scheduling functions $S=(s_0,dots.h.c,s_(n-1))$ such that, + for each time period $tau_i$, only $s_i(tau_i)$ associated with the task $t_i$ defined at by $A[i]$ + validates a pre-defined _enable_ condition. + ], + [] +) + +The _enable_ condition is any condition defined on the value of a scheduling function evaluated at a regular time. +For example, a simple _enable_ condition can be the positivity of the value. +In this case, the definition of the scheduling functions set is + +$ +S = cases( + &s_i(tau_i) > 0 "if" A[tau_i] = t_i, + &s_(j eq.not i) < 0 "else", +) +$