1

私の遺伝的アルゴリズム最適化スクリプトは 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 と同じであり、毎時間満たさなければならない一定の蒸気負荷があります。これは、不等式制約によって表されます。

どんな助けでも感謝します。

4

1 に答える 1