1.基于黏菌觅食行为的迷宫问题仿生求解方法,其特征在于:利用黏菌觅食时的扩张与收缩行为对迷宫问题进行启发式求解,具体算法包括以下步骤:
步骤1,迷宫地图和人工黏菌的初始化;
步骤2,人工黏菌对迷宫地图进行路径搜索;
步骤3,人工黏菌优化迷宫路径;
步骤4,输出人工黏菌求解迷宫问题的解答;
步骤1、迷宫地图和人工黏菌的初始化:
获取迷宫地图,将迷宫地图中的像素分为可行走的通路和不可行走的障碍两大类,并将迷宫地图转换为节点网络图,每一个像素转换为一个网络节点;迷宫包括一个入口和一个出口,也可根据需要设置多个入口或多个出口,或者入口和出口共用同一个;将迷宫地图的节点分为两大类,一类是构成通路的节点,另一类是构成障碍的节点;计算迷宫地图中各节点的可达性值,构建迷宫地图网络中所有节点的可达性值矩阵;如果相邻的两个节点是迷宫中构成通路的相邻节点,则该两个节点之间是可达的;如果相邻的两个节点有一个或一个以上节点是迷宫通路中的障碍节点,则该两个节点是之间不可达的;对于二维地图,每个节点具有前、后、左、右共四个邻居节点,每个邻居具有可达或不可达两种情况;对于三维地图,每个节点具有上、下、前、后、左、右共六个邻居节点,比二维地图多了一个上层邻居和一个下层邻居,每个邻居具有可达或不可达两种情况;对人工黏菌初始化,将人工黏菌的细胞核固定在迷宫地图的入口节点作为起始节点,使用一个随机数初始化人工黏菌的黏变形体数量;设置黏变形体内迷宫节点集合为空集,所有黏变形体的迷宫节点集合组成的迷宫路径网络为空集,即初始化时黏变形体未发现迷宫地图节点或迷宫路径;清除黏变形体内营养成份值,黏变形体内暂无营养成份运输;初始化完成,进入步骤2;
步骤2、人工黏菌对迷宫地图进行路径搜索:
人工黏菌的黏变形体从迷宫地图的入口节点开始,在迷宫地图上四处扩张,搜索可达的迷宫节点,并将搜索到的可达迷宫节点添加进黏变形体的迷宫节点集合中,更新所有黏变形体的迷宫节点集合,更新所有黏变形体的迷宫节点集合组成的迷宫路径网络;黏变形体能够连接不同的迷宫节点进行营养成份运输;在没有找到迷宫出口的食物源之前,只有迷宫入口的食物源给黏菌提供营养成份;更长的迷宫路径上营养成份会更少,更短的迷宫路径上营养成份也越多,更新黏变形体内的营养成份值;黏变形体持续扩张,直到找到迷宫地图的出口节点作为终止节点,人工黏菌扩张过程结束,迷宫路径搜索完成,进入步骤3;
步骤3、人工黏菌优化迷宫路径:
在此步骤,人工黏菌开始持续收缩,即未连接出口的黏变形体因为营养成份的消耗开始减少,连接迷宫入口食物源和迷宫出口食物源的黏变形体因为营养成份充足而持续增加营养成份;更新黏变形体内的营养成份值;删除不在迷宫入口和迷宫出口路径上的迷宫节点,从迷宫死路尽头即不可达的迷宫节点开始删除,即将删除的迷宫节点从黏变形体的迷宫节点集合中删除,更新所有黏变形体的迷宫节点集合,更新所有黏变形体的迷宫节点集合组成的迷宫路径网络;黏变形体持续收缩,不连接迷宫入口和迷宫出口的黏变形体,其迷宫节点集合中的迷宫节点逐渐减少;直到黏变形体迷宫节点集合中所有节点全部都在连接迷宫入口和迷宫出口的路径上,无其他无效的分叉支路,人工黏菌收缩过程结束,迷宫路径优化完成,所生成的仅连接迷宫入口和迷宫出口的迷宫路径即为迷宫问题的可行解,进入步骤4;
步骤4、输出人工黏菌求解迷宫问题的解答:
输出最终的黏变形体的迷宫问题可行解,输出迷宫路径的长度和节点数;输出人工黏菌的相关计算参数,包括黏变形体的营养成份值,黏变形体的迷宫节点集合,迷宫路径上的迷宫节点序列编号。
2.根据权利要求1所述基于黏菌觅食行为的迷宫问题仿生求解方法,其特征在于:所述步骤1,迷宫地图和人工黏菌的初始化,包括三个子步骤:
子步骤1‑1:获取迷宫地图;将迷宫地图转换为节点网络图,对于二维地图,使用二维矩阵描述地图中的所有节点,一个矩阵元素对应一个节点,整个节点矩阵组成二维地图节点网络;对于三维地图,使用多个二维矩阵描述地图中的所有节点,二维矩阵的个数对应三维地图的层数,一个二维矩阵对应三维地图的一层,一个矩阵元素对应一层地图中的一个节点,所有节点矩阵组成三维地图节点网络;
子步骤1‑2:计算迷宫地图中各节点的可达性值;为所有节点建立可达性矩阵,对于二维地图,每个节点的可达性矩阵元素分别有四个矩阵元素,分别存储二维地图中该节点的前、后、左、右共四个邻居节点的可达性,矩阵元素的值为该节点到其邻居的可达性值;对于三维地图,每个节点的可达性矩阵元素分别六个矩阵元素,分别存储三维地图中该节点的上、下、前、后、左、右共六个邻居节点的可达性,矩阵元素的值为该节点到其邻居的可达性值;一个节点与某个邻居是可达的,即两个节点共同组成迷宫地图通路的一部分,可达性值为1;一个节点与某个邻居是不可达的,即两个节点至少有一个是迷宫地图的障碍部分,可达性值为0;
子步骤1‑3:人工黏菌初始化;将人工黏菌初始位置在迷宫地图的入口节点,人工黏菌的黏变形体数量初始化一个随机数,也可根据迷宫入口的分叉通路的数量设置;清除黏变形体的迷宫节点集合为空集,迷宫路径网络为空集;设置迷宫入口和迷宫出口的营养成份值,用于为黏变形体提供营养成份;清除黏变形体内营养成份值,设置黏变形体的营养成份学习因子。
3.根据权利要求1所述基于黏菌觅食行为的迷宫问题仿生求解方法,其特征在于:所述步骤2,人工黏菌对迷宫地图进行路径搜索,包括三个子步骤:
子步骤2‑1,人工黏菌搜索可达的迷宫节点;所有的黏变形体首先将迷宫地图的入口节点添加进黏变形体的迷宫节点集合,查询入口节点的可达性矩阵;几条黏变形体在不同方向上扩张,将下一个可达的邻居节点添加进自己的迷宫节点集合,再查询该邻居节点的可达性矩阵;如此不断重复,每个黏变形体都将搜索到的可达邻居节点不断添加进自己的迷宫节点集合中;更新所有黏变形体的迷宫节点集合,更新所有黏变形体的迷宫节点集合组成的迷宫路径网络;
子步骤2‑2,计算迷宫路径上营养成份值;每次有新的可达邻居节点添加进黏变形体的迷宫节点集合中时,就计算搜索到的节点数量和所有节点上的营养成份值;在没有找到迷宫出口之前,黏变形体找到的所有迷宫节点上的营养成份值按迷宫入口营养成份值除以搜索到的节点数量;更长的迷宫路径上,迷宫节点的营养成份值更低;更短的迷宫路径上,迷宫节点的营养成份也越多;更新黏菌搜索到的所有节点的营养成份值;
子步骤2‑3,人工黏菌寻找迷宫出口;黏变形体持续扩张,不断将搜索到的迷宫节点添加到迷宫节点集合,并计算营养成份值;直到有一条黏变形体搜索到迷宫地图的出口节点,并将迷宫出口添加到迷宫节点集合;搜索到的迷宫出口节点为终止节点,表示人工黏菌扩张过程结束,迷宫路径搜索完成;更新黏菌搜索到的所有节点的营养成份值,迷宫出口、迷宫入口同时向黏变形体提供营养成份,加倍提高迷宫路径上的所有节点的营养成份值。
4.根据权利要求1所述基于黏菌觅食行为的迷宫问题仿生求解方法,其特征在于:所述步骤3,人工黏菌优化迷宫路径,包括三个子步骤:
子步骤3‑1,人工黏菌开始持续收缩;在子步骤2‑3中,连接迷宫入口食物源和迷宫出口食物源的黏变形体因为营养成份加倍,迷宫路径上的所有迷宫节点的营养成份值成倍扩大;除了营养成份加倍的迷宫路径外,所有的黏变形体首先将自己迷宫节点集合远离迷宫入口一侧的节点删除;几条黏变形体在不同方向上收缩,判断各自的迷宫节点集合中最末一个节点是否营养成份加倍,如果营养成份未加倍则删除该节点,否则保留该节点;继续查询该节点的在迷宫节点集合中的前一个节点,判断其是否营养成份加倍,如果营养成份未加倍则删除该节点,否则保留该节点;如此不断重复,直到每个黏变形体迷宫节点集合中只剩下连接迷宫入口和迷宫出口的迷宫节点;更新所有黏变形体的迷宫节点集合,更新所有黏变形体的迷宫节点集合组成的迷宫路径网络;
子步骤3‑2,更新黏变形体内的营养成份值;每次有节点从迷宫节点集合中删除时,就计算该黏变形体上迷宫节点数量和所有节点上的营养成份值;但是,只连接了迷宫入口而未连接迷宫出口的黏变形体只有一侧提供营养成份,因为路径上节点的营养消耗而开始持续减少;营养成份减少的比例按预先定义的学习因子计算,低营养成份的迷宫节点更容易被删除;连接迷宫入口食物源和迷宫出口食物源的迷宫节点上的营养成份持续增加,高营养成份值的迷宫节点难以被删除;更新黏菌搜索到的所有节点的营养成份值;
子步骤3‑3,生成迷宫问题的可行解;黏变形体持续收缩,不连接迷宫入口和迷宫出口的黏变形体,逐渐删除其迷宫节点集合中的迷宫节点,直至迷宫节点集合为空集;最后,迷宫节点集合中的全部节点都在连接迷宫入口和迷宫出口的路径上;其他无效的分叉支路上的节点都会因为营养成份的持续消耗而被删除,当所有其他无效迷宫路径上的节点集合为空集时,则判断迷宫路径优化完成;此时,仅连接迷宫入口和迷宫出口的迷宫路径即可输出作为迷宫问题的可行解。
5.根据权利要求1所述基于黏菌觅食行为的迷宫问题仿生求解方法,其特征在于:所述步骤4,输出人工黏菌求解迷宫问题的解答,包括两个子步骤:
子步骤4‑1,迷宫问题可行解输出;输出最终的所有黏变形体的迷宫节点集合,组成迷宫路径的可行解,可行解的第一个节点为迷宫入口节点,可行解的最后一个节点为迷宫出口节点,并输出该集合组成的迷宫路径的长度和节点数;
子步骤4‑2,计算参数输出;输出人工黏菌的相关参数,包括黏变形体的营养成份值,每一条黏变形体的迷宫节点集合,迷宫路径上的迷宫节点序列编号。