- First try calling your for-loop in reverse order to see if that reproduces it. If so, it'll be much easier to debug.
- Next, callga,但是不同的输出值。例如
Error using MATLAB GA - [left and right sides have a different number of elements]
4 views (last 30 days)
Show older comments
var1 = (linspace(100, 400, 10));
var2 = (linspace(2, 7, 10));
fori = 1:长度(var2)
forj=1:length(var1)
objFun= @(x) my_objFun(var1(j),var2(i));
constraintFun = @(x) my_constraintFun(var1(j),var2(i));
尝试
[X,FVAL,EXITFLAG,输出] = GA(OBJFUN,NVARS,A,B,AEQ,BEQ,LB,UB,UB,CONDERTFUN,INTCON,INTCON,options);
catche
fprintf(1,'[ERROR] - The identifier was:\n%s\n',e.identifier);
fprintf(1,'[ERROR] - There was an error! The message was:\n%s\n',e.message);
end
end
end
The GA function is called repetitive times inside a loop. It sometimes runs successfully, other times it throws ERROR 1 and in a few other occasions it throws ERROR 2.
- 错误1
[ERROR] - The identifierwas:
MATLAB:matrix:singleSubscriptNumelMismatch
[错误] - 有一个错误!消息是:
Unableto perform assignment because the left and right sides have a different number of elements.
- 错误2
[ERROR] - The identifierwas:
MATLAB:griddedInterpolant:NonMonotonicCompVecsErrId
[错误] - 有一个错误!消息是:
Samplepoints must be unique and sorted in ascending order.
Any idea what that could be?
I'm using try and catches all over my my_objFun and my_constraintFun to make sure this error is not coming from there.
Answers (1)
Alan Weiss
2021年8月8日
I do not understand this line:
objFun= @(x) my_objFun(var1(j),var2(i));
变量在哪里
x
enter
objFun
? I think that is your main problem. Try calling
objFun(x0)
对于一些
x0
that is a row vector with n
vars
elements. It probably will not return what you hope it returns.
Alan Weiss
MATLAB数学工具箱文档