周期性任务调度的列生成方法
1. 松弛问题求解
在解决周期性任务调度问题时,通过松弛变量 $x_{j,p}$ 的整数约束,可得到 $x_{j,p} \geq 0$,因为约束 $x_{j,p} \leq 1$ 由约束 (2) 隐含。采用列生成方法,首先考虑主问题,初始时主问题仅包含一小部分变量,即所有消息变量 $y_m$。
由于通常不清楚问题是否可行,所以添加一个特殊的 ECU(称为超级 ECU $E_S$)使问题人为可行,该超级 ECU 能够调度所有任务,并且仅允许一种模式 $p_t$ 且 $p_t = T$。为了检测原问题是否可行,给模式变量 $x_{E_S,p_t}$ 分配一个比不使用 $E_S$ 的任何最优解都大的成本,这样通过检查目标值就能轻松判断。
使用单纯形法求解主问题,并通过求解定价问题检查是否存在具有负缩减成本的非基本变量 $x_{j,p}$ 或 $z_q$。若存在这样的变量,除退化情况外,可知主问题找到的最优解并非原问题的最优解,需将该变量添加到主问题并重复此步骤;否则,该解也是原问题的最优解。
搜索变量的过程可分为几个子问题,即搜索给定 ECU $E_j$ 的变量 $x_{j,p}$ 和变量 $z_q$。对于变量 $x_{j,p}$,其在 ILP 松弛系数矩阵中的列可表示为 $(p, I_j, M(p), 0^{|M|}, 0)$,其中 $I_j$ 是 ${0, 1}^{|ECU|}$ 中的向量,在位置 $j$ 处恰好有一个 1,若 $p$ 意味着消息 $m$ 必须通过总线发送,则 $M(p)$ 中消息 $m$ 对应位置为 1。定价问题如下:
[
\begin{align }
&\min c(
超级会员免费看
订阅专栏 解锁全文
1万+

被折叠的 条评论
为什么被折叠?



