필터 지우기
필터 지우기

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

조회 수: 1 (최근 30일)
かなえ 永井
かなえ 永井 2023년 2월 8일
댓글: かなえ 永井 2023년 2월 21일
いつもお世話になっております。
遺伝的アルゴリズムについて質問がございます。
現在の結果の最大値から 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!