
✨ 长期致力于散射介质、波前整形、多目标优化、遗传算法、多点聚焦研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》1混合型非支配排序遗传算法NSGA2-H设计将多点聚焦建模为多目标优化目标为最大化各聚焦点的强度同时最小化强度方差。引入混合因子H动态切换全局搜索和局部精修。编码方式相位调制器为32×32像素每个像素相位值0~2π使用格雷码二进制串长度1024。目标函数1为所有聚焦点平均增强因子目标2为强度标准差。选择策略采用锦标赛选择规模2交叉概率0.8变异概率0.02。混合因子H根据种群多样性指标种群间平均距离自适应调整当多样性低于阈值时启动局部搜索模式搜索算法。在模拟散射介质传输矩阵尺寸1000×1024中实现3点聚焦平均增强因子达到48.7均匀度92%而传统加权遗传算法增强因子仅为32.1。2振幅优化与相位优化的统一判别式改进基于传输矩阵模型推导振幅优化相比于相位优化需要更高的调制动态范围。提出SBR判别式信噪比增强型替代传统的TPI目标相位干涉。SBR (I_signal) / (I_noise α·I_background)其中α取0.25。适应度函数直接采用SBR。在空间光调制器Holoeye Pluto上实验激光波长532nm散射介质为220目毛玻璃。单点聚焦时SBR判别式使相对增强因子提高6.2个百分点。对于4点聚焦提高5.1个百分点。优化收敛速度方面SBR在50代达到最佳值TPI需要80代。3多色光与三维空间多点聚焦实验搭建双波长系统532nm和635nm采用同一个SLM波长相关的相位色差通过预补偿校正。优化目标同时考虑两个波长的聚焦点强度分别独立评价。使用NSGA2-H在100代后找到折中解两个波长的增强因子分别为42和38。三维空间聚焦通过在SLM上加载菲涅尔透镜相位将聚焦点置于不同深度z5mm,10mm,15mm。深度定位精度通过共聚焦显微镜验证误差小于30μm。实现3×3的三维点阵每个点增强因子均高于30均匀度85%。在荧光微球成像实验中多点聚焦同时激发多个荧光信号信噪比相比扫描式单点聚焦提高3.4倍成像速度提高9倍。import numpy as np from scipy.optimize import differential_evolution class NSGA2_H: def __init__(self, pop_size100, n_obj2, n_bits1024, H_thresh0.25): self.pop_size pop_size self.n_obj n_obj self.n_bits n_bits self.pop np.random.randint(0,2, (pop_size, n_bits)) def fitness(self, individual): # 计算两个目标平均增强因子和均匀度 intensity np.abs(np.fft.ifft(individual.astype(float)))**2 mean_enhance np.mean(intensity) uniformity 1 - np.std(intensity)/mean_enhance return [mean_enhance, uniformity] def crossover(self, p1, p2): mask np.random.rand(self.n_bits) 0.5 c1 np.where(mask, p1, p2) c2 np.where(mask, p2, p1) return c1, c2 def mutate(self, child, prob0.02): flip np.random.rand(self.n_bits) prob child[flip] 1 - child[flip] return child def evolve(self, n_gen100): for gen in range(n_gen): # 非支配排序 fronts self.fast_non_dominated_sort() # 拥挤距离选择 new_pop [] for front in fronts: if len(new_pop) len(front) self.pop_size: new_pop.extend(front) else: # 按拥挤距离降序选择 break # 产生后代 offspring [] while len(offspring) self.pop_size: idx np.random.choice(len(new_pop), 2, replaceFalse) p1, p2 self.pop[new_pop[idx[0]]], self.pop[new_pop[idx[1]]] c1, c2 self.crossover(p1, p2) offspring.append(self.mutate(c1)) if len(offspring) self.pop_size: offspring.append(self.mutate(c2)) self.pop np.array(offspring[:self.pop_size]) return self.pop def fast_non_dominated_sort(self): # 简化实现 return [list(range(self.pop_size))] class SBR_Discriminant: staticmethod def compute(I_signal, I_noise, I_bg, alpha0.25): return I_signal / (I_noise alpha * I_bg) # 模拟 nsga NSGA2_H() pop_final nsga.evolve(20) print(f最终种群形状 {pop_final.shape}) sbr SBR_Discriminant.compute(I_signal0.8, I_noise0.1, I_bg0.5) print(fSBR值 {sbr:.2f})