- 締切済み
Excelで最大値を与える説明変数求める方法
ソルバーを使うと結構な確率でエラーになります。 共役傾斜法とか準ニュートン法ってのが「最初にどこからスタートするか」に依存するからのような気がするのですが、そこで、 (1)適当に正規分布に従う乱数を100個発生させる。 (2)その乱数を説明変数にして目的変数を得る。これを100回繰り返す。 (3)100個の目的変数が得られたら、そのうち目的変数の値が大きい方から上位50個についての説明変数の標準偏差を求める(下位50個は捨てる) (4)上位50個の目的変数のうちでも最大値を与える説明変数1つを選らんで平均値とし、(3)で求めた上位50個の標準偏差を標準偏差として、この2つのパラメータにて正規分布に従う乱数を50個出す。 (5)先ほど(3)で使った上位50個の説明変数(下位50個は捨てる)と(4)の50個説明変数の計100個より100個の目的変数を得る (6)以後(3)~(5)を何度も何度も繰り返す。そのうちに上位50個の標準偏差がだんだん小さくなってくる。ある程度小さくなったところで、そのときの説明変数を「目的変数を最大にする説明変数」とする。 というVBAのマクロを組んでみたところ、時間はかなりかかるするものの(と言っても等間隔の目的変数をしらみつぶしにする方法よりははるかに速い)、エラーになりにくい(もちろん関数が収束するなら)し、結果を念のためソルバーに入れてやるとほぼそこから答えが動かない、と、結構いいような気がするのですが、悲しいことに基礎的な素養が無いからこれが数理的に正しいことなのかわかりません。 感覚的には正しい気がするのですが、いかがなものでしょうか。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- rabbit_cat
- ベストアンサー率40% (829/2062)
回答No.2
- f272
- ベストアンサー率46% (8653/18507)
回答No.1
お礼
うわぁ~英語だぁ…日本語でも分からんのに自分にはちょっと荷が重いですが、「遺伝的アルゴリズム」というキーワードが分かったので、それを手がかりにちょっと勉強してみます。