system: [SYSTEM]

user: 4. 基于量子粒子群算法的模型优化 运用几何模型标定的参数进行Radon逆变换，可以发现进行复原的图像与实际图像出现了位置的偏移，主要原因是运用几何模型标定的角度参数精度不够，因此对系统参数的标定是尤为重要的。接下来用量子粒子群算法对该系统重新进行参数的标定，量子粒子群算法具有搜索能力和优化效率高于普通粒子群算法的优点。 4.1. QPSO算法 粒子群优化算法(Particle Swarm Optimization， PSO)是美国心理学家Kennedy和电气工程师Eberhart受鸟类捕食行为的启发，于1995年提出的一种群智能优化算法 [ 4 ]。将改进后的量子进化算法(QEA)融合到PSO中，李士勇和李盼池提出一种新颖的量子粒子群优化算法(Quantum Particle Swarms Optimization， QPSO) [ 5 ]。该算法采用量子位的概率幅来对粒子的位置进行编码，用量子旋转门实现对粒子位置的移动，用量子非门实现对粒子位置的变异以避免提前收敛。首先应该建立一个目标函数，由前面Radon变换分析可知附件1的数据 a i j 与附件2经过逆变换后的数据 的差异越小，则说明建模后的图像与实际图像越接近，因此建立这样一个目标函数 [ 6 ] [ 7 ]： f = ∑ i = 1 256 ∑ j = 1 256 | b i j − a i j | 其值可以作为粒子的适应度。 以射线初始角度和每次旋转的角度为优化变量 x n ， n = 1 ， 2 ，建立二维空间，其中 x min n ≤ x n ≤ x max n ， [ x min n ， x max n ] 为自变量的定义域。 下面给出具体的实现步骤： (1) 产生初始种群 在QPSO中，直接采用量子位的概率幅作为粒子位置进行编码，并且考虑到初始位置的随机性，采用如下所示编码方式： P i = [ cos Φ n 1 cos Φ n 2 sin Φ n 1 sin Φ n 2 ] ， 其中 Φ n m = 2 π × r a n d ， r a n d 为 ( 0 ， 1 ) 之间的随机数； n = 1 ， 2 ， ⋯ ， s ， s 为种群规模，这里取50；其中这些粒子占据量子态 | 0 〉 和 | 1 〉 两个位置(余弦位置和正弦位置)，对应的概率幅为： P Φ c o s = ( cos Φ n 1 ， cos Φ n 2 ) P Φ sin = ( sin Φ n 1 ， sin Φ n 2 ) (2) 解空间变换 在QPSO中，由于每个粒子在原空间每个维度可遍历的范围为 [ − 1 ， 1 ] ，为了计算每个粒子在当前位置的优劣性，需要对原空间进行映射，将其映射到对应的解空间。设粒子 P j 上第 n 个量子位为 [ α n m ， β n m ] T ，那么对应的解空间变量为： x n cos m = 1 2 [ x max n ( 1 + α n m ) + x min n ( 1 − α n m ) ] x n sin m = 1 2 [ x max n ( 1 + β n m ) + x min n ( 1 − β n m ) ] 由此可见，每个粒子对应两个解： | 0 〉 的概率幅 α n m 对应 x n cos m ， | 1 〉 的概率幅 β n m 对应 x n sin m ，其中 n = 1 ， 2 ， m = 1 ， 2 ， ⋯ ， 50 。 (3) 粒子状态更新 在传统PSO中，需对粒子进行速度和位置的更新，而在QPSO中，将速度的更新变为量子位幅角增量的更新： Δ Φ n m ( t + 1 ) = w Δ Φ n m ( t ) + c 1 r 1 ( Δ Φ l ) + c 2 r 2 ( Δ Φ g ) 其中 w 是惯性因子； c 1 ， c 2 是常数，它们分别称为自身因子和全局因子； r 1 ， r 2 是 [ 0 ， 1 ] 之间的随机数； Δ Φ l = { 2 π + Φ n l m − Φ n m ( Φ n l m − Φ n m < π ) Φ n l m − Φ n m ( − π ≤ Φ n l m − Φ n m ≤ π ) Φ n l m − Φ n m − 2 π ( Φ n l m − Φ n m > π ) Δ Φ g = { 2 π + Φ g m − Φ n m ( Φ g m − Φ n m < − π ) Φ g m − Φ n m ( − π ≤ Φ g m − Φ n m ≤ π ) Φ g m − Φ n m − 2 π ( Φ g m − Φ n m > π ) 将位置的更新变为量子位概率幅的更新(基于量子旋转门)： [ cos ( Φ n m ( t + 1 ) ) sin ( Φ n m ( t + 1 ) ) ] = [ cos ( Δ Φ n m ( t + 1 ) ) − sin ( Δ Φ n m ( t + 1 ) ) sin ( Δ Φ n m ( t + 1 ) ) cos ( Δ Φ n m ( t + 1 ) ) ] [ cos ( Φ n m ( t ) ) sin ( Φ n m ( t ) ) ] = [ cos ( Φ n m ( t ) + Δ Φ n m ( t + 1 ) ) sin ( Φ n m ( t ) + Δ Φ n m ( t + 1 ) ) ] 其中 n = 1 ， 2 ， ⋯ ， 50 ， m = 1 ， 2 。 (4) 变异处理 在QPSO中，引入量子非门作为变异算符，来避免算法的提前收敛： [ 0 1 1 0 ] [ cos ( Φ n m ) sin ( Φ n m ) ] = [ cos ( π 2 − Φ n m ) sin ( π 2 − Φ n m ) ] 其中 n = 1 ， 2 ， ⋯ ， 50 ， m = 1 ， 2 。 (5) QPSO算法步骤: Step 1 粒子群初始化。 Step 2 进行解空间变换，代入目标函数。如果粒子在当前的位置比自身记忆的最优位置还要优秀，就用当前位置替换最优位置，全局最优位置也是如此操作。 Step 3 对粒子进行量子幅角度和量子概率幅的更新。 Step 4 依照变异概率，对每个粒子进行变异操作。 Step 5 回到Step 2继续循环执行程序，直到满足收敛条件或者到达迭代次数。 其中QPSO参数设置：限定迭代次数200，惯性因子为0.5，自身因子为2，全局因子为2，变异概率为0.05。 4.2. 模型的求解 对于该算法，虽然没有量子计算机，但是可以利用MATLAB和QPSO算法的逻辑进行编程求解(这也进一步说明了该量子算法的逻辑可行性)，在第200代得到每次旋转转过的角度为1.002204671366208，初始时刻射线与水平线的夹角为−60.000000018920070，利用优化后的参数和附件2，对模板重新进行建模处理，求得结果如图4、图5所示： 图4. 基于QPSO的二维像素图 图5. 基于QPSO的三维模型图 将图3与图5进行对比，可以很明显的看出基于QPSO算法模拟重建的二维像素图与实际图更加接近，只有在下方有些许瑕疵，三维模型图的平面也更加的完整，整齐。下面将结果代入目标函数f，由目标函数的定义可以知道，它代表着模拟图与实际图之间的差异，因此目标函数越小说明模型效果越好，结果如表1所示，从表中可以明显看出QPSO算法更加的高效，准确。 在上述目标函数中，为了提高计算速度，没有将 b i j 乘以比例系数，现在将其乘入，并对图像进行高斯滤波，再将其代入目标函数(记为 f 1 )，此时结果如表1所示： 从表中可以看出，基于QPSO算法与高斯滤波的图像更加准确，差异最小。经过滤波后的三维重建图如图6所示： Table 1 The comparison of objective function of each algorithm and the comparison of the optimized objective functio 算法类型 目标函数 目标函数 几何模型算法 0.109251839 0.025 QPSO算法 0.107026897 0.0205 QPSO及高斯滤波 0.016 表1. 各算法目标函数对比以及优化后目标函数对比 图6. 基于QPSO与高斯滤波的三维重建图 从图中可以看出，基于QPSO与高斯滤波的三维重建图在上表面基本与原图一致，并且更加的光滑完整。此时，精度为1减去差异项的最小值，即1 − 0.0160 = 98.4%，这也进一步说明了QPSO算法的重要性。