私の遺伝的アルゴリズム最適化スクリプトは 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 は、1 か月の各時間の 9 つの発電機のセットのオン/オフ状態を表します。それらの蒸気生産能力は、変数 steamCapacities と同じであり、毎時間満たさなければならない一定の蒸気負荷があります。これは、不等式制約によって表されます。
どんな助けでも感謝します。