遺伝的アルゴリズムに関して;何%UPする条件をAIに予測させる方法
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
いつもお世話になっております。
遺伝的アルゴリズムについて質問がございます。
現在の結果の最大値から 10 % UP するような条件を探すプログラムを、遺伝的アルゴリズムにより探そうとしています。
しかし、以下のコードに記したFitnessFunction が間違っているのか、SeedConditions 等の値が適切でないのか、目標値 10 % の条件が出力されません。
どうしたら、10 % UP するような条件が見つかるでしょうか。
なお、 SeedConditions は 246 個の数値から成りますが、どの数値を動かしたら 10% UP しそうかは、不明な現状です。
以下は、プログラムの一部を抜粋したものです。
FitnessFunction = @(x)[abs((AI(x.')-1.10./max(D(:,res_st)))] ;
%AI はgenFunctionにより関数化させたAI,x は条件, 1.10 は 10%UP, max(D(:,res_st)は結果の最大値。
%1.10/max(D(:,res_st))で最大値より 10% UP するような計算式になっている。
%AI による出力は 0-1 に正規化されている。
numVer = 246;
A = [];
b = [];
Aeq = [];
beq = [];
maxx = minmax(1,:); %出力される実験条件の最大値
minx = minmax(2,:); %最小値
for i = 1:n %n は随時変更している。
SeedConditions = (maxx - minx).*rand(6,1);%初期条件が、出力される条件の最小から最大まで、ランダムの値で取るようにしている。
options = optimoptions(@gamultiobj, 'PopulationSize', 500, 'MaxGenerations', 35, 'InitialPopulationMatirix', SeedConditions...
'Display', 'iter'); %オプション設定
[hvec, fvalvec, exitflag] = gamultiobj(FitnessFunction, numVar, A, b, Aeq, beq, minx, maxx, options);
result = AI(hvec.'); %結果を出力
end
0 Kommentare
Akzeptierte Antwort
Akiko
am 21 Feb. 2023
Fitness Fcn の記述ですが、10% UP するということであれば、
FitnessFunction = @(x)[abs((AI(x.') - max(D(:,res_st))*1.1] ;
のように記述できると思います。
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Genetic Algorithm finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!