記事"遺伝的アルゴリズム - とても簡単です!"についてのディスカッション - ページ 19

 
Andrey Dik:
何かを最適化しようとしているのですね?ですから、この「何か」をFFという形で提示する必要があります。それは例えば、インジケータ・シグナルの利益ポイントの数などです。これがFFです。
FFについてお聞きしたいことがあるのですが、例えば、アドバイスのような場合、最適化はどこが問題なのか、このUGAは言われている利益の可能性を救うことができるのか、また、最適なインジケーターのパラメーターを設定する際に、EAの例のように仮想テストを行うべきなのか、もし、気を悪くされたら申し訳ないのですが、遺伝的アルゴリズムはランダムであり、どのように最適であることを確認することができるのか、可能であれば、遺伝的アルゴリズムにパラメーターの インジケーターを最適化さ せるために良い条件を入力します、例えば、過去の買い条件と利益条件を何ポイントで、遺伝的アルゴリズムが将来同じようなデータを使って最適化を実行する、そんな使い方がいいのでしょうか、他に思いつきません。もし間違っていたら、いい使用例を教えてください。乱数を入力して、今幸運に、また乱数を入力して負ける、などということがなければ、最適な結果が出ますが、推測の域を出ないのではないでしょうか。
 
SALEH:
FFについて、お聞きしたいことがあるのですが、例えば、アドバイスのような場合、最適化はどこが問題なのか、このUGAは言われている利益の可能性を救うことができるのかどうか、また、最適なインジケーターのパラメーターを設定するときに、EAの例のような仮想テストを行うべきかどうか、もしこれが気に障ったら申し訳ないのですが、遺伝的アルゴリズムはランダムであり、どのように最適であることを確認することができるのか、可能であれば、遺伝的アルゴリズムにパラメーターの インジケーターを最適化さ せるために良い条件を入力します、例えば、過去の買い条件と利益条件を何ポイントで、遺伝的アルゴリズムが将来同じようなデータを使って最適化を実行する、そんな使い方がいいのでしょうか、他に思いつきません。もし間違っていたら、いい使用例を教えてください。乱数を入力して、今幸運に、また乱数を入力して負ける、などということがなければ、最適な結果が出ますが、推測の域を出ないのではないでしょうか。

遺伝的アルゴリズムは、乱数をそのまま使うのではなく、確率分布を使っている。未来のことは誰にもわからないので、人は常に確率分布を使ってANYの決定を下すのです。パラメータをフルに反復して使うことはできますが、すべてを使うことはないでしょう。どの選択肢を使うかは自分で決める必要があるでしょう?- このような手動選択を将来適用した結果は、事前に不確実である、つまり決定論的ではないのだ。

 
Andrey Dik:

遺伝的アルゴリズムは乱数をそれ自体で使うのではなく、確率分布を使って使う。未来は誰にもわからないから、人は常に確率分布を使ってあらゆる決定を下すんだ。パラメーターの全反復を使うことはできるが、すべてを使うことはない。どの選択肢を使うかは自分で決める必要があるでしょう?- このような手動選択を将来適用した結果は、事前に不確実である、つまり決定論的ではないのだ。

もしそうであれば、どれを最適化するのが良いのかアドバイスをください。パラメータインジケータの 問題であれば、パラメータは頻繁に変わるので、私は少し同意できません。ご回答ありがとうございました。実験結果を共有したいですし、このUGAをさらに試すのに少しは役に立つかもしれません。
 
SALEH:
もしそうであれば、どれを最適化するのが良いのかアドバイスをください。パラメータインジケータの問題であれば、パラメータは頻繁に変わるので、少し同意できません。ご回答ありがとうございました。実験結果を共有したいし、このUGAをさらに試す上で少しは参考になるかもしれない。

取引システムについて何も知らずにアドバイスするのは難しい。

 
おめでとうございます!しかし、コードや例をコンパイルすることができませんでした。エラーは、"ServiceFunction ();" の行にあるようです。
 
Rafael Ladeia:
おめでとうございます!しかし、コードや例をコンパイルすることができませんでした。エラーは "ServiceFunction (); "の行にあるようです。

11年間のフィードバックに感謝します!)) 残念ながら、エラーは起こりえます。そのための時間しかないときに、コードを更新する時が来たようだ...。

 

現在、最適化の問題を抱えていて、このライブラリーが役に立つかどうか試しているところです。残念ながら、ライブラリの適切なセットアップ方法がよくわかりません。

私の例では、自分にとって最もリスクの少ないロットサイズの最適(最大)構成を計算したいのです。

これを行うために、私は単純に6つの文字をテスト用に取り、これらの文字について最適なロットサイズを見つける必要があります。そしてフィットネス関数で、それらの資産に対する期待ROIと、UGAが提案するロットサイズでの期待リスクを計算します。

もしリスクが私の閾値より小さければ、私は最大化する予想ROIをColony[0][chromos]に格納します。

これが私のコードです:

void CPortfolioRiskMan::GetOptimalWeights()
  {

   double ReplicationPortion_P  = 100.0;
   double NMutationPortion_P    = 10.0;
   double ArtificialMutation_P  = 10.0;
   double GenoMergingPortion_P  = 20.0;
   double CrossingOverPortion_P = 20.0;
   double ReplicationOffset_P   = 0.5;
   double NMutationProbability_P= 5.0;
//-----------------------Variables-------------------------------------
//UGA用グローバル変数の準備
   ChromosomeCount=6; //コロニー内の染色体数
   GeneCount      =6;       //遺伝子数
   RangeMinimum   =0.01;    //検索範囲の最小値
   RangeMaximum   =1;    //検索範囲の最大値
   Precision      =0.01;       //検索ステップ
   OptimizeMethod =2;  //1-最小、その他-最大

   ArrayResize(Chromosome,GeneCount+1);
   ArrayInitialize(Chromosome,0);
   Epoch=50;                     //改善されなかったエポック数




//UGAのメイン機能の開始
   UGA
   (
      ReplicationPortion_P, //レプリケーションの一部。
      NMutationPortion_P,   //自然突然変異の割合。
      ArtificialMutation_P, //人工突然変異の部分。
      GenoMergingPortion_P, //遺伝子の採用割合。
      CrossingOverPortion_P,//交差する部分。
      ReplicationOffset_P,  //区間境界のシフト率
      NMutationProbability_P//各遺伝子の突然変異の確率(%)。
   );



  }



void FitnessFunction(int chromos)
  {
//-----------------------Variables-------------------------------------

   double weight=0.0;
   double ClosePrices[]= {1.21,0.98,1.31,1.22,0.99,0.86};
   string symbols[]= {"EURUSD","GBPUSD","AUDNZD","EURAUD","NZDJPY","GBPJPY"};
   double tickvalues[]= {0.94,0.78,0.56,0.76,0.45,0.94};
   double tickstep=0.00001;
   double Lotsizes[6];
   double av_return=0;

//----------------------------------------------------------------------


   for(int u=1; u<=GeneCount; u++)
     {
      Lotsizes[u-1]=Colony[u][chromos];
      av_return+=Lotsizes[u-1]*tickvalues[u-1]*tickstep*ClosePrices[u-1];
     }

   double risk=CalculateVaR(symbols, Lotsizes);

   if(risk>50)
      Colony[0][chromos]=-10000000.0;
   else
      Colony[0][chromos]=NormalizeDouble(av_return,2);


   AmountStartsFF++;
  }
 
Filip #:

現在、最適化の問題を抱えていて、このライブラリーが役に立つかどうか試しているところです。残念ながら、ライブラリの適切な設定方法がよくわかりません。

私の例では、私自身のリスクを最小にするために、ロットサイズの最適な(最大)構成を計算したいのです。

これを行うために、私は単純に6つの文字をテスト用に取り、これらの文字について最適なロットサイズを見つける必要があります。そしてフィットネス関数で、それらの資産に対する期待ROIと、UGAが提案するロットサイズでの期待リスクを計算します。

もしリスクが私の閾値より小さければ、私はColony[0][chromos]で期待ROIを最大にします。

これが私のコードです:

質問の意味がよくわかりませんでした。

一般的に、これは非常に古いバージョンのアルゴリズムで、現在の "Population Optimisation Algorithms "の記事にある、より応用しやすいアルゴリズムスキームには準拠していません。

私は、SDSアルゴリズムか、表にある他のアルゴリズムを使うか、UGAの更新版を待つことをお勧めします(この古いが非常に強力なアルゴリズムの記事で、新しい外観を公開することが適切かどうかはわかりません)。

私なら、UGAをランキング表に含めて、この記事を新しく書き直します。

ZY:既存の記事を書き直すことは不可能だと思います。

 
コンパイルできない。
 
gardee005 #:
コンパイルできません。
エラーのリストを見せて ください コードは 非常に 古く しかし、 14 年経っても壊れる ようなことはありません