how to create function for below objective function.

1 view (last 30 days)
Iam trying to implement genetic algorithm in suspension design of vehicle.my objective function is
ABS(z1+z2)+MAX(ABS(z2)-9.8,0)+MAX(ABS(z1-z2)-0.13,0)+MAX(w-1,0)
please give me code how to create function with it in matlab.so that i can use it with ga tool.

Answers (2)

arushi
arushi on 5 Sep 2024
Hi Simpy,
To implement a genetic algorithm (GA) for optimizing a suspension design in MATLAB, you need to define your objective function and use it with the `ga` function.
% Number of variables
nvars = 3; % [z1, z2, w]
% Set bounds for each variable if needed
lb = [-10, -10, 0]; % Lower bounds for [z1, z2, w]
ub = [10, 10, 5]; % Upper bounds for [z1, z2, w]
% Set options for the genetic algorithm
options = optimoptions('ga', 'Display', 'iter', 'PlotFcn', @gaplotbestf);
% Run the genetic algorithm
[x_optimal, fval] = ga(@suspensionObjective, nvars, [], [], [], [], lb, ub, [], options);
% Display the results
fprintf('Optimal z1: %.4f\n', x_optimal(1));
fprintf('Optimal z2: %.4f\n', x_optimal(2));
fprintf('Optimal w: %.4f\n', x_optimal(3));
fprintf('Minimum Objective Value: %.4f\n', fval);
This setup provides a basic framework for using a genetic algorithm to optimize the suspension design based on your specified objective function. Adjust the bounds and options to suit your specific design constraints and requirements.
Hope this helps.

John D'Errico
John D'Errico on 5 Sep 2024
Edited: John D'Errico on 5 Sep 2024
Your objective function has three unknown variables in it, so z1, z2, and w. But an optimizer MUST have it as a vector of length 3.
So first, I'll write the objective using the three variables as you know them.
yourobj = @(z1,z2,w) abs(z1+z2) + max(abs(z2)-9.8,0) + max(abs(z1-z2)-0.13,0) + max(w-1,0);
And that is exactly as you wrote it. But as I said, a tool like GA needs to use vectors. So we can just create an objective function for GA.
gaobj = @(V) yourobj(V(1),V(2),V(3));
And now GA can use this function as an objective. If you have constraints, etc., they all need to work in terms of a VECTOR of length 3.
Note the use of abs and max make this a problem NOT suitable for most optimizers becaue the result will be an objective function that is not differentiable. However, GA should be able to handle it, so you have made a good choice there.
(Interestingly, I debated suggeting you use an optimproblem to solve this, but abs and max are not defined for optimvars.)

Community Treasure Hunt

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

Start Hunting!