def calc_schedule_delay(self, tick): early_time = self.pref_timing - Time.tick2min(tick) late_time = Time.tick2min(tick) - self.pref_timing if early_time > self.penalty_buffer: return early_time * self.early_penalty if late_time > self.penalty_buffer: return late_time * self.late_penalty return 0.0
def discrete_util(self, tick, elapsed=0.0): lower = Time.tick2min(tick) - Time.TIMEUNIT / 2.0 upper = lower + Time.TIMEUNIT if tick == 0: util = fp.quad(self._marginal_util, [0.0, Time.TIMEUNIT/2.0]) + \ fp.quad(self._marginal_util, [Time.TIMELENG-Time.TIMEUNIT/2.0, Time.TIMELENG]) else: util = fp.quad(self._marginal_util, [lower, upper]) return util
def discrete_util(self, tick, elapsed=0.0): lower = Time.tick2min(tick) - Time.TIMEUNIT/2.0 upper = lower + Time.TIMEUNIT if tick == 0: util = fp.quad(self._marginal_util, [0.0, Time.TIMEUNIT/2.0]) + \ fp.quad(self._marginal_util, [Time.TIMELENG-Time.TIMEUNIT/2.0, Time.TIMELENG]) else: util = fp.quad(self._marginal_util, [lower, upper]) return util