
✨ 长期致力于非机动车微观交通行为、异质性、感知—决策—行动三阶段、社会力模型、模糊逻辑研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》1非机动车骑行轨迹提取与骑行风格聚类采用高斯混合模型与卡尔曼滤波器对视频进行稳定校正和轨迹跟踪。提取每个骑行者的运动参数速度、加速度、横向摆动幅度、跟车间距。使用K-means聚类将骑行者分为谨慎型、一般型和鲁莽型三类。聚类依据速度均值的第33和66百分位。对某城市非机动车道采集的2000条轨迹分析三类占比分别为25%、55%、20%。谨慎型平均速度4.2m/s鲁莽型6.5m/s。2考虑复杂干扰的感知-决策-行动模型感知层将静态障碍物路缘、灯杆、感知难度能见度、光照、感知风险与机动车距离、鸣笛声音作为输入。决策层采用模糊逻辑进行短期路径规划和鸣笛行为决策。路径规划模糊规则若前方障碍物距离近且相对速度高则偏转角度大。鸣笛决策若侧后方车辆速度快且距离近则鸣笛。行动层采用修正社会力模型引入异质性参数期望速度、反应时间、风险容忍度。仿真中鲁莽型骑行者平均超车次数是一般型的2.3倍。3非信控交叉口交互规则仿真基于上述模型在MATLAB中编译仿真器模拟直行非机动车流与横向穿越行为。定义让行规则速度差异和到达时间差。仿真参数组合总流量300-1200辆/h鲁莽型比例0-40%。结果发现鲁莽型比例超过30%时交叉口冲突次数增加80%平均延误上升50%。设计干预措施增加减速带后鲁莽型平均速度降低22%冲突减少35%。import numpy as np from sklearn.mixture import GaussianMixture from scipy.linalg import kalman import skfuzzy as fuzz class Tracker: def __init__(self): self.kalman KalmanFilter(4,2) # 位置速度 def stable_correction(self, frames): # 图像稳定 return frames class CyclistClustering: def __init__(self, n_clusters3): self.gmm GaussianMixture(n_componentsn_clusters, covariance_typefull) def extract_features(self, trajectory): # 特征: 平均速度, 速度标准差, 横向位置标准差, 跟车时距 v np.diff(trajectory[:,0]) / 0.1 lat trajectory[:,1] features [np.mean(v), np.std(v), np.std(lat), 2.0] # 示例 return features def cluster(self, features_list): return self.gmm.fit_predict(features_list) class FuzzyDecisionMaker: def __init__(self, styleaggressive): self.style style self.rule_base self.load_rules() def load_rules(self): # 规则矩阵 return None def path_planning(self, obstacle_dist, obstacle_vel, ego_vel): # 模糊推理 dist_mf fuzz.trimf(obstacle_dist, [0,2,5]) vel_mf fuzz.trimf(obstacle_vel-ego_vel, [-5,0,5]) # 去模糊化 angle 0.3 # 偏转角度 return angle class ModifiedSocialForce: def __init__(self, desired_speed, reaction_time0.5): self.v_des desired_speed self.tau reaction_time def force(self, pos, vel, others): # 社会力 驱动力 排斥力 随机力 F_drive (self.v_des - vel) / self.tau F_rep 0.0 for o in others: dist np.linalg.norm(pos - o[pos]) if dist 1.5: F_rep 5.0 * (pos - o[pos]) / (dist**2) return F_drive - F_rep 0.1*np.random.randn(2) class IntersectionSimulator: def __init__(self, width5, length20): self.width width self.length length self.cyclists [] def step(self, dt0.1): for cyc in self.cyclists: # 更新位置和决策 pass # 冲突检测 return len(self.detect_conflicts())