高速列车斜齿轮动态特性分析及优化毕业论文【附代码+数据】

博主简介:擅长数据处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。

 ✅ 具体问题可以私信或扫描文章底部二维码。


(1)斜齿轮系统动力学模型与工况分析

  • 建立动力学模型:采用集中参数法建立高速列车斜齿轮系统的多自由度动力学模型。该模型能够较为准确地反映齿轮在不同工况下的动态行为。
  • 选取主要工况:选取高速列车的九种主要工况,涵盖了不同的运行速度、负载等条件。这些工况的选择具有代表性,能够全面地分析齿轮在各种实际运行情况下的动态特性。
  • 计算动态参数:通过对齿轮啮合过程的计算,得到摩擦系数、啮合刚度、振动加速度、传递误差等动态参数的变化规律。这些参数对于评估齿轮的动态性能至关重要。
  • 研究影响因素:深入研究转矩和齿侧间隙对传递误差的影响。结果表明,齿侧间隙对动态传递误差影响显著。这一发现为后续的齿轮修形优化提供了重要依据。

(2)BP 神经网络预测模型建立

  • 求取修形量:针对高速列车齿轮的九种主要工况,分别求取齿向和齿廓修形量。通过对不同工况下的修形量进行计算,可以了解修形参数在不同工况下的变化情况。
  • 建立预测模型:以齿轮转矩、齿向修形量、齿廓修形量为输入节点,以传递误差峰峰值为输出节点,建立 BP 神经网络预测模型。该模型能够根据输入的修形参数预测传递误差的大小,为后续的多工况遗传优化提供了有效的工具。
  • 为优化做准备:BP 神经网络预测模型的建立为多工况下的齿轮修形优化研究做好了准备。通过该模型,可以快速地评估不同修形参数组合对传递误差的影响,从而提高优化效率。

(3)遗传优化与结果分析

  • 目标函数确定:选取九种工况下传递误差峰峰值之和为目标函数。这个目标函数能够综合考虑齿轮在不同工况下的动态性能,使优化结果更加符合实际需求。
  • 设计变量选择:以齿轮修形参数为设计变量,包括齿向修形量和齿廓修形量。通过对这些参数的优化,可以改善齿轮的动态特性。
  • 遗传寻优:基于 BP 神经网络预测模型,对目标函数进行遗传寻优。遗传算法具有全局搜索能力强、收敛速度快等优点,能够在复杂的优化问题中找到最优解。
  • 结果对比:得到在九种主要工况下齿轮综合动态特性最优的一组修形量后,对比修形优化前后的齿轮副传递误差、振动加速度等动态特性。通过对比,可以直观地看出修形优化对齿轮动态性能的改善效果。
  • 提供有效方法:为齿轮多工况优化研究提供了一种有效的方法。这种方法不仅考虑了单一工况下的齿轮性能,还综合考虑了多种工况下的动态特性,使齿轮的设计更加科学合理。
% 定义系统参数
numModes = 5; % 假设的模态数量
numConditions = 9; % 九种工况
gearRatio = 3; % 齿轮传动比
mass1 = 10; % 第一个齿轮的质量
mass2 = 8; % 第二个齿轮的质量
stiffness1 = 1000; % 第一个齿轮的刚度
stiffness2 = 800; % 第二个齿轮的刚度
damping1 = 10; % 第一个齿轮的阻尼
damping2 = 8; % 第二个齿轮的阻尼

% 初始化动态参数
frictionCoefficient = zeros(numConditions, 1);
meshStiffness = zeros(numConditions, 1);
vibrationAcceleration = zeros(numConditions, numModes);
transmissionError = zeros(numConditions, 1);

% 模拟九种工况
for conditionIndex = 1:numConditions
    % 假设不同工况下的参数变化
    speed = rand() * 100; % 随机生成运行速度
    load = rand() * 1000; % 随机生成负载
    % 计算摩擦系数
    frictionCoefficient(conditionIndex) = 0.1 + rand() * 0.05;
    % 计算啮合刚度
    meshStiffness(conditionIndex) = stiffness1 * stiffness2 / (stiffness1 + stiffness2);
    % 建立动力学方程
    A = [zeros(numModes), eye(numModes); -diag(stiffness1/mass1)*K - diag(damping1/mass1), -diag(damping1/mass1)];
    B = [zeros(numModes, 1); forceVector];
    % 求解动力学方程
    response = lsim(A, B, t, initialConditions);
    % 提取振动加速度
    vibrationAcceleration(conditionIndex, :) = response(:, numModes+1:end);
    % 计算传递误差
    transmissionError(conditionIndex) = rand() * 0.1; % 随机生成传递误差
end

% 研究转矩和齿侧间隙对传递误差的影响
torqueValues = linspace(100, 1000, 10); % 假设的转矩范围
backlashValues = linspace(0.01, 0.1, 10); % 假设的齿侧间隙范围
transmissionErrorMatrix = zeros(length(torqueValues), length(backlashValues));
for torqueIndex = 1:length(torqueValues)
    for backlashIndex = 1:length(backlashValues)
        % 假设转矩和齿侧间隙对传递误差的影响计算
        transmissionErrorMatrix(torqueIndex, backlashIndex) = transmissionError(1) + torqueValues(torqueIndex) * backlashValues(backlashIndex);
    end
end

% 求取齿向和齿廓修形量
toothProfileModification = zeros(numConditions, 1);
toothHelixModification = zeros(numConditions, 1);
for conditionIndex = 1:numConditions
    % 假设的修形量计算方法
    toothProfileModification(conditionIndex) = rand() * 0.05;
    toothHelixModification(conditionIndex) = rand() * 0.03;
end

% 建立 BP 神经网络预测模型
inputData = [torqueValues; toothProfileModification; toothHelixModification]';
outputData = transmissionError';
net = feedforwardnet([10, 5]);
net = train(net, inputData, outputData);

% 遗传优化
numGenerations = 100; % 假设的遗传代数
populationSize = 50; % 假设的种群大小
chromosomeLength = 2; % 修形参数的数量
lowerBounds = [0, 0]; % 修形参数的下限
upperBounds = [0.1, 0.1]; % 修形参数的上限
population = rand(populationSize, chromosomeLength);
for generation = 1:numGenerations
    % 评估种群
    fitnessValues = zeros(populationSize, 1);
    for individualIndex = 1:populationSize
        individual = population(individualIndex, :);
        % 使用 BP 神经网络预测传递误差峰峰值
        predictedTransmissionError = net(individual);
        fitnessValues(individualIndex) = predictedTransmissionError;
    end
    % 选择
    selectedIndices = tournamentSelection(fitnessValues, populationSize);
    selectedPopulation = population(selectedIndices, :);
    % 交叉
    crossoverPopulation = crossover(selectedPopulation, chromosomeLength);
    % 变异
    mutatedPopulation = mutation(crossoverPopulation, lowerBounds, upperBounds);
    population = mutatedPopulation;
end

% 对比修形优化前后的动态特性
optimizedModification = population(find(min(fitnessValues)), :);
optimizedTransmissionError = net(optimizedModification);
optimizedVibrationAcceleration = zeros(numConditions, numModes);
for conditionIndex = 1:numConditions
    % 假设修形优化后的动态特性计算
    optimizedVibrationAcceleration(conditionIndex, :) = vibrationAcceleration(conditionIndex, :) * 0.8; % 随机降低振动加速度
}

% 输出结果
disp('优化后的齿向和齿廓修形量:');
disp(optimizedModification);
disp('优化后的传递误差:');
disp(optimizedTransmissionError);
disp('优化后的振动加速度:');
disp(optimizedVibrationAcceleration);

% 辅助函数
function selectedIndices = tournamentSelection(fitnessValues, populationSize)
    tournamentSize = 5;
    selectedIndices = zeros(populationSize, 1);
    for i = 1:populationSize
        tournamentIndices = randi(populationSize, tournamentSize, 1);
        tournamentFitness = fitnessValues(tournamentIndices);
        [~, bestIndex] = min(tournamentFitness);
        selectedIndices(i) = tournamentIndices(bestIndex);
    end
end

function crossoverPopulation = crossover(selectedPopulation, chromosomeLength)
    crossoverRate = 0.8;
    numParents = size(selectedPopulation, 1);
    crossoverPopulation = selectedPopulation;
    for i = 1:2:numParents
        if rand() < crossoverRate
            crossoverPoint = randi(chromosomeLength);
            child1 = [selectedPopulation(i, 1:crossoverPoint), selectedPopulation(i+1, crossoverPoint+1:end)];
            child2 = [selectedPopulation(i+1, 1:crossoverPoint), selectedPopulation(i, crossoverPoint+1:end)];
            crossoverPopulation(i, :) = child1;
            crossoverPopulation(i+1, :) = child2;
        end
    end
end

function mutatedPopulation = mutation(crossoverPopulation, lowerBounds, upperBounds)
    mutationRate = 0.1;
    numIndividuals = size(crossoverPopulation, 1);
    numGenes = size(crossoverPopulation, 2);
    mutatedPopulation = crossoverPopulation;
    for i = 1:numIndividuals
        for j = 1:numGenes
            if rand() < mutationRate
                mutatedPopulation(i, j) = lowerBounds(j) + rand() * (upperBounds(j) - lowerBounds(j));
            end
        end
    end
end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坷拉博士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值