摘要

本文研究了具有序列和机器相关设置时间的无关并行机调度问题。其目标是最小化制造周期。该问题通过组合Benders分解来解决。该方法收敛速度较慢。因此,引入了三个步骤来加速其收敛。第一个步骤是一种新方法,它包括在找到重复的最优解时终止主问题的执行。第二个过程基于多截技术。第三个步骤基于预热启动。将改进的Benders分解方案与Benders算法的数学公式和标准实现进行了比较。在实验中,使用了文献中的两个测试集,240和600个实例,最多60个作业和5台机器。对于第一组,所提出的方法比Benders算法的标准实现平均快21.85%。对于第二组,所提出的方法在600个实例中仅31个没有找到最优解,平均差距为0.07%,平均计算时间为377.86s、 其他方法的最佳结果分别为57、0.17%和573.89s、 分别。

1.简介

本文研究具有序列和机器相关设置时间的无关并行机调度问题(UPMSP-SMDST)。并行机调度问题在许多制造系统中得到了广泛的研究和应用[1]. 由于原材料、劳动力、能源和运输成本的不断上升,调度的作用目前对公司的规划至关重要[2]. 为了更多地了解这些问题,莫科托夫制作的调查[]可以咨询。大多数关于这些问题的文献都忽略了作业之间的设置时间。然而,阿拉瓦尔迪和索罗斯[4]提出了一项研究,该研究表明了考虑安装时间对制定更现实有效的计划的重要性。

UPMSP-SMDST是一个NP-hard问题,因为该问题在单机上的特殊情况等价于旅行商问题,即NP-hard[5]. 在使用精确方法解决该问题的少数研究中,Rocha等人[6]值得注意的是,它提出了一种分支定界方法,以最小化每项作业的完工时间和加权拖期总和。de Paula等人[7]基于时间索引公式的拉格朗日松弛,提出了一种无延迟松弛与剪切算法,以最小化总加权拖期。Tran和Beck[8]提出了一种基于逻辑Benders分解的最小化完工时间的算法。最后,Avalos-Rosales等人[1]探索了许多数学公式,用新的线性化方法计算最大持续时间。

大多数研究使用启发式和元启发式来求解UPMSP-SMDST。在这些论文中,de Paula等人[9]提出了一种基于可变邻域搜索的最小化完工时间和加权拖期总和的方法。Lin等人[10]提出了一种迭代贪婪启发式算法来最小化总延误。巴利拉达和鲁伊斯[11]使用两个版本的遗传算法来最小化makespan。Ying等人[12]提出了一种限制模拟退火算法来最小化最大完工时间,Lee等人[13]评估了一种基于禁忌搜索的最小化总延误的算法。Arnaout等人[14]提出了一种分两个阶段的蚁群算法来最小化makespan。最后,Avalos-Rosales等人[1]提出了三种基于多段和VNDS算法的方法来最小化makespan。

本研究选择组合Benders分解来求解UPMSP-SMDST,因为它已成功应用于多个调度问题([8,1519])。Benders分解方法包括将原始问题划分为主问题和更容易的子问题。在最小化问题中,主问题解决方案提供了一个下界(LB),子问题解决方案则提供了原始问题的上界(UB)。子问题用于评估主问题提供的解决方案的可行性,并在必要时生成称为Benders割的组合不等式,这些不等式被迭代地添加到主问题中,直到获得原始问题的最优解[20]. 随着弯板机切割的增加,UB和LB之间的差异减小,并且当,其中在一定的容差下,找到了最优解。这种方法也被称为基于逻辑的Benders分解。组合Bender分解是经典Benders分解的推广,因为子问题可以是任何组合问题,而不一定是线性或非线性规划问题[21].

本文的贡献在于提出了三个步骤,以加快组合Benders分解在UPMSP-SMDST中的收敛速度。第一个步骤是首次提出的,包括在找到重复的最优解时终止主问题的执行。第二个过程基于多切割技术,根据主问题执行过程中发现的质量解决方案,在每次迭代中生成多个折弯切割。第三个程序基于热启动技术,包括执行比原始主问题更容易、更快解决的受限主问题,更快生成折弯机切割。此外,通过具体的调整,这些程序可以应用于其他问题。

论文的其余部分组织如下。章节2介绍了UPMSP-SMDST的定义和实际数学公式。章节给出了Benders分解的定义,并对该方法的收敛加速技术进行了综述。它还描述了创建本文所提方法的拟议程序及其组合,即改进的组合Benders分解(ICBD)。章节4给出了计算实验的结果,比较了最佳数学公式、Benders分解的标准实现和ICBD。在节中5,给出了结论。

2.问题制定

在UPMSP-SMDST中个作业的调度在一个集合中机器数量。每项工作需要处理时间在机器上.系统机器无关,这意味着该作业可以具有比作业更长的处理时间在特定机器上,尽管在另一台机器上不可能是这样。有一个设置时间,,对应于作业结束之间所需的时间以及工作的开始在机器上。在此模型中,有必要使用虚拟作业0,其所有参数均为零。此外,它是序列的第一个和最后一个作业,其中是一组作业加上虚拟作业0。该问题的目标是确定机器的作业分配时间表,以最小化完工时间。使用Graham等人的三元素符号[22],这个问题可以分为.

目前,Avalos-Rosales等人提出了UPMSP-SMDST的最佳数学模型[1]. 在这个模型中,如果作业为1在机器中处理(否则为0),如果作业为1在作业后立即处理在机器中(否则为0),表示作业的完成时间、和是解决方案的最大跨度。模型本身如下:目的(1)最小化解决方案的makespan。约束条件(2)确保每个作业仅由一台机器处理。约束条件()和(4)确保每个作业分别只有一个前任和一个继任者。制约因素(5)确保每台机器上最多安排一个作业作为第一个作业。约束条件(6)是一种新的线性化方法,用于计算独立于,这是一个非常高的值常量。然而,值得注意的是,Tran和Beck[8]是第一个提出这种约束以加强主问题的人。约束条件(7)确保工作的正确顺序,并消除子循环的形成;也就是说,如果作业完成时间应大于或等于作业的完成时间,如果,这些约束变得多余。制约因素(8)还定义解决方案的makespan。制约因素(9)将0指定给虚拟作业的完成时间。制约因素(10)至(12)定义变量的非负性和完整性。最后,约束(6)负责此模型相对于应用于此问题的其他模型的效率。

3.组合折弯机分解

组合Benders分解可用于将UPMSP-SMDST分解为机器上作业分配的主问题在单个机器上调度子问题。子问题用于评估主问题找到的解决方案的可行性,并在需要时生成折弯机切割。Tran和Beck首先提出了UPMSP-SMDST的标准实现方法[8]. 然而,该方法的直接应用收敛缓慢。因此,本文提出了三种加速收敛的方法。

与这种缓慢收敛相关的主要问题是(i)主问题和子问题的运行时间,以及(ii)生成的切割的质量[23]. 为了开发加速Benders分解收敛的技术,已经进行了许多研究。它们可以分为两种主要方法。第一种方法使用策略来减少解决主问题的计算工作量,第二种方法生成更有效的切割来消除不可行或次优的解决方案[24]. 由于从主问题的任何解决方案生成的折弯机切割都是有效的,因此可以创建多种类型的切割([2329])。McDaniel和Devine[30]建议使用热启动技术,通过放松整数变量,使用主问题的解决方案生成切割。Wheatley等人[31]开发了一个称为限制与分解的方案,该方案包括放松原始主问题的整数变量并执行它。当该问题没有生成更多的切割时,该技术将返回到原始主问题。杰弗里恩和格雷夫斯[32]提出了一种方案,每次找到一个比现有解更好的可行解时,生成Benders切割。该策略避免了为了生成折弯机切割而必须在最后解决主问题。它还可以节省计算时间。科特和劳顿[33]演示了使用启发式方法为主问题找到好的解决方案的好处。类似地,Rei等人[26]使用了Fischetti和Lodi的本地分支策略[34]探索主问题获得的每个解的邻域,以检测重复的最优解。普贾里和比斯利[35]使用遗传算法和启发式算法寻找主问题的可行解。Sherali和Lunday[24]建议为主问题生成一组初始切割。黄和郑[36]提出了一种可行割方法来迭代去除具有某些特征的不可行解。另一种策略是在开始该方法之前,在主问题中提出并引入有效的不等式,以消除不可行的解([27,37,38])。在每次迭代中生成多个高质量折弯机切割称为多切割技术[39]. Magnanti和Wong[40]定义了退化Benders子问题的Pareto-optimal切割的概念,并应用了多切割技术。

提出的加速程序旨在减少主问题和多截生成的执行时间。提高切割质量和数量的方法,如帕累托最优切割[40],覆盖切割束[27],最大可行子系统[23],和最大化密度切割[28]在引用的其他方法中,没有使用,因为它们依赖于线性子问题,并且在研究的问题中,子问题是整数。文献中发现的有效不等式也未被使用,因为它们针对所解决的问题;从深度分析来看,我们没有为所研究的问题确定任何特定或通用的有效不等式。此外,我们测试了引用的两种加速方法:第一种是来自Geoffrion和Graves[32]第二个是Fischetti和Lodi的本地分支策略[34]. 但是,他们没有比我们建议的程序有更好的表现。建议的收敛加速程序如下。

3.1. 主问题执行的终止

在标准Benders分解中,有时主问题(LB)的最优解等于前一次迭代的最优解;也就是说,具有相同值的不同解决方案。因此,我们提出了一个程序,当发现重复的最优解时,可以提前终止主问题的执行。因此,当发生这种情况时,主问题不需要一直运行到最后,从而节省了计算时间。

提议1。如果在主问题执行期间,找到了与当前LB相等的新解决方案,则终止主问题的执行,并且LB保持相同的值。

证明。主问题的最优解值不能低于上一次迭代中找到的最优解的值。也就是说,给定迭代时的下限  根据定义,主问题获得的下界序列为。否则,前面的解决方案将不是最佳的。这是因为可以有多个具有相同值的最优解决方案。因此,在这种情况下,LB保持不变。

3.2. 多播

当识别出不可行的子问题时,将生成组合折弯切割(CBC)。在本研究中的问题中,当主问题找到机器的作业序列时,就会发生这种情况带有子循环。例如,考虑标记为1到6的六个作业。两个子周期分别为0-1-3-4-0和6-5-2-6。Tran和Beck[8]建议如下所示的切割。哪里是与机器关联的子问题中作业的完成时间迭代时,  是分配给机器的作业集迭代时、和是作业效果的上限分配给机器时的完成时间迭代时,计算为,,  也就是说,当工作不再是解决方案的一部分,LB的值可以减少到.

通过分析Tran and Back提出的削减[8]这是一个失败。给定假设的工作序列,如果工作已删除,仅设置时间对LB的影响为,如果,切割仍然有效;否则就不是了。因此,我们使用一个“不好”的切割,它只会消除已经找到的不可行的解决方案。根据一些作者的说法,这种切割可能非常微弱[41]但之所以使用它,是因为没有发现可以构建更强大的削减的特殊结构,也就是说,削减可以消除其他不可行或次优的解决方案。所做的唯一更改与(13)是要替换通过一个非常高的值常量。使用两种切割类型的Tran和Beck’Benders算法版本进行的测试表明,性能和获得的解决方案没有差异。我们对切割进行了更改,因为之前的切割不是所声称的分离切割,而是一个不好的切割。

使用Benders分解的标准实现进行的实验表明,除了最佳解决方案外,主问题还生成了许多高质量的解决方案。质量解决方案是指那些有价值的解决方案,  。如果该方法尚未终止,则下一次迭代的最优解可能是这些解中的一个。因此,这些解决方案,包括最佳解决方案,都存储在一个称为解决方案池的集合中。池的每个解决方案都由子问题求解,而不仅仅是最优解决方案,这就是为什么该过程是一个多切割过程。当发现解决方案池中机器的作业序列不可行时,如上所述生成CBC。这迫使主问题在下一次迭代中生成解决方案池以外的解决方案。因此,多截策略减少了方法收敛所需的迭代次数,从而减少了计算运行时间。

3.3. 暖启动

基于求解受限主问题的思想,提出了组合Benders分解的热启动过程。目的是更快地生产出高质量的CBC。许多作者表明,机器调度问题的时间索引公式的线性松弛所发现的强大下界为指导称为列表调度算法的原始启发式提供了有用的信息([4244])。在这个意义上,Benders分解主问题的线性松弛也提供了一个强大的下限。本研究中进行的测试表明,主问题的线性松弛解与整数最优解之间的差距平均为7%。此外,范朱尔·佩罗和鲁伊斯[45]结果表明,对于没有设置时间的并行机器上的调度问题,规模缩减启发式算法可以用很少的计算工作量生成高质量的解决方案。这些启发式算法使用一些聪明的标准来减少数学模型运行期间可用的变量数量。我们结合这两个想法来提出我们的受限主问题。

通过将主问题的一组变量设置为零,可以获得受限主问题,如下所示。首先,对主问题进行线性松弛。也就是说,变量将获得的非零值插入机器可用的作业集,表示为。此外,其余作业将插入机器不可用的作业集,表示为因此,使用变量执行受限主问题中的工作设置为0;也就是说,不能选择它们,而变量中的工作可以取0或1的值。为了增加每台机器上可用作业的数量,从而提高解决方案的质量,使用了以下尺寸缩减启发式。我们首先在中评估每项工作并选择对机器完工时间影响最小的一个  (),然后将其插入。要计算此效果,参数为每个作业计算。此参数是作业处理时间的总和在机器上,作业的最低设置时间工作之后,以及作业的最低设置时间作业前,其中; 也就是说,.工作用最小值已插入并从中删除。重复此过程,直到达到所需大小。

建议的热启动程序包括使用上述受限主问题的Benders分解,而不是所有可用作业的主问题(原始主问题)。因此,可以更快地解决主问题,从而更快地生成CBC。热启动程序分两个阶段执行,不同的作业百分比,因为他们的实际表现更好。每个阶段在固定的迭代次数后或当受限主问题的最优解等于UB时结束。我们观察到,受限主问题的最优解不是原问题的LB。

3.4. ICBD公司

主要问题是Avalos-Rosales等人提出的混合积分公式的松弛[1]用于UPMSP-SMDST。这种松弛消除了子循环的消除约束,即约束(7),并因此受到约束(8)和(10)。由于这个原因,主问题可能会找到具有子循环的作业序列,这是不可行的解决方案。然而,这种放松提供了一个紧密的LB,比完整的问题更容易解决。因此,这种放松将UPMSP-SMDST分解为作业分配和单机上的调度子问题,用于评估子循环的存在性。

给出主问题的解决方案,其中是机器作业序列的完成时间在主问题中,下一步是确定每台机器上是否存在任何子循环通过子问题。由此产生的子问题等价于带有向弧的旅行商问题,也称为非对称旅行商问题。在此表示中,作业是节点,节点之间的距离是作业之间的设置时间。序列的完成时间是节点之间的距离和作业的处理时间之和。对于每个迭代算法和机器,一个子问题生成及其完成时间找到。什么时候?,序列有一个子循环,因此生成CBC并将其添加到主问题中。最大的是迭代makespan.如果小于UB,则成为新的UB。此过程称为子问题求值,其伪代码如算法所示1.

(1) 给出了主问题的解决方案;
(2);
(3)对于直到  
(4);
(5)如果  (具有子周期)然后增加CBC;
(6)如果    然后  ;
(7)结束
(8)如果    然后  ;

提出的ICBD方法包括使用三个建议的过程和子问题求解主问题(MP),直到终止条件为真。在每次迭代中在ICBD中,主问题生成一个大小为根据第节中概述的多切割程序3.2.算法1评估每个解决方案。ICBD算法在algorithm中介绍2.

(1)开始
(2)小时0; UB公司+∞; 停止假;
(3)虽然(停止=假)
(4);
(5)解决;
(6)对于直到  //多刀
(7)子问题的评估(算法1);
(8)结束
(9)评估终止条件;
(10)结束时
(11)结束

算法2用于受限主问题和原始主问题。因此,此算法按顺序执行两次:一次在限制主问题的热启动过程中,另一次在原始主问题中。预热启动过程在其两个阶段结束时或其执行时间达到允许的最大时间时终止。当最优条件满足时,原主问题终止或者达到允许的总运行时间。重要的是要注意,在热启动过程中,主问题的最优解不是问题的有效LB,因为它没有所有可用的变量。

4.计算实验

为了测试数学公式和Benders分解方法,使用API Concert Technology for C++实现了它们,并使用IBM ILOG CPLEX 12.5进行了求解。测试在配备Intel Core i5-2430M 2.40的Dell Inspiron笔记本电脑上进行带4个GHz处理器GB内存和Windows 7操作系统。任何情况下允许的最大运行时间为3600s.如果求解器无法找到最优解,则报告获得的最佳整数解。

使用两个不同的实例集进行计算实验:首先使用Tran和Beck使用的实例[8]接下来是瓦拉达和鲁伊斯的例子[11]Avalos-Roales等人[1]. 从Tran和Beck获得的测试实例[8]具有以下配置,包括作业数和机器数量。设置时间均匀分布在间隔:25–50。处理时间均匀分布在5到200之间。对于作业数和机器数的每种可能组合,都有10个复制,总共有240个实例。从Vallada和Ruiz(2011)获得的测试实例如下。设置时间均匀分布在三个间隔:1-49、1-99和1-124。处理时间均匀分布在1到99之间。每个可能的作业和机器组合以及设置时间都有10个复制,总共有600个实例。最后一个实例位于http://soa.iti.es.

这些实例按作业和机器的数量进行分组。因此,每个表行表示从Tran和Beck测试的10或30个实例的平均结果[8]或者瓦拉达和鲁伊斯[11]分别为。1比较了Tran和Beck的Benders分解方法的结果[8](T&B),以及使用Tran和Beck的实例提出的ICBD方法[8]. 第1列和第2列分别表示作业和机器的数量。表的其余部分分为三组。第一组是指MP的第一次迭代LB(LB)之间的平均百分比差距1)以及最优解(opt),计算为第二组和第三组显示了T&B和ICBD方法的结果。每个组的列表示迭代次数(iter)、切割次数(#cut)和运行时间(time)。

来自Tran和Beck的所有实例[8]用这两种方法在不到3600年的时间内得到了最优解s.来自表格1值得注意的是,T&B方法的平均迭代次数为1.69。更详细的分析表明,44.2%的实例仅用一次迭代求解(即MP的第一个解等于最优解),45.8%的实例用两次迭代求解。然而,90%的实例是在两次迭代中解决的,最大迭代次数为5次,每次迭代一次。因此,在这个实例集中,ICBD方法只使用多截程序执行,因为其他程序只消耗计算时间,不会带来任何好处。在组合10×2、10×3、10×4和20×4中,ICBD方法不会减少迭代次数或增加生成的切割次数。在其他组合中也有改进,但由于迭代次数少,改进也很小。运行时的最大差异在于有五台机器的实例,通常更困难。此外,与T&B方法相比,使用ICBD方法的最终运行时间减少了21.85%。

2显示了使用MP的第一个解决方案和Vallada和Ruiz实例的最佳解决方案(或最佳解决方案)获得的结果的平均百分比差距[11]. 第一列表示作业数;表的其余部分分为五组,前四组显示四台机器的结果,第五组显示每个作业数的平均结果。值得注意的是,差距大于使用Tran和Beck实例获得的差距[8]总体平均差距分别为1.54%和0.16%。间隙随着机器数量的增加而增加,但当增加作业数量时,情况正好相反。

ICBD方法使用的参数值如下所示。作业在集合中的百分比在热启动程序中,第一阶段和第二阶段分别设置为50%和75%。每个预热阶段的最大迭代次数为8次。尝试校准这些参数,尽管在测试的组合中,没有一个具有更好的统计性能,因此没有提供这些测试。执行两个预热启动阶段的最大允许时间为1800s.原始主问题的最大执行时间为3600s减去热启动过程的总执行时间。

比较了Avalos-Rosales等人的混合整数规划模型(MIP)的结果[1]使用Vallada和Ruiz的实例,使用T&B方法和ICBD(有三个拟议程序)方法[11]. 第1列和第2列分别表示作业数和机器数。表的其余部分分为三组。第一组是指优化之前未解决的实例数(#Uns.)。第二组显示了平均百分比差距(%差距),计算为。第三组显示求解实例时所用的平均CPU时间(以秒为单位)。每个组有三列,每个评估方法有一列。斜体的值表示作业和机器的特定组合的最佳结果。

比较这三种方法,ICBD对所分析的三个性能标准中的每一个都获得了最佳结果。它只解决了31个实例,MIP解决了57个实例,T&B有63个未解决的实例。ICBD获得了最低的总体平均差距0.07%,而T&B和MIP方法分别获得了0.17%和0.28%。在所有实例组中,ICBD获得的平均差距小于或等于其他方法。具有60个作业和5台机器的实例获得了最高的差距:MIP、T&B和ICBD方法分别获得了3.18%、1.08%和0.68%。ICBD的平均执行时间为377.86s、 而T&B和MIP方法为573.89s和706.28s、 分别是。ICBD方法使用的运行时间比T&B方法少51.88%,比使用Tran和Beck实例获得的值高[8]因为巴利拉达和鲁伊斯的例子[11]需要解决更多迭代;然后提出的改进方法取得了较好的效果。在T&B方法中,7.67%和15.17%的实例分别通过一次和两次迭代进行求解,比使用Tran和Beck的实例的百分比低得多[8]. 结果表明,Vallada和Ruiz实例更难获得最优解。因此,它证明了使用这三种改进程序的合理性。

对于ICBD和T&B,使用原始主问题的平均迭代次数分别为1.87和8.90,这种差异部分是由于热启动程序执行的平均迭代数6.63。将两次迭代的次数相加,ICBD方法平均使用8.5次迭代。虽然这两种方法的迭代次数几乎相同,但预热启动过程中的迭代比原始主问题的迭代消耗的计算时间更少,并且由于ICBD中有更多的迭代,这使得该方法更快。ICBD在预热启动过程中生成的CBC数量(56.76)高于在执行原始主问题期间生成的CBCs数量(10.07)。ICBD在两个阶段平均产生66.83个CBC,远高于T&B方法,后者平均产生32.40个CBC。这是因为多刀切割程序。在所有情况下,主问题的提前终止平均发生1.89次;然而,随着作业数量的增加,此过程的执行次数也会增加。例如,在有60个作业和3台机器的实例中,平均发生4.60次。对于ICBD,预热启动程序的平均运行时间为193.18s、 它大于原始主问题的平均运行时间,即184.68s.这两个运行时间的总和为377.86s、 小于T&B方法的平均运行时间(573.89s) ●●●●。这些结果如表所示4,其中第1列和第2列分别表示作业数和机器数。测量了T&B和ICBD方法在执行原始主问题期间的平均迭代次数(#iter)和切割次数(#cut)。此外,还测量了ICBD的主问题终止平均数(#ta)、热启动迭代次数(#ws-iter)和热启动程序(#ws-cut)中生成的CBC。还测量了热启动程序的平均ICBD执行时间(ws时间)和原始主问题(原始时间)。

5.结论

Benders分解的主问题提供了一个紧LB,因为第一次迭代后的最优性差距最多为UB的5%。因此,该方法的困难在于,主问题中可能存在许多比原始问题的最优解更小的解。在子问题找到并评估所有这些解决方案之前,该方法不能以0%的间隙终止。因此,面临的挑战是尽快找到这些解决方案。考虑到这一点,拟议的程序力求迅速找到它们。这些程序包括在发现重复LB时提前终止主问题执行,一次评估多个解决方案的多切割程序,以及最后一个热启动程序,在该程序中可以更快地找到质量解决方案。没有开发任何程序来加速子问题解决方案,因为它们比主问题消耗的计算时间少得多。

建议的加速程序以前从未应用于UPMSP-SMDST。此外,它们还可以用于任何其他问题的组合Benders分解。此外,结果表明,这些程序提高了Tran和Beck的Benders分解方案的性能[8]. 此外,该方法的性能也优于Avalos-Rosales等人的混合积分公式[1]相对于所分析的三个性能标准。

Geoffrion和Graves使用的方法[32]对于只解决一次主问题和每次找到更好的现有解时生成Benders切割的方法进行了测试,并使用了比传统方法更多的计算时间。为什么会发生这种情况的一个假设是,为了实现这个过程,有必要使用一个CPLEX回调函数来禁用用于提高CPLEX性能的动态搜索。Fischetti和Lodi的局部分支策略[34]也进行了测试,但它花费了更多的计算时间来找到建议程序的重复解决方案。

对未来工作的一个建议是,制定一个强有力的削减措施,消除更多的解决方案,而不仅仅是不可行的解决方案。另一个建议是开发一种启发式方法,在开始Benders分解程序之前,将质量切割插入主问题中,如Sherali和Lunday[24].

利益冲突

作者声明,本论文的出版不存在利益冲突。

致谢

作者想感谢Tony T.Tran博士提供了Tran和Beck中使用的实例[8]以及CNPq(国家科学技术发展委员会)、CAPES(高等教育人事改进协调)和FAPEMIG(米纳斯吉拉斯州研究支持基金会)提供财政支持。