How can I integrate into a fitness function another code.
이전 댓글 표시
am trying to use the GA on my existing project(simulator). So I have created the algorithm and I am trying to integrate it into my existing code. So what I am trying to do is instead of using the "y" function, I am trying to use my project code. But it seems that it does not like it when I am commenting out the Y, or even when I am using y=@Project_code;
clear all;
car_range_max=[98,52];
car_range_min=[-98,-52];
opts=gaoptimset('PlotFcns',@gaplotbestf,'PopulationSize',10,'PopInitRange',[car_range_max;car_range_min],'Generations',20,'CrossoverFraction',0.7,'TolFun',0.0001,'MutationFcn',@mutationadaptfeasible);
global z
z = [];
nvars = 2;
[bestx, minfval_M]=ga(@untitled2,nvars,[],[],[],[],car_range_max,car_range_min,[],opts);
bestx
fval
%/*********************** another file ***************************************/
function y= untitled2(x)
global z
max_speed=x(1);
acc_speed=x(2);
[y,car_energy,car_travel_time]= Project_code(max_speed,acc_speed); % Project_code is expecting the values from max_speed and acc_speed
z=[z;max_speed,acc_speed,car_energy,car_travel_time];
end
%Bellow is redundant as I will use the function Project_code and not the y
%funtion
%function [y, car_energy,car_travel_time] = Project_code(max_speed, acc_speed)
% y = max_speed+acc_speed+4*max_speed+4*acc_speed+8;
% max_speed = randi(10); acc_speed = randi(10);
%end
답변 (1개)
global z
z = [];
nvars = 2;
[bestx, fval] = ga(@untitled2, nvars)
z
function y = untitled2(x)
global z
max_speed=x(1);
acc_speed=x(2);
[y, a, b] = Project_code(max_speed, acc_speed);
z=[z;max_speed,acc_speed,a,b]; % store the data into a table
end
function [y, a, b] = Project_code(max_speed, acc_speed)
y = max_speed^2+acc_speed^2+4*max_speed+4*acc_speed+8;
a = randi(10); b = randi(10);
end
댓글 수: 5
Walter Roberson
2022년 2월 21일
One thing I notice is that your car_range_max is being passed in the lb (lower bound) position, and your car_range_min is being passed in the ub (upper bound) position. But your max is positive and your min is negative, so you are saying that the lower bound is positive and the upper bound is negative. You need to fix that.
Meanwhile:
what result do you get if you call
untitled2([0, 0])
I Bos
2022년 2월 21일
Walter Roberson
2022년 2월 21일
Well that's a problem.
If Project_Code is currently a script that expects to receive values in certain variables and make assignments to particular variables... then it is really recommended that you convert it to a be a function. Calling a script from a function can lead to subtle problems.
I Bos
2022년 2월 21일
카테고리
도움말 센터 및 File Exchange에서 Genetic Algorithm에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!