遺伝的アルゴリズムに​関して;何%UPする​条件をAIに予測させ​る方法

3 次查看(过去 30 天)
かなえ 永井
かなえ 永井 2023-2-8
いつもお世話になっております。
遺伝的アルゴリズムについて質問がございます。
現在の結果の最大値から 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

采纳的回答

Akiko
Akiko 2023-2-21
Fitness Fcn の記述ですが、10% UP するということであれば、
FitnessFunction = @(x)[abs((AI(x.') - max(D(:,res_st))*1.1] ;
のように記述できると思います。
  1 个评论
かなえ 永井
かなえ 永井 2023-2-21
この方法で試したところ、無事に 10 %UP の結果が出力されました。
ご回答ありがとうございました。

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Genetic Algorithm 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!