“错误在运行优化。没有足够的输入参数”在运行遗传算法

18视图(30天)
我用下面的目标函数:
函数Length_Sum = objective_function (l1, l2, l3)
Length_Sum = l1 + l2 + l3;
结束
与约束函数如下:
函数测查[c] = simple_constraint (l1, l2, l3)
c (1) = l3 ^ 2 + 200 * l3 * cos (30) + 10000 (l1 + l2) ^ 2;
c (2) = (100 - l3 * cos (30)) ^ 2 + (100 * sin(30)) ^ 2 -(寓于)^ 2;
θ= inverse_kinematics (l1, l2, l3);
c(3) =θ(4,1)- 160;
c(4) =θ(4,2)- 160;
c(5) =θ(4,3)- 160;
c(6) = 20 -θ(4,1);
c(7) = 20 -θ(4,2);
c(8) = 20 -θ(4,3);
c(9) =θ(5 - 1)- 340;
c(10) =θ(2)- 340;
c(11) =θ(5,3)- 340;
c(12) = 200 -θ(5、1);
c(13) = 200 -θ(5,2);
c(14) = 200 -θ(5,3);
c(15) =θ(6,1)- 340;
c(16) =θ(2)- 340;
c(17) =θ(6,3)- 340;
c(18) = 200 -θ(6,1);
c(19) = 200 -θ(6,2);
c(20) = 200 -θ(6,3);
测查= [];
结束
约束生成值θ的函数使用另一个函数,这个函数如下所示:
函数θ= inverse_kinematics (l1, l2, l3)
x = 100;
y = 0;
φ= 210 *π/ 180:60 *π/ 180:330 *π/ 180;
x1 = x - (l3 * cos(φ));
日元= y - (l3 * sin(φ));
一个=√x1。^ 2 + y1。^ 2);
y2 = -y1. /;
x2 = -x1. /;
γ=量化(y2 x2);
c = (- x1。^ 2 -日元。^ 2 - l1 ^ 2 + l2 ^ 2)。/ (2 * l1 *);
d =治疗(c);
θ₁=伽马+ d;
如果θ₁< 0
θ₁=θ₁+ 2 *π;
结束
theta4 =γ- d;
如果theta4 < 0
theta4 = theta4 + 2 *π;
结束
e = (y1 - l1 * sin(θ₁))/ l2;
f = (x1 - l1 * cosθ₁)/ l2;
θ=量化(e, f) -θ₁;
如果θ< 0
θ=θ+ 2 *π;
结束
g = (y1 - l1 * sin (theta4)) / l2;
h = (x1 - l1 * cos (theta4)) / l2;
theta5 =量化(g, h) - theta4;
如果theta5 < 0
theta5 = theta5 + 2 *π;
结束
1 =(φ)-(θ₁+θ₂);
如果1 < 0
1 = 1 + 2 *π;
结束
theta6 =(φ)- (theta4 + theta5);
如果theta6 < 0
theta6 = theta6 + 2 *π;
结束
θ=[θ₁,θ₂;1;theta4; theta5; theta6]。* 180 /π;
结束
运行此代码使用ga工具箱后,与下界(20 20 20)和上界(100 100 100)和其他参数设置为默认,我获得“错误在运行优化。没有足够的输入参数”错误。有人可以帮忙吗?

接受的答案

艾伦·韦斯
艾伦·韦斯 2017年10月29日
编辑:艾伦·韦斯 2017年10月29日
你需要一个变量作为决策变量。类似的
函数Length_Sum = objective_function (x)
l1 = x (1);
l2 = x (2);
l3 = x (3);
Length_Sum = l1 + l2 + l3;%或只使用sum (x)
看到 计算目标函数
同样,通过一个变量 simple_constraint 和提取 l1 , l2 , l3 内部函数。
艾伦·韦斯
MATLAB数学工具箱文档
8的评论

登录置评。

答案(1)

Priya Venugopal
Priya Venugopal 2022年4月16日
我们怎么能包括约束Ax > = b客观功能....pl的帮助

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!