multiple variable optimization GA
2 views (last 30 days)
Show older comments
A = [2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37]; % Activity set
predecessor = [0 1 1 2 2 3 5 4 6 7 8 9 10 12 13 11 14 15 17 16 18 19 14 15 18 21 19 18 22 23 24 25 26 28 29 20 20 25 31 32 33 35 36]; % Predecessor relationship
t = [0 15 11 20 21 12 10 10 7 10 9 12 10 10 7 7 15 7 7 14 10 14 7 7 3 7 15 4 10 1]; % Time (day)
r = [0 2 2 4 5 2 2 4 4 5 4 4 5 5 4 4 2 4 4 4 3 4 5 3 2 4 4 1 2]; % Resource requirement (employee)
c = [0 3000 2200 8000 10500 4800 2000 3000 4000 2800 3600 6000 4000 5000 2800 2800 6000 2800 4200 4000 2800 4200 2100 2800 6000 2900 1400 900 3000 2800 1000 100]; % Direct cost
K = 30; % Available resource
T = 185; % Available time
% Define the objective function
fun = @(x) [sum(c.*x) sum(t.*x)]; % Minimize the total cost and time
% Define the constraints
Aeq = zeros(37, 37); % Initialize the equality constraint matrix
for i = 1:37
Aeq(predecessor(i)+1, i) = 1;
end
beq = ones(37, 1); % Equality constraint right-hand side
lb = zeros(37, 1); % Lower bound for binary constraint
ub = ones(37, 1); % Upper bound for binary constraint
nonlcon = @(x) deal([sum(r.*x) - K; sum(t.*x) - T], []); % Nonlinear constraint
% Call the genetic algorithm solver
options = gaoptimset('PlotFcns', {@gaplotpareto}); % Plot the Pareto front
[x, fval] = gamultiobj(fun, 37, [], [], Aeq, beq, lb, ub, nonlcon, options);
% Display the results
disp('Selected activities:');
disp(A(x == 1));
disp('Total cost:');
disp(fval[1]);
disp('Total time:');
disp(fval(2));
%% i am geeting an error in disp(fval[1]); & disp(fval(2));
0 Comments
Answers (1)
Divyank
on 8 Feb 2023
Hello @MANANJAYA NAYAK, I believe the error is caused due to incorrect use of square brackets. To access elements of a matrix, you should use parentheses instead of square brackets.
Try changing the following line of code:
disp(fval[1]);
to:
disp(fval(1));
3 Comments
Divyank
on 8 Feb 2023
It seems that the optimization problem is infeasible and the solver is not able to find a feasible solution that satisfies the constraints. The issue could be with the equality constraint matrix, Aeq, or the constraint tolerance set in the options. It's also possible that the nonlinear constraint is not well-formed. I would suggest double-checking these parts of the code to see if there are any errors or omissions.
See Also
Categories
Find more on Surrogate Optimization in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!