1069 lines
90 KiB
TeX
1069 lines
90 KiB
TeX
% !Mode:: "TeX:UTF-8"
|
||
|
||
\chapter{表面组装过程中贴片头的任务分配优化算法}[Optimization algorithm for head task assignment algorithm in surface assembly process]
|
||
\label{ch3:chapter}
|
||
|
||
\section{引言}[Introduction]
|
||
|
||
% 研究内容和研究意义
|
||
贴片头是表面组装过程中拾取和贴装元件的核心部件,其任务分配主要研究的是贴片头拾取的元件类型、槽位以及安装的吸嘴类型的决策优化,是表面组装过程优化的重要子问题。
|
||
绝大多数与组装效率相关的关键因素以及组装过程的约束条件均和贴片头任务分配的结果直接相关,制约了解决方案的有效性和可行性。
|
||
% 对于拾取过程,供料器的安插槽位是决定其能达到的最高效率的主要因素之一,
|
||
贴片头拾取元件类型和元件的供料器安装槽位之间存在关联性,
|
||
% 贴片头任务分配对悬臂移动路径的影响主要体现元件拾取和吸嘴更换过程中。
|
||
其任务分配的结果决定了贴装过程路径规划可行域的范围。
|
||
将贴片头任务分配问题作为分解后的首个子问题,不仅可以降低问题求解的难度,还可以通过优化主要性能指标提升整体解的质量,对表面组装过程效率的提升有着重要意义。
|
||
|
||
% 问题研究的方法论
|
||
基于模型的优化方法兼具搜索全面性和结果可靠性,将其应用于问题的拆分环节是解决复杂优化问题的常用策略,结合数学规划和启发式算法优势的混合优化方法可快速求解问题并获得高质量的解\cite{duan_applications_2023}。
|
||
% 前述章节中已经讨论了贴片头任务分配的整数线性规划模型。然而,
|
||
直接建模的求解方式在数据的适用范围上有较大的局限性,在实际应用中,相关研究常根据问题的结构特征采取近似化的建模策略。
|
||
在模型改进方面,启发式的模型缩减和增强式的剪枝策略有助于提升模型的求解效率\cite{mirhosseini_fast_2023},通过寻找一系列可替代的最优解,评估其具体执行操作所带来的收益,有助于进一步提升解的质量\cite{kakkad_iterative_2024}。
|
||
本章基于第2章的贴片头任务分配模型,提出了基于周期任务集成的整数线性规划模型,以获得更大规模问题的、关键效率指标拟合的近似最优解。
|
||
|
||
数学规划法的求解效率受问题规模的限制,而构造启发式算法作为基于直观或经验设计的搜索算法,具有高效解决问题的能力。在实际应用中,启发式算法难点在于设计高效的搜索规则,经过精心设计的规则可获得高质量的解。
|
||
贴片头任务分配问题的约束条件和决策变量较多,对大规模问题的解进行搜索在运算量上将带来维度灾难,因此需要从中提取主要子问题进行优化。层次分析法按目标优先级及重要性拆解问题,常被运用于解决复杂优化问题。
|
||
为了优化大规模数据的组装过程,本章进一步提出了基于分层启发式前瞻扫描的贴片头任务分配算法,在搜索过程中前瞻性地调整分配结果,通过效率相关的影响因素综合评估解的质量,保证了搜索过程的高效性、解的高质量和方法的可拓展性。
|
||
|
||
\section{问题分析}[Problem analysis]
|
||
|
||
贴片头任务分配是与表面组装拾取过程密切相关的问题,
|
||
通过模拟并列式贴片头的拾取过程可得到任务分配的可行解。
|
||
最直接的问题求解方式是贪心地从基座上不同槽位同步拾取元件,以减少拾取的总次数,相关研究在文献\inlinecite{sun_component_2005}中已有过讨论。此类求解方式能够适应多样化的供料器槽位布局,同时也存在着局限性,主要有:
|
||
\begin{enumerate}
|
||
\item[1)] \emph{供料器分配布局研究不充分}:当前针对供料器配置的研究相对较少,而供料器安装槽位决定了能达成同步拾取的贴片头数的上限,供料器分配与贴片头拾取问题在结构上具有相似性,若将两者完全独立讨论,将会降低解决方案的整体质量。
|
||
\item[2)] \emph{效率影响因素考虑不全面}:在解决多类型元件组装过程优化问题时,吸嘴更换是拾取过程中的必要环节。然而,频繁且耗时的吸嘴更换虽然能使更多的贴片头同步拾取,但无法带来效率上的提升;在供料器安装槽位和贴片头拾取槽位的决策中,元件的吸嘴类型均应是重要的参考因素。
|
||
\item[3)] \emph{贪心搜索策略设计短视性}:采用贪心算法进行搜索时,往往缺乏对整体布局位置的充分考量,对单一槽位可能有多种组合方式构成同步拾取的研究不足,在搜索过程中存在短视性,容易陷入局部最优解。
|
||
\end{enumerate}
|
||
|
||
|
||
对于表面组装的拾取过程,贴片头通常倾向于从供料器槽中重复执行能使同步拾取贴片头数最大化的拾取动作。
|
||
本文将多个贴片头同步拾取元件记为一次拾取,最大化同步拾取的贴片头数是并列式贴片机提升组装效率的重要手段。
|
||
供料器分配过程与贴片头拾取过程是具有一定的相似性的。
|
||
供料器通常安插在若干个连续的贴片头对齐槽位以实现同步拾取,且其安装槽位接近贴装区域以减少贴片头的移动路径长度。
|
||
此外,由于元件尺寸各异,不同类型的供料器所占据的槽位数可能也各不相同,安插槽位之间的位置干涉也是供料器槽位分配中需要避免的问题。
|
||
同一个拾贴周期中,贴片头从不构成同步拾取的槽位中取料可减少拾贴周期数,但此过程可能会带来较长的拾取移动距离。在贴片头拾取元件时,既要衡量贪心地最大化当前同步拾取所能带来的效率提升,又要评估从当前槽位拾取元件后,其对后续拾取过程以及整体组装效率的影响。
|
||
|
||
\section{基于周期任务集成模型的贴片头任务分配算法}[Head task assignment algorithm based on the cyclic task integration model]
|
||
|
||
直接构建的贴片头任务分配模型面临求解效率低的问题,本节将讨论提升模型求解效率的方法。在元件拾取过程中,供料器内装载有同类元件,且允许贴片头多次重复地从中拾取元件。这表明在构成同步拾取任务的供料器组合中,各供料器对应的贴装点数量较多时,贴片头可通过重复相同拾取动作来提升拾取效率。受这一过程的启发,本节将连续且执行相同任务的周期组视为决策的基本单元,通过重组和整合拾贴周期,提出了一种基于周期任务集成模型(Cyclic Task Integration Model,CTIM)的算法,旨在解决贴片头任务分配问题。图\ref{ch3:figure:ctim-algorithm-flowchart}展示了本章提出模型的构建、增强、求解和输出环节中运用的主要策略。
|
||
|
||
\begin{figure}[htbp]
|
||
\centering
|
||
\includegraphics[scale=0.85]{chapter3/ctim-algorithm-flowchart.eps}
|
||
\bicaption[ch3:figure:ctim-algorithm-flowchart]{}{周期任务集成模型的算法框图}{Fig.$\!$}{\centering Algorithm block diagram of the cyclic task integration model}
|
||
\end{figure}
|
||
|
||
\subsection{周期任务集成模型}[Cyclic task integration model]
|
||
|
||
在既有的贴片头任务分配模型基础上,CTIM将具有一致拾贴任务的连续拾贴周期作为周期组进行决策优化。
|
||
原模型中贴片头的拾取移动路径项$d_{km}$对整体组装效率影响较小,为了降低模型复杂度,本章在构建模型的过程中不计与之相关的优化目标和约束条件。
|
||
CTIM可被视为贴片头任务分配的增强模型,其周期组内拾取的元件类型和槽位、安装的吸嘴类型均与原有模型的优化结果保持一致。其与原模型的主要区别在于,拾贴周期索引$k$及其集合$K$在CTIM中被视为周期组索引及其集合。
|
||
原模型中用于决定拾贴周期$k$是否被分配贴装点的决策变量$g_{km}$,在CTIM中被调整为记录任务集中拾贴周期数的决策变量为$b_{km}$。同时,与拾取次数相关的项$e_{skm}$则被调整为$b_{km} \cdot e_{skm} $,表示贴片机$m$在周期组$k$中贴片头拾取元件时,$s$为等效槽位的总拾贴周期数。
|
||
同样的,贴片机索引集$M=\left\{ 1 \right\}$。
|
||
CTIM的优化目标如式\eqref{agg_model_obj}所示,该目标由拾贴周期数、吸嘴更换次数以及元件拾取次数三项构成。
|
||
\begin{equation}
|
||
\begin{aligned}
|
||
\min T^{\rm{CY}} \cdot \sum_{k \in K}{b}_{k1} + T^{\rm{NZ}} \cdot \sum_{k \in K} \sum_{h \in H} n_{kh1} + T^{\rm{PU}} \cdot \sum_{s \in S} \sum_{k \in K} b_{k1} \cdot e_{sk1}
|
||
\end{aligned}
|
||
\label{agg_model_obj}
|
||
\end{equation}
|
||
|
||
优化目标\eqref{agg_model_obj}中的非线性项为0-1变量和非负整数变量之积,可以用引入整数中间变量$\lambda_{sk} = b_{k1} \cdot e_{sk1}$ 来代替,式\eqref{linear_objterm_equation}用大M法对此项做了线性化处理。
|
||
\begin{equation}
|
||
\left\{
|
||
\begin{array}{lr}
|
||
\lambda_{sk} \leq N \cdot e_{sk1}, & \\
|
||
\lambda_{sk} \leq b_{k1}, & \forall s \in S, k \in K\\
|
||
\lambda_{sk} \geq b_{k1} - N \cdot \left( 1 - e_{sk1} \right), &
|
||
\end{array}
|
||
\label{linear_objterm_equation}
|
||
\right.
|
||
\end{equation}
|
||
|
||
贴片头任务分配模型中和拾贴周期决策变量$g_{km}$相关的变量均需做出调整。其中,元件分配和拾贴周期数规划的一致性约束由式\eqref{cycle_constr}调整为式\eqref{agg_relation_constr}。
|
||
\begin{equation}
|
||
x_{ikhm} \leq 1 \quad \forall i \in I, k \in K, h \in H, m \in M
|
||
\label{agg_relation_constr}
|
||
\end{equation}
|
||
|
||
同理,工作完整性约束由式\eqref{work_complete_constr}调整为式\eqref{agg_work_complete_constr},用以确保所有周期组中元件 $i$ 的贴装点数总和等于其在PCB上的贴装点数。
|
||
\begin{equation}
|
||
\sum_{k \in K} \sum_{h \in H} \sum_{m \in M} b_{km} \cdot x_{ikhm} = \psi_{i} \quad \forall i \in I
|
||
\label{agg_work_complete_constr}
|
||
\end{equation}
|
||
|
||
式\eqref{agg_work_complete_constr}的非线性项可用中间变量$c_{ikhm} = b_{km} \cdot x_{ikhm}$表示,其线性化过程与目标\eqref{linear_objterm_equation}中非线性项的处理方法一致。
|
||
|
||
新增的决策变量的取值范围如式\eqref{agg_var_range_constr}所示,其中$\mathbb{N}_0$表示非负整数集。
|
||
\begin{equation}
|
||
b_{kh} \in \mathbb{N}_0, \; c_{ikhm} \in \mathbb{N}_0 \quad \forall i \in I, k \in K, h \in H, m \in M
|
||
\label{agg_var_range_constr}
|
||
\end{equation}
|
||
|
||
|
||
优化目标\eqref{agg_model_obj}和约束条件\eqref{nozzle_change_constr1}--\eqref{nozzle_change_constr2},\eqref{equ_slot_constr},\eqref{feeder_assign_constr},\eqref{slot_capacity_constr}--\eqref{pick_model_var_range4},\eqref{agg_relation_constr}--\eqref{agg_var_range_constr}构成了基于周期任务集成的贴片头任务分配模型,该模型同时是整数线性规划模型。
|
||
|
||
\subsection{初始可行解的构建}[Construction of the initial feasible solution]
|
||
|
||
构造初始可行解是求解整数规划模型中的重要步骤。
|
||
分支定界法作为解决整数线性规划模型的常用解法,其通过线性松弛模型的最优解构造一个整数可行解,进而递归地搜索模型的全局最优解。
|
||
初始解的选择决定了搜索过程的起始基准点,快速确定模型的初始解可以避免因问题特性不明确而导致模型的迭代搜索时间过长。
|
||
对于不同类型的优化问题,采用不同的初始解选择策略可能会产生显著的差异,一个高质量的初始解可以降低模型求解过程中的迭代次数。
|
||
此外,在构建问题CTIM的过程中,周期组数的设定是决定模型复杂度的主要因素。过多的周期组数设置不仅无法提升解的质量,反而会延长求解时间;过少的周期组数设置则会导致模型无解。因此,依据数据的特征确定周期组数在建模过程中较为重要。
|
||
本节将围绕上述问题,研究启发式的模型初始化方法,同时确定模型的初始解和超参数周期组集合$K$的值。
|
||
|
||
模型的初始化启发式共由两部分组成,分别确定了吸嘴装配的贴片头数和贴片头上的元件分配结果,如算法\ref{ch3:algorithm:model-initialize}所示。
|
||
在确定吸嘴的贴片头数时,优化条件为在不改变贴片头上装配吸嘴的约束下最小化拾贴周期数,即在各吸嘴至少分配一个贴片头的基础上,将剩余贴片头优先分给已分配贴片头平均点数最少的吸嘴。吸嘴类型$j$分配的贴片头数$\pi_j$将作为后续算法设计的基础。
|
||
在确定贴片头分配的元件类型时,
|
||
基于给定吸嘴贴片头数,模型初始化算法从首个周期组开始,通过向周期组索引集合添加新的索引,递归搜索可行的初始解$\mathcal{C}$和$\mathcal{W}$。其中,$\mathcal{C}_{kh}$为周期组$k$中贴片头$h$拾贴的元件类型,$\mathcal{W}_{k}$为周期组$k$内的拾贴周期数。
|
||
算法\ref{ch3:algorithm:model-initialize}构造的模型解的结构简单,可直接确定周期组索引集合$K = \mathcal{K}$,其输出的结果可依据式\eqref{var_initial_constr}确定模型的初始周期组数$b_{k1}^{\left(0\right)}$和拾贴周期元件分配结果$x_{ikh1}^{\left(0\right)}$,其余决策变量可根据约束条件通过试凑的方式快速确定。
|
||
\begin{equation}
|
||
b_{k1}^{\left(0\right)} = \mathcal{W}_{k}, \quad \sum_{i \in I} i \cdot x_{ikh1}^{\left(0\right)} = \mathcal{C}_{kh} \quad \forall k \in K, h \in H
|
||
\label{var_initial_constr}
|
||
\end{equation}
|
||
|
||
\begin{algorithm}
|
||
\small
|
||
\AlgoBiCaption{周期任务集成模型的启发式初始化算法}{Heuristic initialization algorithms for cyclic task integration model}
|
||
\label{ch3:algorithm:model-initialize}
|
||
|
||
\Input{元件的贴装点数 $\psi$,元件和吸嘴匹配性 $\mu$}
|
||
\Output{贴片头的元件分配类型 $\mathcal{C}$,周期组的拾贴周期数 $\mathcal{W}$,周期组索引集合 $\mathcal{K}$}
|
||
|
||
令周期组索引集合 $\mathcal{K} \leftarrow \left\{ 1 \right\}$ 和吸嘴装配的贴片头数 $\pi_{j} \leftarrow 1$,$\forall j \in J$ \;
|
||
|
||
\While{$\sum_{j \in J} \pi_j \neq \left| H \right|$}
|
||
{
|
||
\tcc{按照吸嘴贴片头平均分配点数最大的原则选择吸嘴}
|
||
$j \leftarrow {\rm argmax}_{j^\prime \in J} \left\{ j^\prime \mid \sum_{i \in I} \mu_{ij^\prime} \cdot \psi_i / \pi_{j^\prime} \right\}$ \;
|
||
|
||
$\pi_{j} \leftarrow \pi_j + 1$ \;
|
||
}
|
||
\tcc{递归分配各周期组贴片头的元件,直至找到可行解}
|
||
\While{\rm{\textbf{true}}}
|
||
{
|
||
令 $\mathcal{C}$ 为大小为 $\left| \mathcal{K} \right| \times \left| H \right|$ 的列表,
|
||
令 $\mathcal{W}$ 为大小为 $\left| \mathcal{K} \right| \times 1$ 的列表 \;
|
||
\If{ recursive $\left( \max_{i \in I} \psi_{i}, \psi, 1, \pi, \mathcal{K}, \mathcal{C}, \mathcal{W} \right) = success$}
|
||
{
|
||
\textbf{break}; \tcp{找到可行解,退出搜索}
|
||
}
|
||
$\mathcal{K} \leftarrow \mathcal{K} \cup \left\{\left| \mathcal{K} \right| + 1 \right\}$ ; \tcp{当前周期组无解,增加周期组数}
|
||
}
|
||
\end{algorithm}
|
||
|
||
|
||
|
||
\begin{algorithm}
|
||
\small
|
||
\AlgoBiCaption{递归分配函数\emph{recursive}的实现}{Implementation of the \emph{recursive} assignment function}
|
||
\label{ch3_algorithm_recursive}
|
||
|
||
\Input{周期组数 $\mathcal{l}$, 元件贴装点数 $\psi$, 周期组索引 $\mathcal{k}$, 周期组索引集合 $\mathcal{K}$, 吸嘴分配贴片头数 $\pi$, 贴片头已分配的元件 $\mathcal{C}$, 周期组已分配的拾贴周期数 $\mathcal{W}$}
|
||
\Output{贴片头分配的元件类型 $\mathcal{C}$, 周期组分配的拾贴周期数 $\mathcal{W}$}
|
||
|
||
\Fn{recursive\rm{(}$\mathcal{l}$, $\psi$, $\mathcal{k}$, $\pi$, $\mathcal{K}$, $\mathcal{C}$, $\mathcal{W}$\rm{)}}
|
||
{
|
||
\uIf {$\mathcal{k} > \left| \mathcal{K} \right|$ \rm{\textbf{and}} $\sum_{i \in I} \psi_{i} = 0$}
|
||
{
|
||
\textbf{return} \emph{success}; \tcp{已找到可行解}
|
||
}
|
||
\uElseIf{$\mathcal{l} \leq 0$ \rm{\textbf{and}} $\mathcal{k} = 1$}
|
||
{
|
||
\textbf{return} \emph{fail}; \tcp{当前周期组数无解,需要增加周期组数重新搜索}
|
||
}
|
||
\ElseIf{$\mathcal{l} \leq 0$ \rm{\textbf{or}} $\mathcal{k} > \left| \mathcal{K} \right|$}
|
||
{
|
||
\textbf{return} \emph{backtrack}; \tcp{当前分配周期组数不可行}
|
||
}
|
||
|
||
令$\psi^{\prime} \leftarrow \psi$,$\pi^{\prime} \leftarrow \pi$,$\mathcal{W}_{\mathcal{k}} \leftarrow \mathcal{l}$,初始化 $\mathcal{C}_{\mathcal{k}}$ 为空列表\;
|
||
\For {$j \in J$}
|
||
{
|
||
\While{$\pi_{j}^{\prime} > 0$}
|
||
{
|
||
\tcp{选择吸嘴类型为$j$的贴装点数最少且大于周期组数的元件}
|
||
$i^{\prime} \leftarrow {\rm argmin} \left\{ \psi_{i} \mid \mu_{ij} \cdot \psi_{i} \geq \mathcal{l}, i \in I \right\} $\;
|
||
|
||
\tcp{更新贴片头的分配元件,元件的点数和已遍历的头数}
|
||
$\mathcal{C}_{\mathcal{k}} \leftarrow \left[ \mathcal{C}_{\mathcal{k}},,i^\prime \right]$,
|
||
$\psi_{i^{\prime}} \leftarrow \psi_{i^{\prime}} - \mathcal{l}$,
|
||
$\pi_{j}^{\prime} \leftarrow \pi_{j}^{\prime} - 1$\;
|
||
}
|
||
}
|
||
\tcc{递归寻找可行解}
|
||
$res \leftarrow recursive \left( \max_{i \in I} \psi_{i}, \psi, \mathcal{k} + 1, \pi, \mathcal{K}, \mathcal{C}, \mathcal{W} \right)$\;
|
||
|
||
\uIf {res = success}
|
||
{
|
||
\textbf{return} \emph{success}\;
|
||
}
|
||
\ElseIf{res = backtrack}
|
||
{
|
||
\textbf{return} $recursive \left( \mathcal{l} - 1, \psi^\prime, \mathcal{k}, \pi, \mathcal{K}, \mathcal{C}, \mathcal{W} \right)$\;
|
||
}
|
||
}
|
||
\end{algorithm}
|
||
|
||
初始化过程中递归分配贴装点函数\emph{recursive}的实现如算法\ref{ch3_algorithm_recursive}所示,其分配过程是按照周期组索引,以贴装点数非递减的顺序递归向贴片头分配贴装点。
|
||
同时,算法优先分配贴装点数多于拾取周期分配组数且点数最少的元件,以增加搜索解的多样性。
|
||
递归过程的返回值可能有三种情况。其中\emph{success}表示搜索成功,指已找到模型的初始可行解;\emph{fail}表示搜索失败,指对于给定的模型,当前的周期组集合 $\mathcal{K}$ 不可行,需要增大周期组的个数重新进行搜索;\emph{backtrack}表示回溯搜索,指分配周期组 $\mathcal{k}$ 时,当前分配的周期组数 $\mathcal{l}$ 无法获得可行解,需要执行回溯尝试分配更少的周期组数 $\mathcal{l}-1$。
|
||
|
||
|
||
|
||
\subsection{模型的可解性增强策略}[Solvability enhancement strategies for the model]
|
||
|
||
|
||
周期任务集成策略降低了模型的规模,使其复杂度主要依赖于数据的元件类型数,而降低了与贴装点数之间的关联性。为了进一步提高模型的求解效率,本节将研究两类模型的可解性增强策略:一是通过限定决策变量的规模来压缩决策空间;二是通过引入额外的约束条件缩小可行解域的范围。
|
||
|
||
|
||
1)\emph{限制决策变量的规模}
|
||
|
||
|
||
供料器基座上较多的槽位数大幅增加了模型的决策变量数。在实际的表面组装过程中,为提高拾取过程的效率,供料器通常被紧密排列在供料器基座的有限区域内,因此,距离贴装区域较远的插槽可被忽略不计。
|
||
对于贴片头和供料器插槽间隔比为$\tau$的贴片机,相邻供料器之间的间隔槽数通常为$\tau-1$。在元件类型数有限的情况下,假定$\tau=1$不会降低模型解的质量,反而有助于简化求解过程。
|
||
在模型求解过程中,本节以供料器总数为拾取槽位的区间跨度,以最左侧拾取槽位为基准,根据贴片头的元件分配结果确定参考槽位号,具体为:
|
||
|
||
\emph{步骤I} : 确定不同类型元件 $i$所分配的贴片头与对应的拾贴周期数的加权平均值$\overline{h}_{i}$。
|
||
\begin{equation}
|
||
\overline{h}_{i} \leftarrow \left( \sum_{k \in K} \sum_{h \in H} x_{ikh1} \cdot h \cdot b_{k1} \right) / \sum_{k \in K} b_{k1} \quad \forall i \in I.
|
||
\end{equation}
|
||
|
||
\emph{步骤II} : 以最左侧贴片头为基准,将所有贴装点的X坐标转换为其贴装坐标,取其平均值记为$\overline{X}$。
|
||
\begin{equation}
|
||
\overline{X} \leftarrow \sum_{p \in P} \left\{ X_{p} - \left( \sum_{i \in I} \eta_{ip} \cdot \overline{h}_{i} - 1 \right) \cdot \rho \right\} / \left| P \right| .
|
||
\end{equation}
|
||
|
||
\emph{步骤III} : 记拾取过程中贴片头在供料器基座在各周期组内移动经过的平均槽位数为$\Delta \overline{S}$。
|
||
\begin{equation}
|
||
\begin{aligned}
|
||
\Delta \overline{S} \leftarrow \sum_{k \in K} \mathcal{R} \left( \left\{ s \cdot y_{skh1} -
|
||
\left( h - 1 \right) \cdot \frac{\rho}{\tau} \mid y_{skh1} > 0, s \in S, h \in H \right\} \right) / \sum_{k \in K} b_{k1}
|
||
\end{aligned}
|
||
\end{equation}
|
||
其中,$\mathcal{R} \left( \cdot \right)$表示集合中最大值和最小值的差。
|
||
|
||
\emph{步骤IV} : 根据贴片头拾取范围(贴片头移动的槽位数)和贴片头的平均贴装位置,确定参考槽位号 $s^{\rm REF}$。
|
||
\begin{equation}
|
||
s^{\rm REF} \leftarrow \lfloor \frac{\overline{X} - X^{\rm F1}}{ \rho } \cdot \tau + \frac{\Delta \overline{S} + 1}{2} \rfloor + 1
|
||
\end{equation}
|
||
据此可知元件类型 $i$ 的拾取槽位为$s^{\rm REF} + \tau \cdot \sum_{s \in S} s \cdot f_{is1} $。
|
||
|
||
2)\emph{缩小可行解域的范围}
|
||
|
||
表面组装过程优化问题的解域较大,根据问题特性缩小解域的范围将有效提升模型的求解效率。本节通过添加约束条件来缩减模型的求解空间,从而进一步提高模型的求解效率。
|
||
需要说明,
|
||
约束条件\eqref{workload_priority_equation}--\eqref{workload_component_equation}并非模型求解的必要条件,而是用于进一步缩小可行域范围,在搜索过程中去除重复解和质量较差的解。
|
||
|
||
约束\eqref{workload_priority_equation}用于确保拾贴周期数多的周期组具有更高的优先级。对于连续作业的表面组装过程,调整周期组的先后顺序并不会影响解的质量,优先分配拾贴周期数多的周期组可以消除分配过程中的重复解。
|
||
\begin{equation}
|
||
b_{km} \geq b_{\left(k + 1\right)m} \quad \forall k \in K \backslash \left\{ \left| K \right| \right\}, m \in M
|
||
\label{workload_priority_equation}
|
||
\end{equation}
|
||
|
||
约束\eqref{workload_range_equation}界定了拾贴周期总数的取值范围。在理想的贴片头配置中,不考虑吸嘴更换以及元件拾取效率的前提下,可使贴片头的拾贴周期数最小化,即尽可能均匀地将贴装点分配到贴片头上。相对而言,在最坏的情形下,所有贴片头在组装过程中均不更换吸嘴,仅对分得同类型吸嘴的贴片头进行贴装点均分。
|
||
\begin{equation}
|
||
\lceil \sum_{i \in I} \frac{\psi_{i}}{\left| H \right|} \rceil \leq \sum_{k \in K} b_{km} \leq \sum_{k \in K}\mathcal{W}_{k} \quad \forall m \in M
|
||
\label{workload_range_equation}
|
||
\end{equation}
|
||
|
||
约束\eqref{nozzle_equipped_equation}假定所有贴片头在组装全过程中均装配有吸嘴,即使其不拾取和贴装元件,用以避免在计算过程中重复判断周期组之间贴片头是否存在吸嘴更换。
|
||
\begin{equation}
|
||
\sum_{j \in J} z_{jkhm} = 1 \quad \forall k \in K, h \in H, m \in M
|
||
\label{nozzle_equipped_equation}
|
||
\end{equation}
|
||
|
||
约束\eqref{workload_component_equation}进一步限定了拾贴周期规划和贴片头元件分配之间的关系,增强了组装过程中工作完整性约束对贴片头元件分配的限制。
|
||
\begin{equation}
|
||
N \cdot \sum_{i \in I} \sum_{h \in H} x_{ikhm} \geq b_{km} \quad \forall k \in K, m \in M
|
||
\label{workload_component_equation}
|
||
\end{equation}
|
||
|
||
\subsection{最优解的选择准则}[Selection criteria for the optimal solutions]
|
||
|
||
基于CTIM的贴片头任务分配的优化目标由关键效率子目标构成,并未包含拾贴过程的悬臂移动路径项,而对其同时进行建模会极大地增加模型的复杂度。模型的最优解通常是不唯一的,不同的贴片头任务分配结果会影响悬臂移动路径项的优化结果。解集池用于存储模型求解过程中找到的多个最优解或近似最优解。
|
||
本节通过综合考虑拾取和贴装过程中的移动路径长度,实现对贴片头分配结果的快速评估,进而从解集池中筛选出作为后续贴装过程路径规划约束的解。CTIM的解直接决定了拾取过程的移动路径长度$\widetilde{D}^{\rm{PU}}$,即
|
||
\begin{equation}
|
||
\widetilde{D}^{\rm{PU}} = \frac{\rho}{\tau} \cdot \sum_{k \in K} b_{k1} \cdot \mathcal{R} \left( \left\{ y_{skh1} \cdot \left( s - h \cdot \tau \right) \mid y_{skh1} \neq 0, s \in S, h \in H \right\} \right)
|
||
\end{equation}
|
||
|
||
对于贴装过程的路径长度 $\widetilde{D}^{\rm{PL}}$,
|
||
算法\ref{ch3:algorithm:place_evaluation}提出了一种快速的启发式评估方法。
|
||
算法的基本原理是按元件类型和贴装点的位置对其进行分组,估计各周期组内贴片头的贴装中心位置,以中心位置代替实际贴装位置计算各周期组的移动路径长度。贴装点分组的中心点可以近似为实际贴装路径规划中可选择的潜在贴装点,预估贴装路径长度和实际规划路径长度有较强的关联性。
|
||
在模型的解集池中,取 $\widetilde{D}^{\rm{PU}} + \widetilde{D}^{\rm{PL}}$ 值最小的解作为模型的最终结果。
|
||
|
||
|
||
\begin{algorithm}
|
||
\small
|
||
\AlgoBiCaption{贴片头部任务分配模型贴装路径评估启发式}{Placement path evaluation heuristic for head task assignment model}
|
||
\label{ch3:algorithm:place_evaluation}
|
||
|
||
\Input{贴片头元件分配的解$\mathcal{C}$,周期组的拾贴周期数$\mathcal{W}$,元件-贴装点一致性$\eta$,贴装点$p$的X坐标$X_p$}
|
||
\Output{贴片头的预估贴装路径$\widetilde{D}^{\rm{PL}}$}
|
||
|
||
将贴装点索引元件类型分至不同的有序集合$P_i \leftarrow \left\{ p \mid \eta_{ip} = 1, \forall p \in P \right\}$,$\forall i \in I$,按X坐标递增的顺序对集合内元素进行排序 \;
|
||
|
||
记有序集合$\mathcal{V}_k \leftarrow \varnothing$,$\forall k \in K$,表示周期组内贴片头的移动位置中心点X坐标, 初始化$\widetilde{D}^{\rm{PL}} \leftarrow 0$ \;
|
||
|
||
\tcc{按序遍历各周期组及贴片头}
|
||
\For {$k \in K$}
|
||
{
|
||
\For {$h \in H$}
|
||
{
|
||
记$i \leftarrow \mathcal{C}_{kh}$为当前拾贴周期$k$贴片头$h$拾贴的元件类型,取$P_i$中前$\mathcal{W}_k$个点记为$p_1,p_2,\cdots,p_{\mathcal{W}_k}$ \;
|
||
|
||
向$\mathcal{V}_k$中添加中心X坐标 $\sum_{t = 1}^{t=\mathcal{W}_k} \left[ X_{p_t} - \left( h - 1 \right) \cdot \tau \right] / \mathcal{W}_k$ ,移除集合$P_i$中前$\mathcal{W}_k$个元素 \;
|
||
}
|
||
|
||
$\widetilde{D}^{\rm{PL}} \leftarrow \widetilde{D}^{\rm{PL}} + \left( \max_{k \in K} \mathcal{V}_k - \min_{k \in K} \mathcal{V}_k \right) \cdot \mathcal{W}_k $; \tcp{评估的贴装移动路径长度}
|
||
}
|
||
|
||
\end{algorithm}
|
||
|
||
|
||
\section{基于分层前瞻扫描启发式的贴片头任务分配策略}[Hierarchical heuristic look-forward scanning-based head task assignment]
|
||
|
||
\subsection{算法概述}[Overview of the algorithm]
|
||
|
||
|
||
|
||
CTIM的方法在求解中小规模数据时能保证解的质量,但其仍存在求解效率受元件类型数限制的问题,对元件类型更复杂的数据优化能力有限。
|
||
本章将继续研究适用性更强的贴片头任务分配算法,提出基于分层前瞻扫描启发式(Hierarchical Look-Forward Scanning Heuristic,HLFSH)的贴片头任务分配算法。
|
||
高效的分层框架及具有前瞻式搜索规则的启发式方法被用于解决贴片头任务分配问题。
|
||
HLFSH通过模拟拾取过程确定贴片头任务分配的结果,将贴片头任务拆分为三个互相关联的分层次优化问题:吸嘴分配模式、供料器-槽位分配和贴片头-元件分配。
|
||
吸嘴分配模式不以为贴片头直接分配吸嘴为目标,而是提供一种分配过程的范式,用于约束供料器-槽位分配和贴片头-元件分配过程,二者共同决定了贴片头拾取过程的效率。
|
||
图\ref{ch3:figure:hlfsh-algorithm-flowchart}展示了HLFSH的基本流程,
|
||
基于启发式的供料器-槽位分配和贴片头-元件分配算法具有相似的搜索方式,二者均以贴片头装配的吸嘴类型为参考,均通过扫描供料器基座的方式,分配供料器至插槽和分配贴片头拾贴的元件类型,同时在分配过程中融入不同的评估函数。
|
||
基于HLFSH的贴片头任务分配算法在搜索效率、解的质量和可扩展性方面具有优势,能够满足多样化的组装任务需求。
|
||
|
||
\begin{figure}[H]
|
||
\centering
|
||
\includegraphics[scale=0.9]{chapter3/hlfsh-algorithm-flowchart.eps}
|
||
\bicaption[ch3:figure:hlfsh-algorithm-flowchart]{}{分层前瞻扫描启发式算法流程图}{Fig.$\!$}{\centering Flowchart of the hierarchical heuristic forward-looking scanning algorithm}
|
||
\end{figure}
|
||
|
||
\subsection{吸嘴的分配模式启发式算法}[Nozzle pattern assignment heuristic algorithm]
|
||
|
||
在贴片头拾取元件过程中,吸嘴的类型与供料器所安装的槽位共同决定了贴片头所能达成的同步拾取数。为了保证在同步拾取效率提升的同时,尽量减少因吸嘴更换所导致的效率损失,供料器的槽位分配需充分考虑吸嘴更换的实际情况。因此,在供料器分配之前,有必要明确贴片头上所安装的吸嘴类型。
|
||
本节讨论了一种吸嘴匹配模式的枚举策略,将贴片头上所安装的吸嘴类型组合称为吸嘴组,吸嘴组中各类吸嘴的数量是确定的。
|
||
理论上,通过穷举吸嘴组的全排列,可以枚举出所有可能的吸嘴分配模式。然而,全排列的搜索方式会造成重复的供料器-槽位和贴片头-供料器分配结果,大幅增加算法的求解时间。
|
||
本节提出的吸嘴模式启发式采用两种不同的分配策略确定吸嘴分配模式,分别是从单侧向对侧排列吸嘴,以及从中心向两侧排列吸嘴。
|
||
前者将同类型的吸嘴在贴片头上连续排列,该分配策略能使贴装点数较多的元件构成同步拾取,分配的结果中移除了吸嘴组类型完全相同的对称项。
|
||
后者则是从中间的贴片头开始分配吸嘴,按照吸嘴$j$对应贴片头数$\pi_j$非递增的顺序向两侧交替地排布吸嘴。
|
||
两种不同的分配方式考虑了不同的拾取情况,为后续的供料器分配和元件分配提供了依据。吸嘴分配模式的生成流程如算法\ref{ch3:algorithm:nozzle_mode}所示。
|
||
|
||
\vspace{0.6em}
|
||
\begin{algorithm}[H]
|
||
\small
|
||
\AlgoBiCaption{吸嘴分配模式启发式算法}{Nozzle mode assignment heuristic algorithm}
|
||
\label{ch3:algorithm:nozzle_mode}
|
||
|
||
\Input{吸嘴分配贴片头数$\pi$,元件贴装点数 $\psi$,元件-吸嘴匹配性$\mu$}
|
||
\Output{吸嘴模式集合 $\mathcal{M}$}
|
||
|
||
按照索引$j \in J$ 对应的$\sum_{i \in I} \mu_{ij} \cdot \psi_i$递减的顺序确定吸嘴索引列表$J^{\rm LT}$,$J^{\rm LT}$中的元素由$\pi_j$ 个吸嘴索引构成 \;
|
||
|
||
\tcc{遍历吸嘴索引列表$J^{\rm LT}$的全排列}
|
||
\For {$J^\prime$ \rm{\textbf{in}} \emph{permutation} $\left( J^{\rm LT} \right) $}
|
||
{
|
||
\tcc{由单侧向对侧排列吸嘴}
|
||
|
||
初始化 $\mathcal{N} \leftarrow \left[ \right]$,
|
||
按序遍历 $\pi_j$ 次 $J^\prime$ 中的 $j$, 令 $\mathcal{N} \leftarrow \left[ \mathcal{N}, j \right]$ \;
|
||
|
||
将$\mathcal{N}$添加到吸嘴模式集$\mathcal{M}$ \;
|
||
|
||
}
|
||
|
||
移除吸嘴分配模式中的对称项 \;
|
||
|
||
\tcc{由中心向两侧排列吸嘴}
|
||
令贴片头索引列表 $H_L \leftarrow \left[ \frac{\left| H \right|}{2} + (-1)^h \cdot \left( \lceil \frac{h}{2} \rceil - \frac{1}{2} \right) + \frac{\lceil \left( \left| H \right| + 1 \right) \ \rm{mod} \ 2 \rceil}{2} \right]$,${h \in H}$ \;
|
||
|
||
令 $\mathcal{N} $ 为大小 $1 \times \left| H \right|$的空列表,
|
||
按序遍历 $\pi_j$ 次 $J^{\rm LT}$ 中的 $j$,同时按序遍历$H_L$中的$h$, 令 $\mathcal{N}_{h} \leftarrow j$, 将$\mathcal{N}$添加到吸嘴模式集$\mathcal{M}$ \;
|
||
|
||
\end{algorithm}
|
||
|
||
|
||
\begin{algorithm}[!htb]
|
||
\small
|
||
\AlgoBiCaption{供料器-槽位分配启发式算法}{Feeder-slot assignment heuristic algorithm}
|
||
\label{ch3:algorithm:feeder-assignment}
|
||
|
||
\Input{元件的贴装点数$\psi$,吸嘴的贴片头数$\pi$,元件和吸嘴的匹配性$\mu$,吸嘴模式 $\mathcal{N}$}
|
||
\Output{供料器槽分配的元件 $\mathcal{F}^{\rm{CP}} $ 和 分配的贴装点数 $\mathcal{F}^{\rm{PT}}$}
|
||
令 $\mathcal{F}^{\rm{CP}} $ 和 $\mathcal{H}^{\rm{CP}}$ 为大小为$1 \times \left| S \right|$ 和 $1 \times \left| H \right|$的 空列表 \tcp{分别表示供料器槽位和贴片头对齐槽位的元件类型}
|
||
令 $\mathcal{F}^{\rm{PT}} $ 和 $\mathcal{H}^{\rm{PT}}$ 为大小为$1 \times \left| S \right|$ 和 $1 \times \left| H \right|$的 元素全为0的列表 \tcp{分别表示供料器槽位和贴片头对齐槽位的贴装点数}
|
||
|
||
\tcc{分配元件至供料器槽位,直至全部贴装点完成分配}
|
||
\While{$\sum_{i \in I} \psi_{i} \neq 0$ }
|
||
{
|
||
令 $V^* \leftarrow 0$; \tcp{表示已分配最优解的值}
|
||
\For{遍历所有槽位从$s = 1$ 到 $s = \left| S \right| - \left( \left| H \right| - 1 \right) \cdot \tau $}
|
||
{
|
||
\tcc{记录贴片头对齐槽位的元件类型和贴装点数,备份元件索引集合}
|
||
\lForEach{$ h \in H$}{$\mathcal{H}^{\rm{CP}}_h \leftarrow \mathcal{F}^{\rm{CP}}_ {s + \left( h - 1 \right) \cdot \tau }$,$ \mathcal{H}^{\rm{PT}}_h \leftarrow \mathcal{F}^{\rm{PT}}_ {s + \left( h - 1 \right) \cdot \tau } $ }
|
||
|
||
令$\hat{I} \leftarrow I$ ; \tcp{未分配元件的索引集合}
|
||
|
||
\tcc{根据贴片头的吸嘴,为当前供料器槽位分配元件}
|
||
\For{$j \leftarrow \mathcal{N}_{h}$,$h \in \left\{ h^{\prime} \mid \mathcal{H}^{\rm{CP}}_{h^{\prime}} > 0, h^\prime \in H \right\}$}
|
||
{
|
||
\uIf {$\psi_{i} = 0$,$\forall i \in \left\{ i^{\prime} \mid \mu_{i^{\prime}j} \neq 0, i^{\prime} \in \hat{I} \right\}$}
|
||
{
|
||
令 $i \leftarrow {\rm argmax}_{i^{\prime} \in \hat{I}} \left\lbrace \psi_{i^{\prime}} \right\rbrace $,将元件$i$压入堆栈\;
|
||
}
|
||
\Else
|
||
{
|
||
令 $i \leftarrow {\rm argmax}_{i^{\prime} \in \hat{I}} \left\{ \psi_{i^{\prime}} \mid j \cdot \mu_{i^{\prime}j} > 0 \right\}$,
|
||
$\mathcal{H}^{\rm{CP}}_h \leftarrow i$,$\mathcal{H}^{\rm{PT}}_h \leftarrow \psi_{i}$ \;
|
||
}
|
||
$\hat{I} \leftarrow \hat{I} \backslash \left\{ i \right\}$ ; \tcp{将已分配元件从未分配元件索引集中移除}
|
||
}
|
||
|
||
弹出堆栈中元件$i$分配给头 $h \in \left\{ h^{\prime} \mid \mathcal{H}^{\rm{PT}}_{h^\prime} = 0, h^\prime \in H\right\}$,令$\mathcal{H}^{\rm{CP}}_h \leftarrow i$,$\mathcal{H}^{\rm{PT}}_h \leftarrow \psi_{i}$ \;
|
||
\tcc{比较并记录分配的最优值}
|
||
\If{$\sum_{h \in H} \left( \mathcal{H}^{\rm{PT}}_h + \left|\mathcal{N}_h - \sum_{j \in J} j \cdot \mu_{\mathcal{H}^{\rm{CP}}_hj} \right|\right) > V^*$}
|
||
{
|
||
$V^{*} \leftarrow \sum_{h \in H} \left( \mathcal{H}^{\rm{PT}}_h + \left|\mathcal{N}_h - \sum_{j \in J} j \cdot \mu_{\mathcal{H}^{\rm{CP}}_hj} \right|\right) $,$s^* \leftarrow s$,$\widetilde{\mathcal{H}}^{\rm{CP}} \leftarrow \mathcal{H}^{\rm{CP}}$
|
||
}
|
||
}
|
||
|
||
$l = \min \left\{ \mathcal{F}^{\rm{PT}}_{s^* + \left(h - 1\right) \cdot \tau} \mid \mathcal{F}^{\rm{PT}}_{s^* + \left(h - 1\right) \cdot \tau} \neq 0, h \in H \right\}$ ; \tcp{计算最大同步拾取次数}
|
||
\For {$s\leftarrow s^* + \left( h - 1\right) \cdot \tau $,$h \in H$}
|
||
{
|
||
\tcc{更新供料器槽的元件类型和贴装点数}
|
||
$\mathcal{F}^{\rm{CP}}_s \leftarrow \widetilde{\mathcal{H}}^{\rm{CP}}_h$,
|
||
$\mathcal{F}^{\rm{PT}}_s \leftarrow \mathcal{F}^{\rm{PT}}_s - l$ \;
|
||
|
||
$\mathcal{N}_{h} \leftarrow j$,$\psi_{i} \leftarrow \psi_{i} - l$, 其中,$i = \widetilde{\mathcal{H}}^{\rm{CP}}_h$, $ j = \sum_{j^{\prime} \in J} j^{\prime} \cdot \mu_{ij^{\prime}}$\;
|
||
}
|
||
}
|
||
\end{algorithm}
|
||
|
||
\subsection{供料器的槽位分配启发式算法}[Feeder-slot assignment heuristic algorithm]
|
||
|
||
\subsubsection{基本框架}
|
||
|
||
吸嘴模式可以被视为贴片头安装的吸嘴类型,其并不直接作为决策的子问题,供料器-槽位分配则是贴片头-元件分配等子问题的前置问题,决定了组装过程贴片头的元件拾取次数和拾取过程的移动路径,合理的安装配置将显著提高取料效率。
|
||
本节所述的供料器-槽位分配过程用于确定供料器中装载元件的拾取槽位。
|
||
算法\ref{ch3:algorithm:feeder-assignment}中描述了供料器-槽位分配启发式的流程,在此框架下,吸嘴模式作为一项约束,限定了扫描过程中贴片头对齐的槽位中所能分配供料器对应的元件类型。
|
||
在贴片头进行基座扫描与供料器分配的过程中,其分配策略为最大化每轮分配的贴装点数量,同时增加贴片头安装的吸嘴类型与槽位中供料器的吸嘴类型的一致性要求。
|
||
在各轮次的基座扫描过程中,算法保留了贴片头对齐槽位中已有的供料器,同时将未分配的供料器分配到其中的空槽中。
|
||
贴片头对齐槽位所能安装的供料器,受到贴片头上安装的吸嘴类型限制。采用吸嘴模式引导供料器分配过程,能够减少后续取料过程中的吸嘴更换次数,从而提升整体组装效率。
|
||
在实现过程中,算法优先分配同贴片头吸嘴类型一致且贴装点数最多元件的供料器,若该类吸嘴全部元件均已分配完成,则跳过当前贴片头,并将贴装点最多的元件暂存于堆栈中。待所有贴片头完成初步分配后,算法再将堆栈中元件的供料器依次分配至贴片头所对齐的空槽位中,以此确保供料器分配的槽位相对集中,降低拾取过程的移动路径。
|
||
|
||
\subsubsection{实现细节}
|
||
|
||
基于给定的算法框架,为增强提出算法的适用范围,解决多种组装过程约束条件下的供料器-槽位分配问题,本小节从以下几个角度对提出的算法做补充说明:
|
||
|
||
1)\emph{供料器的预先安装}
|
||
|
||
|
||
预先安装供料器是表面组装中的常见配置,旨在缩减换线时间,提升生产效率。为实现快速换线,现场操作人员通常会将频繁使用的供料器预先安装在固定的槽位上。对于小批量订单生产,若因数据调整而对供料器的槽位重新分配将会增加人力成本。
|
||
在供料器启发式分配算法中,$\mathcal{F}^{\rm{CP}}$和$\mathcal{F}^{\rm{PT}}$用于记录槽位基座上的元件类型和点数,其不仅适用于记录算法执行过程中已分配的供料器,还可进一步拓展至预分配的场景,为组装过程调度提供更为灵活的解决方案。
|
||
在供料器分配过程中,贴片头会扫描基座上的供料器,以最大化利用全部贴片头对齐槽位中已分配的供料器进行同步取料,提升整体的组装效率。
|
||
|
||
2)\emph{供料器的分配基准}
|
||
|
||
在供料器启发式分配算法设计中,针对每一轮贴片头的扫描基座过程,在满足吸嘴分配模式约束下,最大化贴装点分配数量的方案并不唯一。
|
||
因此,本小节引入了一项加权评估指标,以量化供料器安装于不同槽位时,贴片头拾取元件对其移动路径产生的影响。具体地,对于元件类型$i$,定义其所有贴装点平均坐标所对齐槽位为$\overline{S}_i$,计算方式为
|
||
\begin{equation}
|
||
\overline{S}_i \leftarrow \left( \sum_{p \in P} \eta_{ip} \cdot X_p / \sum_{p \in P} \eta_{ip} - X^{\rm{F1}} \right) \cdot \tau / \rho + 1 \quad \forall i \in I
|
||
\end{equation}
|
||
当供料器分配过程遍历至槽位$s$时,将在该槽位的评估指标中附加一个权重较小的惩罚项$ -\sum_{h \in H} \left| s - \overline{S}_{\mathcal{H}^{\rm{C}P}_h} \right|$。此策略可以减少贴片头完成拾取任务后移动向贴装区域的路径长度。
|
||
|
||
|
||
\begin{algorithm}[htbp]
|
||
\small
|
||
\AlgoBiCaption{最小化拾取次数的可用供料器分配启发式}{Available feeder assignment heuristic for minimizing the number of pickups}
|
||
\label{ch3:algorithm:avl-feeder}
|
||
|
||
\Input{元件的贴装点数$\psi$,元件的可用供料器数$\phi$}
|
||
\Output{元件的分配供料器数$\hat{\phi}$}
|
||
|
||
令元件分配的供料器数$\hat{\phi}_i = 1$,$\forall i \in I$,当前遍历的已分配供料器数$\widetilde{\phi} \leftarrow \hat{\phi}$,
|
||
最少可达成拾取次数 $\mathcal{J} \leftarrow \infty$ \;
|
||
|
||
\While {$\sum_{i \in I} \widetilde{\phi}_i < \sum_{i \in I} \phi_i $}
|
||
{
|
||
按$\psi_i / \widetilde{\phi_i}$ 值递减的顺序对元件索引$i \in I$排序 \;
|
||
令 $\mathcal{c} \leftarrow 0$,$\mathcal{g} \leftarrow 1$,$\mathcal{p} \leftarrow 0$ ; \tcp{$\mathcal{c}$为已遍历的元件组数,$\mathcal{g}$为当前遍历元件组索引,$\mathcal{p}$为各拾贴周期拾取次数总和}
|
||
\For {$ i \in I$ }
|
||
{
|
||
$\mathcal{c} \leftarrow \mathcal{c} + \widetilde{\phi_i}$ \;
|
||
\While {$\mathcal{g} \leq \mathcal{c}$}
|
||
{
|
||
|
||
$\mathcal{p} \leftarrow \mathcal{p} + \psi_i / \widetilde{\phi_i}$,$\mathcal{g} \leftarrow \mathcal{g} + \left| H \right|$; \tcp{记录元件分组后各拾贴周期的元件拾取次数}
|
||
}
|
||
}
|
||
\If {$\mathcal{p} \leq \mathcal{J}$}
|
||
{
|
||
$\mathcal{J} \leftarrow \mathcal{p}$,$\hat{\phi} \leftarrow \widetilde{\phi}$ ; \tcp{记录最少的拾取次数和对应的可用供料器分配方案}
|
||
|
||
}
|
||
\For {$ i \in I$ }
|
||
{
|
||
\If {$\widetilde{\phi_{i}} < \phi_{i}$}
|
||
{
|
||
$\widetilde{\phi_{i}} \leftarrow \widetilde{\phi_{i}} + 1$ ; \tcp{增加未达到最大可用供料器上限的,分组平均贴装点最多元件的可用供料器数}
|
||
\textbf{break};
|
||
}
|
||
}
|
||
}
|
||
\end{algorithm}
|
||
|
||
|
||
3)\emph{供料器的可用数量}
|
||
|
||
各类元件所对应的可用供料器资源有限,其也是决定拾取过程效率的重要因素之一。在电路板组装的准备环节中,具有较多贴装点的元件通常会配备更多的供料器以增加拾取效率。
|
||
增加供料器的可用数量能提升对应元件的拾取效率,但分配过多同类元件的供料器会导致其占据最优的拾取槽位,进而增加拾取其他类型元件的移动距离。
|
||
为单一元件拾取效率的最大化而过多分配供料器资源,反而可能导致整体拾取效率的下降。因此,在可用供料器数量上限的约束下,确定各类型元件分配供料器数的组合,也是提升组装效率的手段之一。
|
||
本小节提出一种最小化拾取次数的可用供料器分配启发式算法,具体实施流程如算法\ref{ch3:algorithm:avl-feeder}所示。
|
||
算法依据元件的可用供料器数上限及其贴装点数,采用逐轮递增的方式,调整元件的分配供料器实际数目。在此过程中,相同类型的元件被均分至不同的组,且均分后的元件被视为不同的类型。
|
||
在随后执行贪心式的分组分配过程中,算法以所能达成的最少拾取次数作为评价指标,确定了最优的供料器数分配数量组合。
|
||
|
||
4)\emph{供料器的类型差异}
|
||
|
||
元件尺寸的多样性导致了其在供料器中所占槽位数的差异,为解决由此产生的占位冲突问题,本小节引入了额外的变量,记录供料器的占位信息。
|
||
在执行供料器分配前,已分配供料器所占用的槽位会被预先记录。
|
||
在供料器分配过程中,算法根据贴片头对齐槽位的元件分配方式采用不同的策略。
|
||
对于分配同吸嘴类型一致的贴装点数最多的元件的情形,算法会增加额外的占位冲突约束,以确保分配的有效性;
|
||
而对于采用堆栈弹出方式分配元件的情形,若某元件无法满足占位约束条件,则不会对其进行分配,并从其从元件堆栈中移除,等待后续的基座扫描重新进行分配。
|
||
该策略在分配过程中增加了供料器占位冲突管理,保证了供料器槽位的准确分配和拾取效率的提升。
|
||
|
||
\subsection{贴片头的元件分配启发式算法}[Head-component assignment heuristic algorithm]
|
||
|
||
\subsubsection{基本框架}
|
||
|
||
供料器-槽位分配和贴片头-元件分配在算法设计层面上的搜索机制具有相似性,均是基于启发式的基座扫描策略。
|
||
前者解决的是供料器中元件的安装槽位问题,而后者解决的则是贴片头在不同拾贴周期拾取的元件类型和对应的拾取槽位的问题。
|
||
启发式的扫描策略通过整合多个贴片头的拾取元件动作,有效地优化了同步拾取性能指标,缩减了整体拾取过程的用时。
|
||
与供料器分配流程相对比,算法在基座扫描过程中逐一对单个贴片头进行元件分配,贴片头上分配的元件类型及其对齐槽位中的供料器,应满足如下条件:
|
||
|
||
\begin{enumerate}
|
||
\item[1)] \emph{拾取可行性}:贴片头对齐的槽位中存在尚未被拾取的贴装点;
|
||
\item[2)] \emph{可用工具约束}:当前拾贴周期贴片头装配的吸嘴总数不超过对应类型吸嘴的可用数量;
|
||
\item[3)] \emph{前瞻收益最优}:当前对齐槽位进行元件拾取的动作,其预期能达成的(同步)拾取收益不低于其他对齐槽位预期的(同步)拾取收益;
|
||
\item[4)] \emph{拾取效率改进}:执行拾取动作所带来的效率收益,需超过因更换吸嘴所产生的效率损失。
|
||
\end{enumerate}
|
||
|
||
算法~\ref{ch3:algorithm:compo-assign}介绍了贴片头元件分配启发式算法的实现过程,该过程采用基于扫描的拾取策略,旨在最大化同步参与元件拾取的贴片头数量,并尽量减少吸嘴更换的成本。
|
||
扫描策略确定了各贴片头拾取的元件类型及其对应周期组内的拾贴周期数,有效规避了机械限位对拾取过程的制约,确保了所得解的可行性。
|
||
元件分配的启发式方法具备前瞻性,即在为单个贴片头分配元件时,不仅计算了当前分配对性能指标的直接影响,还评估其对后续拾取过程效率的长远影响。
|
||
扫描过程对拾取效率的提升主要体现在合并多个贴片头的拾取动作上,本文将因合并动作而节省的拾取时间与因吸嘴更换产生的额外用时之差称为拾取效率目标改进值。
|
||
元件分配策略不仅以最大化拾取效率改进值为目标,还增加了长短期拾取收益项,以实现对拾取效率的综合评估。
|
||
在分配过程中,吸嘴模式用于确定贴片头从对齐槽位拾取元件所需的吸嘴更换次数。
|
||
单次扫描的最优解确定后,贴片头所拾取的元件类型、周期组数及其装配的吸嘴信息被记录。其中,
|
||
吸嘴的类型将作为新的吸嘴模式,应用于后续的扫描轮次。
|
||
在记录贴片头装配的吸嘴类型时,算法会合并处理相同的结果,以避免因相同模式重复扫描带来的运算效率的下降。
|
||
|
||
|
||
\begin{algorithm}[!htb]
|
||
\small
|
||
\AlgoBiCaption{贴片头-元件分配启发式算法}{Head-component assignment heuristic algorithm}
|
||
\label{ch3:algorithm:compo-assign}
|
||
|
||
\Input{供料器分配元件类型 $\mathcal{F}^{\rm{CP}}$,元件贴装点数$\psi $,元件-吸嘴匹配性$\mu$}
|
||
\Output{元件分配解 $\mathcal{C}$ 和周期组索引集 $\mathcal{K}$}
|
||
初始化一个大小为 $1 \times \left| H \right| $ 的空列表 $ \mathcal{N}$ 为初始吸嘴模式,添加$\mathcal{N}$至吸嘴模式集$\mathcal{M}$ \;
|
||
\While{$\sum_{i \in I} \psi_i \neq 0$ \tcp{仍有未分配到贴片头的点} }
|
||
{
|
||
令 $V^{*} \leftarrow 0$ 作为分配最优解的值,初始化 $\mathcal{H}^{\rm{CP}}$,$\mathcal{H}^{\rm{NZ}}$和$\mathcal{H}^{\rm{PT}}$为大小$1 \times \left| H \right|$ 的空列表\tcp{分别表示贴片头分配的元件类型,吸嘴类型和贴装点数}
|
||
\tcc{逐层遍历所有吸嘴模式、所有槽位和所有贴片头}
|
||
\For {$\mathcal{N} \in \mathcal{M}$ }
|
||
{
|
||
\For {$s \leftarrow 1$ \textbf{\rm {to}} $s \leftarrow \left| S \right| - \left( \left| H \right| - 1\right) \tau$}
|
||
{
|
||
\For {$h \in H$}
|
||
{
|
||
确定贴片头的对齐槽位及其元件类型 $s^{\prime} \leftarrow s + \left( h - 1\right) \cdot \tau$,$i \leftarrow \mathcal{F}^{\rm{CP}}_{s^{\prime}}$ \;
|
||
|
||
|
||
\tcc{计算目标函数值,并同基准值$V^{\rm{BASE}}$进行比较}
|
||
$ V \leftarrow T^{\rm{PU}} \cdot \min \left\{ \mathcal{H}^{\rm{PT}}_{h^{\prime}} \mid \mathcal{H}^{\rm{PT}}_{h^{\prime}} > 0, h^{\prime} \in H \right\} \cup \left\lbrace \psi_i \right\rbrace $
|
||
\hspace{5em}$- T^{\rm{NZ}} \cdot \sum_{h^{\prime} \in H} \left| \mathcal{N}_{h^\prime} - \sum_{j} j \cdot \mu_{ij} \right| $\;
|
||
\vspace{0.2em}
|
||
\If { $\psi_i > 0$ \rm{\textbf{and}} $V > V^{\rm{BASE}}$}
|
||
{
|
||
$\mathcal{H}^{\rm{CP}}_h \leftarrow i$,$\mathcal{H}^{\rm{PT}}_h \leftarrow \psi_i $,$\mathcal{H}^{\rm{NZ}}_h \leftarrow \sum_{j \in J} j \cdot \mu_{ij} $,$\mathcal{H}^{\rm{FD}}_h \leftarrow s + \left( h - 1 \right) \cdot \tau$ \;
|
||
}
|
||
}
|
||
|
||
|
||
用算法~\ref{ch3:algorithm:long-short-objective} 计算短期目标 $V^{\rm{SO}}$ 和长期目标 $V^{\rm{LO}}$,记$\omega$ 为长短期目标权重系数,满足$0 \leq \omega \leq 1$ \;
|
||
|
||
\If {$ \omega \cdot V^{\rm{LO}} + \left( 1 - \omega \right) \cdot V^{\rm{SO}} > V^*$}
|
||
{
|
||
记录贴片头分配的最优值及解$V^* \leftarrow \omega \cdot V^{\rm{LO}} + \left( 1 - \omega \right) \cdot V^{\rm{SO}}$,$ s^* \leftarrow s $ \;
|
||
|
||
|
||
$\widetilde{\mathcal{H}}^{\rm{PT}} \leftarrow \mathcal{H}^{\rm{PT}}$,
|
||
$\widetilde{\mathcal{H}}^{\rm{CP}} \leftarrow \mathcal{H}^{\rm{CP}}$,
|
||
$\widetilde{\mathcal{H}}^{\rm{NZ}} \leftarrow \mathcal{H}^{\rm{NZ}}$,
|
||
$\widetilde{\mathcal{H}}^{\rm{FD}} \leftarrow \mathcal{H}^{\rm{FD}}$ \;
|
||
}
|
||
}
|
||
|
||
}
|
||
令 $ \mathcal{l} \leftarrow \min \left\{ \widetilde{\mathcal{H}}^{\rm{PT}}_h \mid \widetilde{\mathcal{H}}^{\rm{PT}}_h > 0, h \in H \right\}$ \;
|
||
|
||
\lForEach{$h \in H$}
|
||
{
|
||
$s \leftarrow s^* + \left( h - 1\right) \cdot \tau$,
|
||
$i \leftarrow \mathcal{F}^{\rm{CP}}_{s}$,
|
||
$ \psi_i \leftarrow \psi_i - \mathcal{l} $
|
||
}
|
||
|
||
\If {$ \sum_{h \in H} \widetilde{\mathcal{H}}^{\rm{PT}}_h > 0$ \rm{\textbf{or}} $ \sum_{s \in S}\mathcal{F}^{\rm{PT}}_s = 0$}
|
||
{
|
||
\vspace{0.2em}
|
||
添加$\widetilde{\mathcal{H}}^{\rm{CP}}$至元件分配解$\mathcal{C}$,添加$\mathcal{l}$至周期组索引集$\mathcal{K}$,不重复地添加$\widetilde{\mathcal{H}}^{\rm{NZ}}$至吸嘴模式集$\mathcal{M}$ \;
|
||
}
|
||
}
|
||
\end{algorithm}
|
||
|
||
在扫描过程中,各贴片头对齐槽位中所包含的元件贴装点存在差异,长短期目标旨在反映不同拾取策略下元件拾取次数的变化。
|
||
其中,短期拾取目标指的是在拾取过程中,同时从所有贴片头的对齐槽位中拾取元件,直至至少有一个槽位内贴装点全部被拾取完。
|
||
对于在此轮拾取中未被完全取空的槽位,可以在后续的扫描环节中与其他槽位构成同步拾取;
|
||
而长期拾取目标则采取一种贪心策略,即从对齐的槽位中拾取全部贴装点,其拾取次数等于所有对齐槽位中元件贴装数的最大值。
|
||
在短期目标中,重点在于合并所有贴片头的拾取动作,以实现整体上的拾取效率的提升。相比之下,长期目标则更侧重于当前对齐槽位所能达成的同步取料,而不考虑和其他槽位构成的同步拾取。
|
||
短期目标可以被视为对当前贴片头-元件分配结果的即时反馈,而长期目标则是对整个拾取过程效率的全局性评估。
|
||
算法\ref{ch3:algorithm:long-short-objective}介绍了长短期拾取子目标的计算方法,其中的目标值是指贴片头所合并的拾取次数。
|
||
通过长短期拾取子目标的加权和,可以实现对当前的贴片头-元件分配结果的综合性评估。
|
||
|
||
\vspace{0.6em}
|
||
\begin{algorithm}[H]
|
||
\small
|
||
\AlgoBiCaption{长短期拾取子目标计算函数}{Long- and short-term sub-objective of pick-up calculation functions}
|
||
\label{ch3:algorithm:long-short-objective}
|
||
|
||
\Input{贴片头分配的元件类型$\mathcal{H}^{\rm{CP}}$,贴装点数 $\mathcal{H}^{\rm{PT}}$,吸嘴类型$\mathcal{H}^{\rm{NZ}}$,吸嘴模式$\mathcal{N}$}
|
||
\Output{短期目标 $V^{\rm{SO}}$和长期目标 $V^{\rm{LO}}$}
|
||
|
||
记$\mathcal{h}$为贴装点非空的贴片头数,$\mathcal{n}$ 为吸嘴更换数,有 $\mathcal{h} = \left| H \right| - \left| \left\lbrace h \mid \mathcal{H}^{\rm{PT}}_h > 0, h \in H \right\rbrace \right| - 1 $,
|
||
$\mathcal{n} = \sum_{h \in H} \left| \mathcal{N}_h - \mathcal{H}^{\rm{NZ}}_h \right|$ \;
|
||
\vspace{0.2em}
|
||
令$V^{\rm{SO}} \leftarrow T^{\rm{PU}} \cdot \mathcal{h} - T^{\rm{NZ}} \cdot \mathcal{n} $,$V^{\rm{LO}} \leftarrow - T^{\rm{NZ}} \cdot \mathcal{n}$ \;
|
||
\tcc{贴片头上仍有分配的贴装点}
|
||
\While {$\sum_{h \in H} \mathcal{H}^{\rm{PT}}_h \neq 0$}
|
||
{
|
||
令最小拾贴周期数$\mathcal{l} \leftarrow \min \left\lbrace \mathcal{H}^{\rm{PT}}_{h} \mid \mathcal{H}^{\rm{PT}}_{h} > 0, h \in H \right\rbrace $ \;
|
||
\vspace{0.2em}
|
||
|
||
令$V^{\rm{LO}} \leftarrow V^{\rm{LO}} + T^{\rm{PU}} \cdot \mathcal{h} \cdot \mathcal{l} $,$\mathcal{H}^{\rm{PT}}_h \leftarrow \mathcal{H}^{\rm{PT}}_h - \mathcal{l} $,$\forall h \in \left\{ h^\prime \mid \mathcal{H}^{\rm{PT}}_{h^\prime} > 0, h^\prime \in H \right\}$\;
|
||
|
||
\vspace{0.2em}
|
||
令$\mathcal{h} = \left| H \right| - \left| \left\lbrace h \mid \mathcal{H}^{\rm{PT}}_h > 0, h \in H \right\rbrace \right| - 1 $ \;
|
||
}
|
||
\end{algorithm}
|
||
\vspace{0.6em}
|
||
|
||
\subsubsection{实现细节}
|
||
|
||
为增强贴片头-元件分配启发式的适用范围,提升算法的运算效率和贴片头的拾取过程的效率,本小节从以下几个角度对算法做补充说明:
|
||
|
||
|
||
1)\emph{同一周期内同类元件的拾取}
|
||
|
||
同一拾贴周期内,不同贴片头能从各自的对齐槽位中拾取相同类型的元件。
|
||
算法\ref{ch3:algorithm:compo-assign}讨论了元件仅由单一供料器提供的情形。
|
||
对于元件有多个供料器可用时,
|
||
在进行贴片头-元件分配之前,一种预扫描策略用于处理同类元件的拾取分配,该策略通过确定对齐槽位中各类型元件对应的贴片头数,将贴装点进行均分。
|
||
均分后的点数代表槽位内供料器的实际贴装点数,该值仅用于计算后续的目标函数值以及贴片头的拾取点数。
|
||
|
||
2)\emph{贴片头可拾取元件类型的限制}
|
||
|
||
为满足不同封装元件的组装需求,贴片头装配有多种类型的吸嘴。
|
||
机械结构的特殊设计可能导致某些特定类型的吸嘴只能安装在指定的贴片头上,从而限制了其所能拾取的元件类型。
|
||
为解决这一问题,算法在扫描分配元件过程中可限定贴片头可拾取元件的集合。
|
||
此外,当贴片头无法正常拾贴元件时,扫描算法也可通过将可分配元件集合置空,以实现禁用贴片头的功能。
|
||
|
||
3)\emph{连续作业的吸嘴更换指标}
|
||
|
||
在吸嘴更换过程中,仅考虑吸嘴模式的匹配是不充分的。一个更为准确的计算方式是考虑连续作业带来的吸嘴更换,即当前分配的元件组装所需的吸嘴更换与下一周期的吸嘴更换。
|
||
记$\mathcal{N}$为当前匹配的吸嘴模式、$\widetilde{\mathcal{N}}$为下一组的吸嘴模型,则目标函数$V$被调整为
|
||
\begin{equation}
|
||
\begin{aligned}
|
||
V \leftarrow T^{\rm{PU}} \cdot \min \left\lbrace \mathcal{H}^{\rm{PT}}_h \mid \mathcal{H}^{\rm{PT}}_h > 0, h \in H \right\rbrace \cup \left\lbrace \psi_i \right\rbrace- T^{\rm{NZ}}\cdot \left( \sum_{h \in H} \left| \mathcal{N}_h - \sum_{j \in J} j \cdot \mu_{ij} \right| \right. \\ \left. + \sum_{h \in H} \left| \widetilde{\mathcal{N}}_h - \sum_{j \in J} j \cdot \mu_{ij} \right| \right) / 2
|
||
\end{aligned}
|
||
\end{equation}
|
||
|
||
4)\emph{拾取效率目标改进值的基准}
|
||
|
||
在为贴片头分配元件时,算法的基本原则是同步拾取的收益大于吸嘴更换的成本,即$V^{\rm{BASE}}=0$。
|
||
在吸嘴类型较多的组装任务中,更换吸嘴是必要的组装动作,而部分元件贴装点数较少可能导致拾取效率目标改进无法产生正收益,进而使搜索过程陷入死循环。因此,若在一轮搜索内算法未找到新解,则需动态下调$V^{\rm{BASE}}$的值,以确保搜索过程能够继续进行。
|
||
|
||
5)\emph{拾取过程的贴片头移动距离}
|
||
|
||
贴片头拾取过程中的移动路径同样会影响组装效率,在槽位相近的供料器中拾取元件可减少拾取过程的移动路径。因此,本小节在目标函数的评估$V$中引入了一个拾取移动的加权项。贴片头的拾取移动距离$\overline{D}^{\rm{PU}}$由供料器的槽位和当前遍历的槽位$s$共同决定,即
|
||
\begin{equation}
|
||
\overline{D}^{\rm{PU}} \leftarrow \mathcal{R} \left( \left\lbrace s \right\rbrace \cup \left\lbrace \mathcal{H}^{\rm{FD}}_h - \left(h - 1\right) \cdot \tau \mid \mathcal{H}^{\rm{FD}}_h > 0, h \in H \right\rbrace \right)
|
||
\end{equation}
|
||
式中,$\mathcal{R} \left( \cdot \right)$表示集合中最大值和最小值的差。
|
||
|
||
\section{实验设计}[Experimental design]
|
||
|
||
为说明本章提出算法的实际效果,本节选取了四种主流的表面组装过程优化方法进行对比实验验证,其中包括Ashayeri等\cite{ashayeri_aggregated_2011}提出的聚合混合整数规划法(Aggregated Mixed Integer Programming,AMIP)、Guo等\cite{geng_mcvrp-based_2019}提出的基于同步拾取组的混合遗传算法(Hybrid Genetic Algorithm,HGA)、Li等\cite{li_cell_2022}提出的元胞分裂遗传算法(Cell Division Genetic Algorithm,CDGA)以及一个内置于工业软件中的元件贴装优化器(Component Placer Optimizer,CPO)。
|
||
对比实验的选取兼顾了数学规划法和进化算法等多种方法。
|
||
其中,HGA和CDGA是基于进化算法的组装过程优化的代表方法,AMIP则是一种结合元件批处理技术的数学规划方法,能在可接受的时间内优化中等规模的数据。
|
||
本章提出的CTIM和AMIP模型由于变量和约束的规模差异较大,因而终止搜索时间分别设定为1小时和100秒。
|
||
实验所用的数据均来源于某生产车间的表面组装生产线,同表面组装过程相关的优化子目标权重与第2章相同。
|
||
|
||
\begin{table}
|
||
\small
|
||
\centering
|
||
\bicaption[ch3:table:pcb-data1]{}{中小规模PCB数据的基本参数}{Table $\!$}{Basic parameters of small- and medium-scale PCB data}
|
||
\begin{tabular}{p{2.4cm}<{\centering}p{0.75cm}<{\centering}p{0.75cm}<{\centering}p{0.75cm}<{\centering}p{0.75cm}<{\centering}p{0.75cm}<{\centering}p{0.75cm}<{\centering}p{0.75cm}<{\centering}p{0.75cm}<{\centering}p{0.75cm}<{\centering}p{0.75cm}<{\centering}}
|
||
\toprule
|
||
PCB & 2-1 & 2-2 & 2-3 & 2-4 & 2-5 & 2-6 & 2-7 & 2-8 & 2-9 & 2-10 \\
|
||
\midrule
|
||
|
||
吸嘴类型数 & 1 & 2 & 2 & 3 & 2 & 3 & 3 & 4 & 4 & 4 \\
|
||
元件类型数 & 3 & 4 & 5 & 5 & 6 & 7 & 8 & 9 & 10 & 12 \\
|
||
供料器数 & 5 & 4 & 6 & 6 & 8 & 8 & 8 & 9 & 11 & 15 \\
|
||
贴装点数 & 288 & 352 & 306 & 384 & 375 & 232 & 194 & 148 & 196 & 160 \\
|
||
\bottomrule
|
||
\end{tabular}
|
||
\end{table}
|
||
|
||
\subsection{基于模型的贴片头任务分配的对比实验}[Comparative experiments on the model-based head task assignment]
|
||
|
||
基于模型的贴片头任务分配过程适用于处理元件类型有限的中小规模数据。
|
||
表\ref{ch3:table:pcb-data1}中列出了 10 组用于比较PCB数据组2的基本参数,所有元件的供料器类型相同,算法通过吸嘴类型、元件类型、不同元件的可用供料器数和贴装点数确定一个贴片头任务分配的结果,部分贴装点数较多的元件配备有多个供料器以提高组装效率。
|
||
基于模型的优化算法在搜索过程中保留多个最优解,搜索池的大小设置为30,解池的容差为$10^{-4}$,辅助项$N$的大小等于数据的贴装点数。
|
||
对于中等规模的数据,完全求解模型是一个相当耗时的过程,CTIM的搜索终止条件在原有设定上增加了模型最优解的未改变时间$\mathcal{T}^{\rm{UC}}$满足式\eqref{ch3:equaton:model-terminate}。
|
||
\begin{equation}
|
||
\mathcal{T}^{\rm{UC}} > 0.9 \cdot \left( 1 - \frac{\mathcal{O}^{\rm BND}}{\mathcal{O}^{\rm BST}} \right)
|
||
\label{ch3:equaton:model-terminate}
|
||
\end{equation}
|
||
其中$\mathcal{O}^{\rm BST}$和$\mathcal{O}^{\rm BND}$分别为模型求解过程中的最好下界和最优已知可行目标值。
|
||
|
||
\begin{table}
|
||
\small
|
||
\bicaption[ch3:figure:small-z-value]{}{周期任务集成模型与其他主流算法的目标值比较}{Table $\!$}{\centering Comparison of the objectives value between cyclic task integration model and other mainstream algorithms}
|
||
\centering
|
||
\begin{tabular}{p{1cm}<{\centering}p{1.5cm}<{\centering}p{1cm}<{\centering}p{1cm}<{\centering}p{1cm}<{\centering}p{1cm}<{\centering}p{1cm}<{\centering}p{1cm}<{\centering}p{1cm}<{\centering}p{1cm}<{\centering}}
|
||
\toprule
|
||
\multirow{2}{*}{PCB} & CTIM & \multicolumn{2}{c}{CPO} & \multicolumn{2}{c}{HGA} & \multicolumn{2}{c}{AMIP} & \multicolumn{2}{c}{CDGA} \\
|
||
\cmidrule(lr){2-2} \cmidrule(lr){3-4} \cmidrule(lr){5-6} \cmidrule(lr){7-8} \cmidrule(lr){9-10}
|
||
& $\mathcal{O}^{\rm{CTIM}}$ & $\mathcal{O}^{\rm{CPO}}$ & $\mathcal{G}\left(\%\right)$ & $\mathcal{O}^{\rm{HGA}}$ & $\mathcal{G}\left(\%\right)$ & $\mathcal{O}^{\rm{AMIP}}$ & $\mathcal{G}\left(\%\right)$ & $\mathcal{O}^{\rm{CDGA}}$ & $\mathcal{G}\left(\%\right)$ \\
|
||
\midrule
|
||
2-1 & 30.912 & 35.682 & 15.43 & 43.824 & 41.77 & 38.544 & 24.69 & 39.659 & 28.30 \\
|
||
2-2 & 42.504 & 51.793 & 21.85 & 46.178 & 8.64 & 42.663 & 0.37 & 49.448 & 16.34 \\
|
||
2-3 & 29.052 & 42.948 & 47.83 & 31.008 & 6.73 & 48.609 & 67.32 & 45.766 & 57.53 \\
|
||
2-4 & 38.736 & 40.880 & 5.53 & 44.556 & 15.02 & 46.368 & 19.70 & 54.419 & 40.49 \\
|
||
2-5 & 39.913 & 48.786 & 22.23 & 59.749 & 49.70 & 62.745 & 57.20 & 47.530 & 19.08 \\
|
||
2-6 & 25.824 & 47.250 & 82.97 & 33.584 & 30.05 & 43.632 & 68.96 & 37.064 & 43.53 \\
|
||
2-7 & 25.710 & 41.964 & 63.22 & 25.188 & -2.03 & 37.248 & 44.88 & 29.429 & 14.47 \\
|
||
2-8 & 18.748 & 23.076 & 23.09 & 21.610 & 15.27 & 22.564 & 20.35 & 22.866 & 21.97 \\
|
||
2-9 & 25.029 & 26.664 & 6.53 & 26.174 & 4.57 & 32.160 & 28.49 & 32.227 & 28.76 \\
|
||
2-10 & 19.368 & 22.925 & 18.37 & 21.602 & 11.53 & 24.774 & 27.91 & 21.626 & 11.66 \\
|
||
\cmidrule(lr){1-10}
|
||
AVG & ~ & ~ & 30.71 & ~ & 18.13 & ~ & 35.99 & ~ & 28.21 \\
|
||
\bottomrule
|
||
\end{tabular}
|
||
\end{table}
|
||
|
||
|
||
本小节首先比较了基于CTIM的贴片头任务分配算法和其他主流研究算法拾贴周期数、同步拾取数和吸嘴更换数的加权值,如表\ref{ch3:figure:small-z-value}所示。比较结果中,工业软件内置的CPO、基于数学规划的AMIP以及基于进化算法的HGA和CDGA对应解的加权目标值分别为$\mathcal{O}^{\rm{CPO}}$,$\mathcal{O}^{\rm{AMIP}}$,$\mathcal{O}^{\rm{HGA}}$和$\mathcal{O}^{\rm{CDGA}}$,CTIM解的加权目标值记为$\mathcal{O}^{\rm{CTIM}}$。由表可知,本章提出的基于CTIM的算法和同样考虑了拾取效率的CPO、HGA和CDGA在组装效率上明显优于仅优化了拾贴周期和吸嘴更换的AMIP;HGA和CDGA在迭代搜索过程中有随机成分,结果输出上具备不确定性,整体的性能指标上也差于CTIM和CPO。整体上而言,基于CTIM的算法在加权组装效率目标方面优于其他主流研究,相较于CPO、HGA、AGM和CDGA在加权组装优化目标上分别提升了30.71\%、18.13\%、35.99\%和28.21\%。周期任务集成的建模策略提升了模型的可解性,实现了对问题整个解空间更全面的搜索。
|
||
|
||
|
||
|
||
降低模型复杂度和构造模型初始解是提升模型求解效率的有效途径,本小节将未进行模型增强(Non-Enhanced,NE)和未进行初始化(Non-Initialized,NI)的CTIM同原模型进行了比较。
|
||
在对比收敛过程时,实验所用的模型求解器仅能以秒为单位输出求解过程的中间结果,因而图\ref{ch3:figure:model-curve}中同一秒内的模型迭代收敛值为均匀间距插值的结果,与实际模型计算时间存在一定的偏差。
|
||
图\ref{ch3:figure:model-curve}中的实线、点划线和双划线分别对应原模型、未进行增强模型和未进行初始化模型的迭代过程,虚线则表示模型搜索初始解的截断部分。
|
||
对于贴片头任务分配模型,找到模型的初始解和完成模型的求解同样困难,PCB数据中2-3、2-5、2-7和2-8用了整个求解过程接近或超过半数的时间去构造模型的初始解。
|
||
模型的初始解虽然在理论上不改变模型的最优解,但其也是影响搜索过程收敛速度的重要因素。对于PCB数据2-6,求解器构造的初始解比启发式初始解更快地收敛至最终解,而对于PCB数据2-8,求解器构造的初始解收敛速度则相对较慢,导致最终解的质量仍无法收敛到原模型的解。除此之外,其他数据的启发式构造初始解均能使模型更快地收敛至最终解,提升了模型的求解效率。
|
||
在构造模型初始解时,本章提出的启发式构造算法仅对模型的主要决策变量进行了初始化,因而模型在不使用增强策略时确定的初始解质量相对较差。
|
||
模型增强有助于快速迭代收敛,PCB数据中2-6、2-7、2-8和2-9的最终迭代值仍与原模型的解存在明显偏差,且未增强的模型收敛速度更慢、迭代用时更长。
|
||
|
||
\begin{figure}[H]
|
||
\centering
|
||
\includegraphics[scale=0.965]{chapter3/model-curve.eps}
|
||
\bicaption[ch3:figure:model-curve]{}{不同模型设定条件下的目标值迭代收敛曲线}{Fig.$\!$}{\centering Iterative convergence curves of objective values under different model settings}
|
||
\end{figure}
|
||
|
||
\begin{table}
|
||
\small
|
||
\centering
|
||
\bicaption[ch3:table:mdl-time-cmp]{}{周期任务集成模型与其他主流算法的求解时间比较}{Table $\!$}{\centering Comparison of solving time between cyclic task integration model and other mainstream algorithms}
|
||
\begin{tabular}{
|
||
p{1.2cm}<{\centering}
|
||
p{1.5cm}<{\centering}p{1.5cm}<{\centering}p{1.5cm}<{\centering}p{1.5cm}<{\centering}p{1.5cm}<{\centering}}
|
||
\toprule
|
||
PCB & \makecell[c]{SPAPM\\(s)} & \makecell[c]{CTIM\\(s)} & \makecell[c]{HGA\\(s)} & \makecell[c]{AMIP\\(s)} & \makecell[c]{CDGA\\(s)} \\
|
||
\midrule
|
||
2-1 & 16.16 & 5.46 & 49.84 & 0.09 & 5.18 \\
|
||
2-2 & 109.83 & 6.95 & 38.36 & 0.11 & 4.05 \\
|
||
2-3 & 142.37 & 36.13 & 30.85 & 0.27 & 2.92 \\
|
||
2-4 & 205.47 & 12.01 & 36.25 & 0.28 & 4.67 \\
|
||
2-5 & 1044.94 & 90.47 & 61.51 & 0.95 & 2.82 \\
|
||
2-6 & -- & 81.71 & 41.31 & 0.58 & 2.13 \\
|
||
2-7 & 766.49 & 113.90 & 38.90 & 1.33 & 2.56 \\
|
||
2-8 & -- & 60.75 & 21.13 & 1.84 & 2.51 \\
|
||
2-9 & -- & 92.72 & 28.61 & 1.04 & 3.21 \\
|
||
2-10 & -- & 99.52 & 28.68 & 1.01 & 3.10 \\
|
||
\bottomrule
|
||
\end{tabular}
|
||
\end{table}
|
||
|
||
最后,本小节对比分析了多种优化策略在解决小规模PCB数据时的运算效率,如表\ref{ch3:table:mdl-time-cmp}所示。表中增加了单拾贴周期模型(Single PAP Model,SPAPM)项,其周期组内的拾贴周期数设定为1,用以说明周期任务分组策略的必要性。
|
||
SPAPM的迭代过程直至满足以下任一条件终止:模型求解时长超过1小时,或模型的解与CTIM解的一致。
|
||
在比较求解时间时,由于工业软件中CPO的核心算法未公开,加之不同实现方式间存在显著的效率差异,且集成的优化器包含数据输入、过程优化、结果输出等多个环节,难以准确获得优化求解时间,故CPO未纳入本次对比分析之中。
|
||
相较于其他方法,AMIP求解策略因在建模时简化了影响组装效率的多重因素考量,模型结构相对简单,从而有最高的求解效率。CDGA求解策略在处理简单数据时,得益于其高效的元胞分裂机制,同样保持了较高的求解速度。然而,HGA由于需同时考虑拾取组的组合优化,其求解效率不及AMIP和CDGA,尽管如此,其求解效率受问题规模增长的影响相较于CTIM而言较小。
|
||
|
||
周期任务分组作为一种有效提升搜索效率的手段,相较于SPAPM,CTIM具备更快的收敛速度,显著缩短了求解时间。对于PCB数据2-6和2-8,SPAPM模型的收敛速度显著放缓,且其解与CTIM的解之间存在持续偏差值;而对于PCB数据2-9和2-10,由于问题规模的扩大导致模型复杂度急剧增加,求解器甚至无法找到SPAPM模型的初始可行解,更无法对模型进行迭代搜索。
|
||
此外,随着问题规模的逐步扩大,本章所提出的CTIM在求解时间呈现上升趋势,说明其不再适用于解决大规模问题。
|
||
|
||
\subsection{基于启发式的贴片头任务分配的对比实验}[Comparative experiments on the heuristic-based head task assignment]
|
||
|
||
基于启发式的贴片头任务分配算法在参数设定方面与CTIM求解方法一致。启发式的优化方法无法在理论上保证解的最优性,为定量分析启发式算法解的质量,本小节首先围绕主要子目标的加权值及运算时间等指标在PCB数据组1上进行比较,对比HLFSH算法和基于模型的CTIM算法在中小规模数据优化时的表现,算法的主要性能指标加权值分别记为$\mathcal{O}^{\rm{HLFSH}}$和$\mathcal{O}^{\rm{CTIM}}$,优化运算时间分别记为$\mathcal{E}^{\rm{HLFSH}}$和$\mathcal{E}^{\rm{CTIM}}$,结果如表\ref{ch3:table:mdl-heuristic-cmp}所示。HLFSH优化过程是以增加拾贴周期数为代价提高同步拾取次数,较好地兼顾了不同子目标之间的优化结果。
|
||
根据子目标加权后所得的目标函数值可知,本章所提出的HLFSH算法与CTIM相比,平均差距为5.04\%,最大差距为9.85\%,这表明本章设计的启发式算法能达到或逼近模型求解的同等效果。
|
||
基于启发式的HLFSH算法同时大幅缩短了运算时间,相较于CTIM,HFLSH的问题求解时间平均缩短了97.41\%。随着模型规模的增大,基于模型的CTIM运算时间大幅增加,而HLFSH优化方法运算时间的增幅较小,这一特性使得该方法能够进一步拓展至更大规模的数据优化问题中,说明了启发式算法的实用性和可扩展性。
|
||
|
||
\begin{table}
|
||
\small
|
||
\centering
|
||
\bicaption[ch3:table:mdl-heuristic-cmp]{}{基于启发式的贴片头任务分配结果和模型的解比较}{Table $\!$}{\centering Comparison of solution of model-based and heuristic-based algorithm for head task assignment}
|
||
\begin{tabular}{p{1cm}<{\centering}
|
||
p{1.6cm}<{\centering}p{1.6cm}<{\centering}p{1.4cm}<{\centering}
|
||
p{1.6cm}<{\centering}p{1.6cm}<{\centering}p{1.6cm}<{\centering}}
|
||
\toprule
|
||
\multirow{2}{*}{PCB}& \multicolumn{3}{c}{目标值} & \multicolumn{3}{c}{运算时间} \\
|
||
\cmidrule(lr){2-4} \cmidrule(lr){5-7}
|
||
& $\mathcal{O}^{\rm{CTIM}}$ & $\mathcal{O}^{\rm{HLFSH}}$ & $\mathcal{G} \left( \% \right)$ & $\mathcal{E}^{\rm{CTIM}}$ (s) & $\mathcal{E}^{\rm{HLFSH}}$ (s) & $\mathcal{G} \left( \% \right)$ \\
|
||
\midrule
|
||
2-1 & 30.912 & 33.456 & 8.23 & 5.46 & 0.07 & 98.75 \\
|
||
2-2 & 42.504 & 46.270 & 8.86 & 6.95 & 0.37 & 94.71 \\
|
||
2-3 & 29.052 & 30.324 & 4.38 & 36.13 & 0.27 & 99.24 \\
|
||
2-4 & 38.736 & 39.372 & 1.64 & 12.01 & 0.73 & 93.92 \\
|
||
2-5 & 39.913 & 40.962 & 2.63 & 90.47 & 0.55 & 99.39 \\
|
||
2-6 & 25.824 & 28.368 & 9.85 & 81.71 & 0.84 & 98.97 \\
|
||
2-7 & 25.710 & 26.118 & 1.59 & 113.90 & 1.13 & 99.01 \\
|
||
2-8 & 18.748 & 20.179 & 7.63 & 60.75 & 2.18 & 96.41 \\
|
||
2-9 & 25.029 & 25.800 & 3.08 & 92.72 & 3.06 & 96.69 \\
|
||
2-10 & 19.368 & 19.845 & 2.46 & 99.52 & 2.96 & 97.03 \\
|
||
\cmidrule(lr){1-7}
|
||
AVG & ~ & ~ & 5.04 & ~ & ~ & 97.41 \\
|
||
\bottomrule
|
||
\end{tabular}
|
||
\end{table}
|
||
|
||
|
||
|
||
为验证基于启发式的贴片头任务分配算法在大规模数据上的表现,10组具有不同特性的PCB数据组3用于进一步比较HLFSH算法的实际效果,其参数如表\ref{ch3:table:large_data}所示。本小节选取的PCB数据具有更多的元件类型和贴装点数,供料器的可用数量根据元件贴装点数和元件类型确定,且所有元件的供料器类型相同。
|
||
PCB数据的复杂性主要体现在两个方面:一是贴装点数较多,二是元件类型更多样。为优化更大规模数据的组装过程,基于CTIM的算法通过整合周期任务的策略,有效地解决了在有限元件类型条件下,贴装点数量较多的组装过程中的优化问题。
|
||
相比之下,启发式的搜索策略则将重点放在了优化供料器分配槽位、平衡贴片头拾取过程的子目标指标上。启发式方法通过灵活调整搜索策略,在面对复杂元件类型和大规模PCB数据时,依然保持较高的搜索效率和优化性能。
|
||
% 这种方法不仅适用于元件类型多样、数量庞大的组装场景,还能够在保证一定优化效果的同时,显著降低计算成本和时间消耗。
|
||
|
||
\begin{table}[H]
|
||
\small
|
||
\centering
|
||
\bicaption[ch3:table:large_data]{}{大规模PCB数据的基本参数}{Table $\!$}{Basic parameters of large-scale PCB data}
|
||
\begin{tabular}{p{2.5cm}<{\centering}p{0.75cm}<{\centering}p{0.75cm}<{\centering}p{0.75cm}<{\centering}p{0.75cm}<{\centering}p{0.75cm}<{\centering}p{0.75cm}<{\centering}p{0.75cm}<{\centering}p{0.75cm}<{\centering}p{0.75cm}<{\centering}p{0.75cm}<{\centering}p{0.75cm}<{\centering}p{0.75cm}<{\centering}}
|
||
\toprule
|
||
PCB & 3-1 & 3-2 & 3-3 & 3-4 & 3-5 & 3-6 & 3-7 & 3-8 & 3-9 & 3-10 \\
|
||
\midrule
|
||
吸嘴类型数 & 1 & 1 & 2 & 3 & 3 & 3 & 4 & 3 & 4 & 4 \\
|
||
元件类型数 & 7 & 18 & 13 & 40 & 16 & 20 & 24 & 42 & 29 & 40 \\
|
||
可用供料器数 & 9 & 18 & 18 & 50 & 16 & 28 & 26 & 46 & 31 & 42 \\
|
||
贴装点数 & 564 & 176 & 264 & 546 & 114 & 150 & 236 & 384 & 165 & 204 \\
|
||
\bottomrule
|
||
\end{tabular}
|
||
\end{table}
|
||
|
||
|
||
|
||
表\ref{ch3:table:large-z-value}进一步对比了HLFSH算法与其他主流优化策略在加权目标值方面的表现。具体而言,HLFSH算法与工业软件所用的CPO在平衡关键性能指标方面展现出显著优势,其加权组装效率相对更高。相较于CPO,HLFSH在处理复杂数据时能够取得更优的结果。此外,针对提升拾取效率的策略,HGA和CDGA开展了相关研究,对于元件类型较多的数据,在同样以进化算法为基础的算法框架下,HGA在整体组装效率上有出更优的表现。
|
||
CDGA在处理元件类型数相对较少的PCB数据3-1、3-3和3-5时,子目标加权值较优,而随着元件类型数的增加,CDGA优化所得的解的加权目标值与HLFSH的差距也呈现增大的趋势。
|
||
基于元启发式的CDGA以最小化周期数为主要目标,忽视了元件类型增多所导致的频繁吸嘴更换,而基于数学规划的AMIP在构建优化目标时未能充分优化拾取过程,导致这两种优化方法相较其他算法在解决大规模数据优化时组装效率最低。
|
||
|
||
\begin{table}[H]
|
||
\small
|
||
\bicaption[ch3:table:large-z-value]{}{分层前瞻扫描启发式与其他主流算法的加权目标值比较}{Table $\!$}{\centering Comparison of weighted objectives value of hierarchical look-forward scanning heuristic with other mainstream algorithms}
|
||
\centering
|
||
\begin{tabular}{p{1cm}<{\centering}p{1.5cm}<{\centering}p{1cm}<{\centering}p{1cm}<{\centering}p{1cm}<{\centering}p{1cm}<{\centering}p{1cm}<{\centering}p{1cm}<{\centering}p{1cm}<{\centering}p{1cm}<{\centering}}
|
||
\toprule
|
||
\multirow{2}{*}{PCB} & HLFSH & \multicolumn{2}{c}{CPO} & \multicolumn{2}{c}{HGA} & \multicolumn{2}{c}{AMIP} & \multicolumn{2}{c}{CDGA} \\
|
||
\cmidrule(lr){2-2} \cmidrule(lr){3-4} \cmidrule(lr){5-6} \cmidrule(lr){7-8} \cmidrule(lr){9-10}
|
||
& $\mathcal{O}^{\rm{HLFSH}}$ & $\mathcal{O}^{\rm{CPO}}$ & $\mathcal{G}\left(\%\right)$ & $\mathcal{O}^{\rm{HGA}}$ & $\mathcal{G}\left(\%\right)$ & $\mathcal{O}^{\rm{AMIP}}$ & $\mathcal{G}\left(\%\right)$ & $\mathcal{O}^{\rm{CDGA}}$ & $\mathcal{G}\left(\%\right)$ \\
|
||
\midrule
|
||
3-1 & 55.130 & 54.812 & -0.58 & 71.748 & 30.14 & 99.968 & 81.33 & 75.826 & 37.54 \\
|
||
3-2 & 18.048 & 18.048 & 0.00 & 20.640 & 14.36 & 29.496 & 63.43 & 26.542 & 47.07 \\
|
||
3-3 & 26.484 & 41.284 & 55.88 & 34.792 & 31.37 & 38.727 & 46.23 & 26.760 & 1.04 \\
|
||
3-4 & 50.058 & 53.657 & 7.19 & 70.013 & 39.86 & 90.444 & 80.68 & 91.000 & 81.79 \\
|
||
3-5 & 13.230 & 15.565 & 17.65 & 14.502 & 9.61 & 17.841 & 34.85 & 16.074 & 21.50 \\
|
||
3-6 & 17.245 & 18.642 & 8.10 & 23.637 & 37.07 & 19.312 & 11.99 & 31.308 & 81.55 \\
|
||
3-7 & 23.081 & 25.901 & 12.22 & 26.174 & 13.40 & 41.525 & 79.91 & 46.634 & 102.04 \\
|
||
3-8 & 40.477 & 44.694 & 10.42 & 51.906 & 28.24 & 70.369 & 73.85 & 108.037 & 166.91 \\
|
||
3-9 & 19.368 & 23.569 & 21.69 & 21.133 & 9.11 & 30.498 & 57.47 & 52.933 & 178.19 \\
|
||
3-10 & 24.663 & 26.488 & 7.40 & 26.110 & 5.87 & 35.793 & 45.13 & 68.607 & 178.18 \\
|
||
|
||
\cmidrule(lr){1-10}
|
||
AVG & ~ & ~ & 14.00 & ~ & 21.90 & ~ & 57.49 & ~ & 89.12 \\
|
||
\bottomrule
|
||
\end{tabular}
|
||
\end{table}
|
||
|
||
\begin{figure}
|
||
\centering
|
||
\includegraphics[scale=0.55]{chapter3/general-metric.eps}
|
||
\bicaption[ch3:figure:large-data]{}{分层前瞻扫描启发式与其他主流算法的子目标柱状图对比}{Fig.$\!$}{\centering Bar chart of sub-objectives comparison of hierarchical look-forward scanning heuristic with other mainstream algorithms}
|
||
\end{figure}
|
||
|
||
|
||
图\ref{ch3:figure:large-data}展示了不同优化算法在处理大规模数据时主要性能指标的对比柱状图。在表面组装过程中,吸嘴更换动作是一项相对耗时的任务,因此,HLFSH、CPO及HGA等算法在搜索过程中均采用尽可能减少吸嘴更换动作的策略。具体而言,HLFSH通过构建更多的拾贴周期来规避吸嘴更换,同时确保了更少的拾取元件次数;与之相对,CPO则以少量吸嘴更换为代价平衡了周期规划与拾取效率,实现了较优的性能。
|
||
HGA在优化中了禁止吸嘴更换以提升同步拾取能力,然而,在面对元件类型数较多的情况时,其对同步拾取组的合并处理能力受限,导致整体拾取效率仍低于HLFSH和CPO。另一方面,CDGA在元胞组合阶段引导供料器布局的分配,对拾取效率产生了一定程度的提升,但这一提升是以增加吸嘴更换次数为代价的,特别是在元件类型数较多时吸嘴更换次数会显著增加,因此,其组装效率也未能超越HLFSH和CPO。
|
||
AMIP因未考虑同步取料的设计,在对比方法中组装效率较低。此外,受限于数据规模,在处理PCB数据3-8、3-9和3-10时,AMIP在限定时间内无法求解出模型的最优解,也降低了模型解的质量。
|
||
|
||
相较于主流研究方法,本章提出的HLFSH算法和工业软件内置的CPO均可适用于不同的生产配置设定,包括预先安装供料器、多类型供料器槽位分配等情形。三种不同的测试用例用于比较供料器安装槽位约束下优化算法的实际效果。
|
||
其中,用例1根据Guo等\cite{geng_mcvrp-based_2019}提出的构建同步拾取组的方法进行供料器槽位分配,该供料器分布位置更接近于现场操作人员按照经验所安装的槽位;用例2和用例3则用于交叉验证HLFSH和CPO优化所得的供料器槽位分配作为约束时,两种优化算法在对方分配结果约束下的优化效果。
|
||
需要指出,用例1的供料器分配方式并不能充分利用全部可用供料器,HLFSH和CPO均需要根据已有供料器安装布局,对未分配的多余供料器进行分配,以提高拾取效率。
|
||
基于不同的供料器排布用例的优化目标值比较结果如表\ref{ch3:table:pre-feeder-cmp}所示。
|
||
由表可知,在加权性能指标上,不同的供料器布局会对最终优化结果搜索方向产生影响,HLFSH的整体表现优于CPO。
|
||
此外,本章提出的HLFSH将供料器分配和贴片头元件拾取分别讨论,因而采用其优化所得的供料器安装槽位重新优化时,优化结果将保持不变,这是CPO所不具备的。
|
||
|
||
\begin{table}
|
||
\small
|
||
\centering
|
||
\bicaption[ch3:table:pre-feeder-cmp]{}{分层前瞻启发式和工业求解器在不同供料器布局下优化加权目标值的比较}{Table $\!$}{\centering Comparison of weighted objective values between hierarchical look-forward scanning heuristic and industrial solver with different feeder arrangements}
|
||
|
||
\begin{tabular}{
|
||
p{0.9cm}<{\centering}
|
||
p{1.1cm}<{\centering}p{1.1cm}<{\centering}
|
||
p{1.1cm}<{\centering}
|
||
p{1.1cm}<{\centering}p{1.1cm}<{\centering}
|
||
p{1.1cm}<{\centering}
|
||
p{1.1cm}<{\centering}p{1.1cm}<{\centering}
|
||
p{1.1cm}<{\centering}}
|
||
\toprule
|
||
\multirow{2}{*}{PCB} & \multicolumn{3}{c}{布局1} & \multicolumn{3}{c}{布局2} & \multicolumn{3}{c}{布局3} \\
|
||
\cmidrule(lr){2-4} \cmidrule(lr){5-7} \cmidrule(lr){8-10}
|
||
& $\mathcal{O}^{\rm {CPO}}$ & $\mathcal{O}^{\rm {HLFSH}}$ & $\mathcal{G}$(\%) & $\mathcal{O}^{\rm {CPO}}$ & $\mathcal{O}^{\rm {HLFSH}}$ & $\mathcal{G}$(\%) & $\mathcal{O}^{\rm {CPO}}$ & $\mathcal{O}^{\rm {HLFSH}}$ & $\mathcal{G}$(\%) \\
|
||
|
||
\midrule
|
||
3-1 & 54.812 & 57.356 & -4.44 & 54.812 & 54.812 & 0.00 & 58.628 & 55.130 & 6.35 \\
|
||
3-2 & 18.684 & 18.684 & 0.00 & 18.048 & 18.366 & -1.73 & 18.048 & 18.048 & 0.00 \\
|
||
3-3 & 39.412 & 26.484 & 48.81 & 40.966 & 38.673 & 5.93 & 34.96 & 26.484 & 32.00 \\
|
||
3-4 & 56.042 & 52.300 & 7.15 & 60.224 & 58.25 & 3.39 & 57.155 & 50.058 & 14.18 \\
|
||
3-5 & 16.201 & 13.548 & 19.58 & 18.594 & 22.624 & -17.81 & 15.247 & 13.230 & 15.25 \\
|
||
3-6 & 19.437 & 17.245 & 12.71 & 29.593 & 21.202 & 39.58 & 20.081 & 17.245 & 16.45 \\
|
||
3-7 & 28.922 & 23.240 & 24.45 & 25.901 & 25.901 & 0.00 & 26.696 & 23.081 & 15.66 \\
|
||
3-8 & 47.413 & 41.272 & 14.88 & 53.11 & 48.217 & 10.15 & 47.715 & 40.477 & 17.88 \\
|
||
3-9 & 29.937 & 19.527 & 53.31 & 23.728 & 24.564 & -3.40 & 30.899 & 19.368 & 59.54 \\
|
||
3-10 & 32.503 & 24.186 & 34.39 & 26.488 & 32.108 & -17.50 & 28.237 & 24.663 & 14.49 \\
|
||
\cmidrule(lr){1-10}
|
||
AVG & ~ & ~ & 21.09 & ~ & ~ & 1.86 & ~ & ~ & 19.18 \\
|
||
\bottomrule
|
||
\end{tabular}
|
||
\end{table}
|
||
|
||
\begin{figure}
|
||
\centering
|
||
\includegraphics[scale=0.55]{chapter3/arrange-metric.eps}
|
||
\bicaption[ch3:figure:arrange-metric]{}{分层前瞻扫描启发式与工业求解器在不同供料器布局下的子目标柱状图对比}{Fig.$\!$}{\centering Bar chart of sub-objectives comparison between hierarchical look-forward scanning heuristic and industrial solver with different feeder arrangement}
|
||
\end{figure}
|
||
|
||
图\ref{ch3:figure:arrange-metric}比较了CPO和HLFSH算法在不同供料器配置下主要子目标的值,其中,“C”和“H”分别代表CPO和HLFSH。
|
||
在供料器布局1的设定下,HLFSH和CPO有较为接近的周期规划结果,而HLFSH能以较少的吸嘴更换取得和CPO相接近的拾取效率,因而整体指标更优。在工业软件供料器布局2的设定下,CPO能充分利用其分配的槽位达到更高的拾取效率,而HLFSH为降低吸嘴更换,拾取效率也有所下降,HLFSH和CPO有着相近的表现。
|
||
在本章提出的供料器布局3的设定下,CPO在吸嘴更换和拾取效率方面均不占优,相较于CPO,HLFSH以较小的拾贴周期数增加为代价提升了整体组装效率。
|
||
|
||
|
||
针对算法在大规模数据上的运行效率,本小节将不同优化算法的求解时间进行了对比分析,如表\ref{ch3:table:heuristic-time-cmp}所示。据此可知,HLFSH的优势在于能快速搜索大规模数据的高质量解,在所有对比方法中,HLFSH的搜索用时最短且随着问题规模的扩张增幅较小。
|
||
基于进化策略的HGA与CDGA在搜索时间上则相对较长,两者相比较而言,CDGA有更高的运算效率。
|
||
基于数学规划的AMIP由于模型结构简单,在处理部分数据时,其运算时间接近HLFSH。然而,随着数据规模的持续扩大,AMIP出现了在预定时间内无法求得模型最优解的问题。
|
||
|
||
\begin{table}[htbp]
|
||
\small
|
||
\centering
|
||
\bicaption[ch3:table:heuristic-time-cmp]{}{分层前瞻扫描启发式与其他主流算法的求解时间比较}{Table $\!$}{\centering Comparison of solving time of hierarchical look-forward scanning heuristic with other mainstream algorithms}
|
||
|
||
\begin{tabular}{
|
||
p{1.2cm}<{\centering}p{1.8cm}<{\centering}p{1.8cm}<{\centering}p{1.8cm}<{\centering}p{1.8cm}<{\centering}}
|
||
\toprule
|
||
PCB & HLFSH (s) & HGA (s) & AMIP (s) & CDGA (s) \\
|
||
\midrule
|
||
3-1 & 0.09 & 51.50 & 0.18 & 325.67 \\
|
||
3-2 & 0.14 & 39.57 & 0.15 & 6.88 \\
|
||
3-3 & 0.74 & 20.37 & 10.67 & 5.11 \\
|
||
3-4 & 2.39 & 85.68 & 25.69 & 27.94 \\
|
||
3-5 & 1.46 & 23.13 & 3.33 & 4.46 \\
|
||
3-6 & 3.49 & 40.65 & 4.00 & 6.01 \\
|
||
3-7 & 2.70 & 42.84 & 6.42 & 11.43 \\
|
||
3-8 & 7.53 & 129.18 & 100.00 & 20.43 \\
|
||
3-9 & 8.77 & 54.24 & 100.00 & 12.57 \\
|
||
3-10 & 11.64 & 78.72 & 100.00 & 21.63 \\
|
||
|
||
\bottomrule
|
||
\end{tabular}
|
||
\end{table}
|
||
|
||
|
||
HLFSH和CPO均可应用于不同类型供料器的优化。表\ref{ch3:table:multi-feeder-data}列出了PCB数据组4,共由5组数据构成,元件对应供料器具有不同占位数(槽位数)。其中,类型1供料器占据1个槽位,类型2和类型3供料器均占据2个槽位但具有不同的占位宽度,类型4供料器占据4个槽位,可用供料器数多于元件类型数。表\ref{ch3:table:multi-feeder-cmp}比较了HLFSH和CPO在解决不同类型供料器贴片头任务分配时主要子目标和加权目标的值。整体上而言,HLFSH在拾取次数上更具优势,同时减少了非必要的吸嘴更换,HLFSH相较于CPO在加权子目标的平均差距了20.03\%。
|
||
|
||
\begin{table}
|
||
\small
|
||
\centering
|
||
\bicaption[ch3:table:multi-feeder-data]{}{具有不同类型供料器的PCB数据的基本参数}{Table $\!$}{\centering Basic parameters of PCB data with different types of feeders}
|
||
\begin{tabular}{p{1.2cm}<{\centering}p{1.2cm}<{\centering}p{1.2cm}<{\centering}p{1.6cm}<{\centering}p{1.5cm}<{\centering}p{1.5cm}<{\centering}p{1.5cm}<{\centering}p{1.5cm}<{\centering}}
|
||
\toprule
|
||
\multirow{2}*{PCB} & \multirow{2}*{\makecell[c]{吸嘴\\类型数}} & \multirow{2}*{\makecell[c]{元件\\类型数}} & \multirow{2}*{贴装点数} & \multicolumn{4}{c}{可用供料器数} \\
|
||
\cmidrule(lr){5-8}
|
||
& & & & 类型1 & 类型2 & 类型3 & 类型4 \\
|
||
\midrule
|
||
4-1 & 2 & 16 & 78 & 10 & 4 & 2 & 1 \\
|
||
4-2 & 3 & 10 & 588 & 9 & 4 & 1 & 1 \\
|
||
4-3 & 3 & 14 & 126 & 11 & 1 & 1 & 3 \\
|
||
4-4 & 3 & 26 & 97 & 13 & 7 & 4 & 0 \\
|
||
4-5 & 4 & 23 & 110 & 14 & 7 & 2 & 0 \\
|
||
\bottomrule
|
||
\end{tabular}
|
||
\end{table}
|
||
|
||
\begin{table}
|
||
\small
|
||
\centering
|
||
\bicaption[ch3:table:multi-feeder-cmp]{}{启发式前瞻扫描和工业优化器选用多种类型、不同宽度供料器的加权目标值比较}{Table $\!$}{\centering Comparison of weighted objective values between hierarchical look-forward scanning heuristic and industrial solver with feeders of multiple types and width}
|
||
\begin{tabular}{p{1cm}<{\centering}
|
||
p{0.8cm}<{\centering}p{1.2cm}<{\centering}
|
||
p{0.8cm}<{\centering}p{1.2cm}<{\centering}
|
||
p{0.8cm}<{\centering}p{1.2cm}<{\centering}
|
||
p{1.2cm}<{\centering}p{1.2cm}<{\centering}p{1.2cm}<{\centering}
|
||
}
|
||
\toprule
|
||
\multirow{2}{*}{PCB} & \multicolumn{2}{c}{周期} & \multicolumn{2}{c}{吸嘴更换} & \multicolumn{2}{c}{拾取次数} & \multicolumn{3}{c}{目标值} \\
|
||
\cmidrule(lr){2-3} \cmidrule(lr){4-5} \cmidrule(lr){6-7} \cmidrule(lr){8-10}
|
||
& $\mathcal{O}^{\rm {CPO}}$ & $\mathcal{O}^{\rm {HLFSH}}$ & $\mathcal{O}^{\rm {CPO}}$ & $\mathcal{O}^{\rm {HLFSH}}$ & $\mathcal{O}^{\rm {CPO}}$ & $\mathcal{O}^{\rm {HLFSH}}$ & $\mathcal{O}^{\rm {CPO}}$ & $\mathcal{O}^{\rm {HLFSH}}$ & $\mathcal{G} \left( \% \right)$ \\
|
||
\midrule
|
||
4-1 & 15 & 22 & 4 & 0 & 31 & 31 & 13.299 & 12.101 & 9.90 \\
|
||
4-2 & 98 & 110 & 24 & 4 & 168 & 189 & 79.540 & 69.391 & 14.63 \\
|
||
4-3 & 24 & 24 & 0 & 0 & 50 & 36 & 15.774 & 13.548 & 16.43 \\
|
||
4-4 & 27 & 30 & 4 & 0 & 63 & 48 & 22.299 & 17.412 & 28.07 \\
|
||
4-5 & 19 & 21 & 4 & 0 & 52 & 43 & 17.942 & 13.683 & 31.13 \\
|
||
\cmidrule{1-10}
|
||
AVG & & & & & & & & & 20.03 \\
|
||
\bottomrule
|
||
\end{tabular}
|
||
\end{table}
|
||
|
||
|
||
|
||
|
||
\section{本章小结}[Summary of this chapter]
|
||
|
||
|
||
% 贴片头任务分配的结果决定了表面组装过程中效率相关的关键性能指标的值,
|
||
% 本章分别研究了基于数学规划的和启发式的贴片头任务分配算法。在第2章提出数学模型的基础上,本章进一步提出了基于周期任务集成的整数线性规划模型,该模型在优化影响组装过程效率的主要指标的同时,扩大了模型的可求解数据的适用范围。
|
||
% 为降低模型的计算复杂度,本章研究了运用启发式递归生成模型初始解的策略,加快了模型求解的速度,并从限制决策变量规模和压缩可行解域的角度降低了模型的复杂度;
|
||
% 提出一种带有路径预判的拾取模型解评估策略,用于估计模型解中建模困难的指标,从解集池中选择高质量的解作为路径规划的约束,从而提高了整体运算效率和解的质量。
|
||
% 对于大规模的数据,本章提出了基于分层前瞻扫描的贴片头任务分配算法,该算法在解决复杂的表面贴装优化问题时具备高效的搜索能力。
|
||
% 通过模拟拾取过程,算法从吸嘴模式出发,以不同的分配模式完成贴片头任务的分配过程。在供料器-槽位分配过程中,算法以最小化拾取次数和吸嘴更换次数为目标进行槽位分配;在贴片头-元件分配过程中,通过引入一系列约束条件、性能指标计算方式和前瞻性效率评估策略完成贴片头元件分配过程。
|
||
% 围绕主要性能指标,本章将提出的两类算法在不同规模的数据上同主流研究进行了对比验证。结果表明,周期任务集成模型能拓展应用到中等规模数据优化,模型改进策略有效地增强了模型的可解性。分层前瞻启发式的算法在中等规模数据上能与建模方法有相近的表现和更高的求解效率,在大规模数据上解的质量和运算效率的求解时间也优于主流研究的结果。
|
||
|
||
贴片头任务分配的结果决定了表面组装过程中效率相关的关键性能指标,本章分别从数学规划和启发式的角度研究了问题的求解方法。
|
||
为降低贴片头任务分配模型的复杂度,本章提出了基于周期任务集成的增强模型,研究了模型的初始解生成方法,从限制决策变量规模和压缩可行解域的角度降低了模型的复杂度,提出了一种带有路径预判的模型解评估策略,用于降低模型和路径规划问题耦合性。为优化更大规模的数据,本章进一步提出了基于分层前瞻扫描启发式的贴片头任务分配算法,从构造的吸嘴分配模式出发,在供料器-槽位分配过程中,以平衡元件拾取和吸嘴更换为目标进行槽位分配;在贴片头-元件分配过程中,通过引入一系列约束条件、性能指标计算方式和前瞻性效率评估策略完成分配过程。
|
||
最后,本章将提出的算法同主流研究进行了对比验证,结果表明,周期任务模型的改进策略提升了可解性,保证了解的近似最优性;启发式算法在中等规模数据上表现与模型解法相近但更高效,在大规模数据上解的质量和运算效率等指标优于主流研究。 |