错误:在 NSGA II 中,此操作的数组大小不兼容

问题描述

我正在尝试最小化目标函数,但在 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 (将#修改为@)