***数据集：Brandimarte标准数据集改进

**Brandimarte标准数据集：
   -第一行的数字分别表示：工件数量、机器数量、每个操作的平均机器数量（非必须）
   -矩阵的每一行表示一个工件：第一个数字表示工件的工序数量；第二个数字表示可以处理第一个工序的机器数量（k，k>=1）；之后有k对数据（机器号，加工时间），然后是第二次操作的数据，依此类推...
   示例：
   6   6   1   
   6   1   3   1   1   1   3   1   2   6   1   4   7   1   6   3   1   5   6   
   6   1   2   8   1   3   5   1   5   10  1   6   10  1   1   10  1   4   4   
   6   1   3   5   1   4   4   1   6   8   1   1   9   1   2   1   1   5   7   
   6   1   2   5   1   1   5   1   3   5   1   4   3   1   5   8   1   6   9   
   6   1   3   9   1   2   3   1   5   5   1   6   4   1   1   3   1   4   1   
   6   1   2   3   1   4   3   1   6   9   1   1   10  1   5   4   1   3   1   
   第一行：6个工件、6台机器、每个工序平均在1台机器上加工
   第二行：工件1有6个工序，第一个工序可以被机器3加工，加工时间为1


**机器损坏：
   1. 机器故障间隔与机器负载有关，其值均匀分布在[50, 70]；机器修复时间值均匀分布在[10, 20]
   2. 机器故障间隔与机器负载有关，其值均匀分布在[90, 100]；机器修复时间值均匀分布在[10, 20]（时间翻3倍）


**机器的加工功率：
		           Level 1		           Level 2		           Level 3
	  	加工功率	  空闲功率		  加工功率	  空闲功率		  加工功率	  空闲功率		  开机/关机功率
   机器1-15	   [30, 40]	   [0, 10]		   [40, 50]	   [10, 20]		   [50, 60]	   [20, 30]		      [80, 100]



***重调度策略：
（1）实时重调度：调度序列不变，等待机器修复好再进行加工
（2）基于机器负载的重调度：机器损坏前的调度序列保持不变，机器损坏后的调度序列按顺序选择机器负载最小的机器插入



****模型：Knowledge-driven Two-stage Memtic Algorithm

***第一阶段
**编码与解码：
   工序码：1 1 3 4 3 2 3 1；第一个1表示工件1的第一个工序，第二个1表示工件1的第二个工序
   机器码：1 3 2 2 3 2 1 1；按照O11,O12,O13,...,O21,O22,O23,....ONN排列
   机器速度码：1 1 2 3 1 1 2 3；与机器码一一映射


**混合种群初始化方法：
   工序码、机器速度码随机初始化
   机器码分配遵循以下3个准则：
   （1）全局机器负载最小准则：选择总机器负载最小的机器，若机器不止一个则从中随机选取，概率为0.3
   （2）最小加工时间准则：选择加工时间最小的机器，若机器不止一个则从中随机选取，概率为0.2
   （3）降低机器速度准则：机器随机选择，降低一档机器的加工速度，若机器加工速度为1则保持不变，概率为0.2
   （4）随机初始化，概率为0.3


**交叉与变异：
   *交叉：
   工序码采用IPOX交叉算子；机器码、机器速度码采用MPX交叉算子

   *变异：
   工序码采用SM（Swapping Mutation）变异算子；机器码、机器速度采用MPM（Multi-point Mutation）变异算子


**变邻域搜索：
（1）交换关键路径块上的前两个工序，如果不存在关键路径块则随机交换关键路径上的属于同一机器上的两个工件，否则保持不变
（2）交换关键路径块上的后两个工序，如果不存在关键路径块则随机交换关键路径上的属于同一机器上的两个工件，否则保持不变
（3）随机选取关键路径上的一个工序，将其随机插入到不同的备选机器上
（4）随机选取非关键路径上的一个工序，将其加工机器的机器速度降低一档


***第二阶段
**节能策略 
（1）使用右移策略，在不增加最大完工时间的基础上减小总能量消耗
（1）机器关闭/打开准则（Machine turn off rule）：如果关闭/打开所消耗的能量小于空闲所消耗的能量就将机器关闭/打开

   