【采煤机与刮板输送机多目标协同速度优化研究复现】

采煤机与刮板输送机多目标协同速度优化研究复现

在这里插入图片描述
部分代码展示

close all; clc;
% 粒子群算法参数设置
num_particles = 50; % 粒子数量
max_iter = 200; % 最大迭代次数
w = 0.5; % 惯性权重
c1 = 1.5; % 个体学习因子
c2 = 1.5; % 社会学习因子

% 优化变量的上下限
v_s_min = 1; % 最小牵引速度
v_s_max = 3; % 最大牵引速度
v_c_min = 40; % 最小运输速度
v_c_max = 90; % 最大运输速度
t_min = 0.5; 
t_max = 90;

D = 3; % 变量维数 (v_s, v_c, t)
M = 7; % 调速次数
dim = D * M; % 扁平化后的维度

% 初始化粒子位置和速度
particles = initialize_particles(num_particles, dim, v_s_min, v_s_max, v_c_min, v_c_max, t_min, t_max);
velocities = zeros(num_particles, dim);

% 初始化个体和全局最优解
p_best = particles;
p_best_fitness = inf(num_particles, 1);
g_best = particles(1, :);
g_best_fitness = inf;

% 保存每次迭代的最优适应度值
best_fitness_iter = zeros(max_iter, 1);

% 粒子群优化迭代
for iter = 1:max_iter
    for i = 1:num_particles
        % 计算适应度和约束
        [W, W_k] = compute_resistances(reshape(particles(i, :), M,D)');
        fitness = objective_function(reshape(particles(i, :), M,D)', W, W_k);
        c = constraints(reshape(particles(i, :), M,D)');

        % 处理约束
        if sum(c <= 0) >= 8
            % 更新个体最优
            if fitness < p_best_fitness(i)
                p_best(i, :) = particles(i, :);
                p_best_fitness(i) = fitness;
            end

            % 更新全局最优
            if fitness < g_best_fitness
                g_best = particles(i, :);
                g_best_fitness = fitness;
            end
        end
    end

    % 保存当前迭代的最佳适应度值
    best_fitness_iter(iter) = g_best_fitness;

    % 更新粒子速度和位置
    for i = 1:num_particles
        r1 = rand(1, dim/3);
        r2 = rand(1, dim/3);
        velocities(i, 8:14) = w * velocities(i, 8:14) + ...
            c1 * r1 .* (p_best(i, 8:14) - particles(i, 8:14)) + ...
            c2 * r2 .* (g_best(8:14) - particles(i, 8:14));
        particles(i, 8:14) = particles(i, 8:14) + velocities(i, 8:14);

        % 边界处理
        particles(i, 1:M) = max(min(particles(i, 1:M), v_s_max), v_s_min);
        particles(i, M+1:2*M) = max(min(particles(i, M+1:2*M), v_c_max), v_c_min);
        particles(i, 2*M+1:3*M) = max(min(particles(i, 2*M+1:3*M), t_max), t_min);
    end

    % 显示迭代信息
    fprintf('迭代 %d: 最优适应度 = %f\n', iter, g_best_fitness);
end

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

20230330

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

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

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

打赏作者

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

抵扣说明:

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

余额充值