1

X、Y、Zの3つの値があります。これらの値の範囲は、0から1(0と1を含む)です。関数f(X、Y、Z)を呼び出すと、値V(0から1の間の値)が返されます。私の目標は、戻り値Vが可能な限り1に近くなるように、X、Y、Zを選択することです。

選択プロセスは自動化する必要があり、X、Y、Zの正しい値は不明です。

私のユースケースにより、YとZを1に設定して(値1は出力に影響を与えません)、Xの最適な値を検索することができます。その後、Xをその値に置き換えて、同じことを行うことができます。 Yの場合。Zの場合も同じ手順。

「関数の最大値」を見つけるにはどうすればよいですか?「最急降下法」や山登り法のアルゴリズムなどはありますか?モジュラー全体がperlで書かれているので、その問題を解決できるperlのパッケージがあるのではないでしょうか。

4

2 に答える 2

2

シミュレーテッドアニーリングを使用できます。その多変数最適化手法。また、巡回セールスマン問題の部分的な解決策を取得するためにも使用されます。PeterNorvigのIntrotoAIの本でも言及されている検索アルゴリズムの1つです。

確率変数に依存する山登りアルゴリズム。また、必ずしも「最適な」答えが得られるとは限りません。計算/時間のニーズに応じて、必要な反復を変更することもできます。

http://en.wikipedia.org/wiki/Simulated_annealing http://www1bpt.bridgeport.edu/sed/projects/449/Fall_2000/fangmin/chapter2.htm

于 2012-06-02T17:16:37.723 に答える
1

関数の停留点を見つけるためのネルダーミード法Math::Amoebaを実装しているものを見てみることをお勧めします。

于 2012-06-02T17:11:33.037 に答える