✨ 长期致力于SMA、压电陶瓷、复合减震、克隆算法、电抗器结构、BP神经网络、振动台试验研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》(1) 自适应免疫记忆克隆算法的减震装置优化配置:提出了一种改进的人工免疫算法AIMCA,用于确定SMA-压电复合减震装置在电抗器结构中的最优数量和位置。算法融合克隆选择、免疫记忆和自适应交叉变异,种群规模60,克隆倍数5,记忆库容量20。以模态可控度和地震响应峰值加权为优化目标,对某85节点空间网架结构进行优化,得到在8层和12层柱间安装6个装置的最优方案。与遗传算法相比,AIMCA收敛速度提高34%,最终适应度值高出12%。(2) SMA-压电摩擦复合减震装置性能建模与BP神经网络预测:开发了一种双向出力的复合减震装置,由SMA丝提供复位能力,压电陶瓷驱动的摩擦单元提供可调阻尼。通过性能试验获得不同电压(0-120V)、位移幅值(2-12mm)和频率(0.5-2Hz)下的滞回曲线。采用位移、速度和电压作为输入,控制力作为输出,建立三层BP神经网络(输入层3节点,隐藏层8节点,输出层1节点),经优化后预测误差小于4%。利用AIMCA优化网络初始权值,训练迭代次数从1200次降至650次,泛化能力提升。(3) 振动台试验与混合半主动控制验证:设计了一个1:2缩比的10kV干式空心电抗器模型(高度1.8m,质量450kg),在其底部安装4个复合减震装置。输入El Centro和汶川地震波,峰值加速度0.3g。被动控制(无电压)时位移减震率38%,加速度减震率35%;混合半主动控制(模糊逻辑根据响应实时调节电压)进一步将减震率提升至52%和49%。试验后检查电抗器支柱绝缘子无裂纹,连接螺栓无松动。该方法已写入电力设施抗震设计规范送审稿。import numpy as np import tensorflow as tf from scipy.integrate import odeint from sklearn.preprocessing import StandardScaler class AIMCA: def __init__(self, pop_size60, clone_factor5, memory_size20): self.pop_size pop_size self.clone clone_factor self.memory [] self.mem_size memory_size def optimize(self, fitness_func, bounds, max_iter100): dim len(bounds) pop np.random.uniform([b[0] for b in bounds], [b[1] for b in bounds], (self.pop_size, dim)) fitness np.array([fitness_func(p) for p in pop]) self.memory pop[np.argsort(fitness)[:self.mem_size]].tolist() for _ in range(max_iter): # clone and mutate clones [] for i, p in enumerate(pop): n_clones max(1, int(self.clone * (1 - fitness[i]/np.sum(fitness)))) for _ in range(n_clones): clone p 0.1 * np.random.randn(dim) * (1 - _/max_iter) clone np.clip(clone, [b[0] for b in bounds], [b[1] for b in bounds]) clones.append(clone) clones np.array(clones) clone_fitness np.array([fitness_func(c) for c in clones]) # memory update combined list(zip(clones, clone_fitness)) combined.sort(keylambda x: x[1]) self.memory [c for c,_ in combined[:self.mem_size]] # selection next_pop [] for _ in range(self.pop_size): idx np.random.choice(len(clones), pnp.exp(-clone_fitness)/np.sum(np.exp(-clone_fitness))) next_pop.append(clones[idx]) pop np.array(next_pop) fitness np.array([fitness_func(p) for p in pop]) return self.memory[0] class SMA_Piezo_Damper: def __init__(self): self.model None self.scaler_X StandardScaler() self.scaler_y StandardScaler() def build_nn(self): model tf.keras.Sequential([ tf.keras.layers.Dense(8, activationtanh, input_shape(3,)), tf.keras.layers.Dense(1) ]) model.compile(optimizeradam, lossmse) self.model model def train(self, X, y): X_scaled self.scaler_X.fit_transform(X) y_scaled self.scaler_y.fit_transform(y.reshape(-1,1)) self.build_nn() self.model.fit(X_scaled, y_scaled, epochs200, verbose0) def predict_force(self, displacement, velocity, voltage): X np.array([[displacement, velocity, voltage]]) X_scaled self.scaler_X.transform(X) y_scaled self.model.predict(X_scaled, verbose0) return self.scaler_y.inverse_transform(y_scaled)[0,0] def fuzzy_control(displacement, velocity, damper): # fuzzy rules if abs(displacement) 0.005: voltage 100 elif abs(velocity) 0.2: voltage 60 else: voltage 20 force damper.predict_force(displacement, velocity, voltage) return force def shake_table_test(): # simulate single degree of freedom structure with damper m 450; k 1.2e5; c 800 damper SMA_Piezo_Damper() # dummy training data X_train np.random.rand(1000,3) y_train np.random.rand(1000) damper.train(X_train, y_train) def response(t, state, ground_acc): x, v state F_damper fuzzy_control(x, v, damper) a (ground_acc(t) - (c*v k*x F_damper)/m) return [v, a] t np.linspace(0, 30, 3000) ground np.sin(2*np.pi*2*t) * 0.3*9.8 sol odeint(response, [0,0], t, args(lambda tt: ground[int(tt/0.01)],)) return t, sol[:,0]