用matlab的optimization工具箱遗传算法优化函数,被优化的函数和条件约束如下,请问为会有报错(图片)以下是要优化的目标函数的m文件function F=f1(x)F=500*x(1)*sin(atan(x(5)/x(7))+acos((x(5)^2+x(7)^2+x(3)^2+x(
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/23 10:54:07
用matlab的optimization工具箱遗传算法优化函数,被优化的函数和条件约束如下,请问为会有报错(图片)以下是要优化的目标函数的m文件function F=f1(x)F=500*x(1)*sin(atan(x(5)/x(7))+acos((x(5)^2+x(7)^2+x(3)^2+x(
用matlab的optimization工具箱遗传算法优化函数,被优化的函数和条件约束如下,请问为会有报错(图片)
以下是要优化的目标函数的m文件
function F=f1(x)
F=500*x(1)*sin(atan(x(5)/x(7))+acos((x(5)^2+x(7)^2+x(3)^2+x(4)^2-x(6)^2)/(2*sqrt((x(5)^2+x(7)^2)*(x(3)^2+x(4)^2))))-atan(x(3)/x(4))+acos((x(1)*cos(atan(x(5)/x(7))+acos((x(5)^2+x(7)^2+x(3)^2+x(4)^2-x(6)^2)/(2*sqrt((x(5)^2+x(7)^2)*(x(3)^2+x(4)^2))))-atan(x(3)/x(4)))+x(8)-x(9))/x(2)))/(3*sin(acos((x(1)*cos(atan(x(5)/x(7))+acos((x(5)^2+x(7)^2+x(3)^2+x(4)^2-x(6)^2)/(2*sqrt((x(5)^2+x(7)^2)*(x(3)^2+x(4)^2))))-atan(x(3)/x(4)))+x(8)-x(9))/x(2)))*sqrt(x(3)^2+x(4)^2-((x(3)^2+x(4)^2+x(6)^2-x(5)^2-x(7)^2)/(2*x(6)))^2));
end
以下是约束方程的m文件
function [c,ceq]=f2(x)
c=[];
ceq=x(1)*(sin(atan(x(5)/x(7))+acos((x(5)^2+x(7)^2+x(3)^2+x(4)^2-(1.492*x(6))^2)/(2*sqrt((x(5)^2+x(7)^2)*(x(3)^2+x(4)^2))))-atan(x(3)/x(4)))-sin(atan(x(5)/x(7))+acos((x(5)^2+x(7)^2+x(3)^2+x(4)^2-x(6)^2)/(2*sqrt((x(5)^2+x(7)^2)*(x(3)^2+x(4)^2))))-atan(x(3)/x(4))))+x(2)*(sin(acos((x(1)*cos(atan(x(5)/x(7))+acos((x(5)^2+x(7)^2+x(3)^2+x(4)^2-(1.492*x(6))^2)/(2*sqrt((x(5)^2+x(7)^2)*(x(3)^2+x(4)^2))))-atan(x(3)/x(4)))+x(8)-x(9))/x(2)))-sin(acos((x(1)*cos(atan(x(5)/x(7))+acos((x(5)^2+x(7)^2+x(3)^2+x(4)^2-x(6)^2)/(2*sqrt((x(5)^2+x(7)^2)*(x(3)^2+x(4)^2))))-atan(x(3)/x(4)))+x(8)-x(9))/x(2))))-471;
end
补充:我的函数和约束方程都是没问题的,肯定有相应的实数解满足约束方程,可偏偏提示“Constraint function must return real value”
用matlab的optimization工具箱遗传算法优化函数,被优化的函数和条件约束如下,请问为会有报错(图片)以下是要优化的目标函数的m文件function F=f1(x)F=500*x(1)*sin(atan(x(5)/x(7))+acos((x(5)^2+x(7)^2+x(3)^2+x(
你的约束函数有问题,x如果超出了反正切的默认范围,就会出现复数
此时你的程序就没办法通过复数的ceq进行计算了