MATLAB 遗传算法"Subscripted assignment dimension mismatch"错误



当尝试在MATLAB中使用遗传算法求解器时,我得到以下"下标赋值维度不匹配"错误:错误消息Pastebin

现在,它说误差与最后的适应度函数有关,但当我单独测试适应度函数时,它没有误差。如果有帮助的话,我还可以链接我的适应度和约束函数的代码。

非常感谢!

我想我明白是怎么回事了…因为CDraft的一个附件是在if中,你并不总是返回相同长度的向量-即,你第一次返回约束向量,它为你的约束输出预先分配一个矩阵,然后下一次你给它返回不适合这个矩阵的东西,所以你得到错误。

线索在错误堆栈中:在堆栈的顶部有

下标赋值维度不匹配。

C:Program出错文件 MATLAB工具箱 R2012b globaloptim globaloptim 私人 gaminlppenaltyfcn.p> i_convectorizer(第135行)

很明显,这不是你写的函数,检查你的函数,没有什么应该导致这个错误。错误的结尾给出了另一条线索

引起的:初始用户提供适应度函数评估失败。GA无法继续。

ga函数在处理用户提供的约束的代码位中报告错误。很可能这一整段代码(对用户提供的函数的调用和其他相关行)都在一个返回此错误的try...catch语句中。像这样:

try
    c = userConFun(x);
    if isempty(cHistory)
        cHistory = zeros(length(c), 1000); % or whatever
    end
    cHistory(:, currentIterationIndex) = c;
catch err
    error('Failure in user-supplied fitness function blah blah blah');
end

因此,它看起来像是来自你的函数,即使它发生在你的函数返回后。

相关内容

最新更新