在这里插入代码片
% 假设您已经定义了 PFSP 问题的目标函数 calculateMakespan 和约束条件 checkConstraints
% 定义问题参数
num_jobs = 10; % 工件数量
num_machines = 3; % 机器数量
% 定义白鲸优化算法参数
num_whales = 20; % 白鲸数量
max_iter = 100; % 最大迭代次数
% 初始化白鲸位置
whales_position = initializeWhalesPosition(num_whales, num_jobs);
% 开始优化过程
for iter = 1:max_iter
% 计算适应度值
fitness = zeros(1, num_whales);
for i = 1:num_whales
fitness(i) = calculateMakespan(whales_position(i, 😃, num_machines);
end
% 找到最优白鲸
[min_fitness, min_index] = min(fitness);
best_whale = whales_position(min_index, :);
% 更新白鲸位置
new_whales_position = zeros(num_whales, num_jobs);
for i = 1:num_whales
a = 2 - iter * (2 / max_iter); % 更新参数
A = 2 * a * rand - a;
C = 2 * rand;
if rand < 0.5
if abs(A) < 1
new_whales_position(i, :) = best_whale - A * abs(best_whale - whales_position(i, :));
else
random_whale_index = randi([1 num_whales]);
new_whales_position(i, :) = whales_position(random_whale_index, :);
end
else
distance = abs(best_whale - whales_position(i, :));
new_whales_position(i, :) = distance .* exp(C) .* cos(2 * pi * C) + best_whale;
end
end
% 更新位置后重新计算适应度值
for i = 1:num_whales
fitness(i) = calculateMakespan(new_whales_position(i, :), num_machines);
end
% 更新白鲸位置
whales_position = new_whales_position;
end
% 输出最终的最优解
final_best_makespan = min_fitness;
final_best_solution = best_whale;
% 可以根据需要输出调度顺序或其他结果+