Question about GA and the fun.

2 次查看(过去 30 天)
I have an objective function : y = error_RT(Tx,Ty,theta,T1,T2) .The Tx,Ty,theta are the parameters to be solved , while the T1&T2 are constants calculated by other programs. The GA needs a @fun(x), but I don't know how to pass the constants I know to the program.
Code:
x = ga(y,3,[],[],[],[],[0,-2,-2],[pi,2,2]);
function y = error_RT(Tx,Ty,theta,T1,T2)
T = [Tx;Ty];
R = [cos(theta),sin(theta);-sin(theta),cos(theta)];
[m,~] = size(T1);
[n,] = size(T2);
for i = 1:m
T1(i,n)=(R*T1(i,n)'+T')';
end
Test1 = zeros(600,600);
Test2 = zeros(600,600);
for i = 1:m
Test1(round(T1(i,1)*100),round(T1(i,2)*100)) = Test1(round(T1(i,1)*100),round(T1(i,2)*100)) + 1;
end
for i = 1:n
Test2(round(T2(i,1)*100),round(T2(i,2)*100)) = Test2(round(T2(i,1)*100),round(T2(i,2)*100)) + 1;
end
y = sum(sum((Test1-Test2).^2));
end

采纳的回答

Stephan
Stephan 2020-7-30
Have a read here:
In your case it should look somehow like this:
x = ga(@(vars)error_RT(vars,T1,T2) ,3,[],[],[],[],[0,-2,-2],[pi,2,2]);
function y = error_RT(vars,T1,T2)
Tx = vars(1);
Ty = vars(2);
theta = vars(3);
... % your function code
... % your function code
... % your function code
end

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Testing Frameworks 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by