问题描述
我正在尝试最小化目标函数,但在 Matlab 中运行代码时出现错误。
- 错误:
对于此操作,数组的大小不兼容。
NSGAII 中的错误(第 25 行)
P = repmat((var_max-var_min)',Np,1).rand(Np,nVar) + repmat(var_min',1);
function NSGAII(params,MultiObj)
params.Np = 40; % Population size
params.pc = 0.9; % Probability of crossover
params.pm = 0.5; % Probability of mutation
params.maxgen = 100; % Maximum number of generations
params.ms = 0.05; % Mutation strength
MultiObj.fun = @(x) [x(:,1).* 2,(x(:,2)),3))];
MultiObj.nVar = 3;
MultiObj.var_min = -5.*ones(1,MultiObj.nVar);
MultiObj.var_max = 5.*ones(1,MultiObj.nVar);
% Parameters
Np = params.Np; % Number of chromosomes in the population
maxgen = params.maxgen; % Maximum number of generations
pc = params.pc; % Probability of crossover
pm = params.pm; % Probability of mutation
ms = params.ms; % Mutation strength
fun = MultiObj.fun; % Objective function
nVar = MultiObj.nVar; % Number of variables (dimensions or objectives)
var_min = MultiObj.var_min; % Minimum value for each gen
var_max = MultiObj.var_max; % Maximum value for each gen
% Initialization
gen = 1;
P = repmat((var_max-var_min)',1).*rand(Np,1);
Pfit = fun(P);
Prank = FastNonDominatedSorting_Vectorized(Pfit);
[P,~] = selectParentByRank(P,Prank);
Q = applyCrossoverAndMutation(P,pc,pm,ms,var_max,var_min);
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)