multiple variable optimization GA
조회 수: 3 (최근 30일)
이전 댓글 표시
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
답변 (1개)
Divyank
2023년 2월 8일
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
Divyank
2023년 2월 8일
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.
참고 항목
카테고리
Help Center 및 File Exchange에서 Surrogate Optimization에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!