【发布时间】:2017-11-03 18:53:45
【问题描述】:
我有一个约束函数,它调用另一个函数(inverse_kinematics)来计算一些约束,如果 c(1) 和 c(2) 不满足,inverse_kinematics() 会出错,我怎样才能确保 c(1 ) 和 c(2) 在调用 inverse_kinematics() 函数之前是否满足?我可以通过在我的约束函数中使用 if 条件来解决它吗?下面是我的优化函数的代码,
function [c, ceq] = 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 - (l1-l2)^2;
thetas = inverse_kinematics(l1,l2,l3); % Gives error when c(1) and c(2) are not satisfied
c(3) = thetas(4,1) - 160;
c(4) = thetas(4,2) - 160;
c(5) = thetas(4,3) - 160;
c(6) = 20 - thetas(4,1);
c(7) = 20 - thetas(4,2);
c(8) = 20 - thetas(4,3);
c(9) = thetas(5,1) - 340;
c(10) = thetas(5,2) - 340;
c(11) = thetas(5,3) - 340;
c(12) = 200 - thetas(5,1);
c(13) = 200 - thetas(5,2);
c(14) = 200 - thetas(5,3);
c(15) = thetas(6,1) - 340;
c(16) = thetas(6,2) - 340;
c(17) = thetas(6,3) - 340;
c(18) = 200 - thetas(6,1);
c(19) = 200 - thetas(6,2);
c(20) = 200 - thetas(6,3);
ceq = [];
end
提前致谢!
【问题讨论】:
标签: matlab optimization constraints genetic-algorithm