Matlab의 My Genetic Algorithm 최적화 스크립트가 실행되지만 끝에 다음 메시지가 표시됩니다. "최적화가 종료되었습니다 : 처벌 적합성 값의 평균 변화가 options.TolFun보다 작지만 제약 조건이 충족되지 않습니다."MATLAB 최적화 오류
왜 그런 말입니까? 내 피트니스 기능을 아무 것도하지 않고 일정한 수를 반환하는 함수로 바꿨으며 아무 것도 바뀌지 않았습니다. 실수를 찾을 수는 없지만 제 제약 조건이 올바르게 정의되지 않은 경우 일 수 있습니다. 여기에 코드의 관련 부분은 다음과 같습니다
nGenerators = 9;
monthlyHours = 24*daysInJanuary;
(some irrelevant code here)
steamCapacities = [31.46*ones(1,2) 5.5*ones(1,3) 4*ones(1,4)];
nVars = xSize;
IntCon = 1:nVars;
LB = zeros(1, nVars);
UB = ones(1, nVars);
b = -1*steamLoad; % Ax <= b
A = zeros(monthlyHours, xSize);
for p = 1:monthlyHours
A(p, 9*p-8:9*p) = -1*steamCapacities;
% disp(p);
end
(some more code here)
anonFitness = @(x)mosb_test(x, fitnessData);
gaOptions = gaoptimset('Vectorized', 'off', 'UseParallel', 'always', ...
'Display', 'diagnose', 'PlotFcn', @gaplotbestf, 'Generations', 300, ...
'TolFun', 1e-15, 'StallGenLimit', 200);
[x, fval, exitFlag] = ga(anonFitness, nVars, A, b,[],[], LB, UB, [], IntCon, gaOptions);
는, x는 달의 각 시간 9 개 발전기 세트의 온/오프 상태를 나타냅니다. 스팀 생산 능력은 가변 스팀 용량과 동일하며 매 시간마다 일정한 스팀 부하가 발생합니다. 이는 불평등 제약 조건으로 표현됩니다.
도움을 주시면 감사하겠습니다.