[[20210516171150]] 『ソルバーが遅くなって使えない…』(kagemarucat) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ソルバーが遅くなって使えない…』(kagemarucat)

すみません、どなたか教えてください。

ソルバーで使用して、
4000という数字に近い組み合わせを表示させていたのですが、
いつの間にかむちゃくちゃ遅くなってしまいました。
昨日までは早かったのに、今では使い物にならないくらい遅いです。

元のスピードに戻すことは出来ないでしょうか?

お願いします。、

< 使用 Excel:Excel2019、使用 OS:Windows10 >


[[20210516175244]] に関連発言あり(問題の説明はそちらを参照)。

遅くなったのではなく、たぶん以前と違う設定で実行したのだと思います。
同一手法で遅くなるというのは考えにくいですね。

今回の課題は、変数が13個だから、組み合わせは 2^13 = 8,192 とおりしかない。
13重のループを使った原始的方法でも
すべての組み合わせを作れば、結果は簡単にわかります。

ソルバーについての質問と考えて、
少しメモして、閲覧者の参考に供したい。

ソルバーが遅いというか、
採用する手法によって、分岐をどこまで細かくとって分析するか等が変わるので、
結果を出す時間は、それらの手法に応じて変動する、という認識が必要。
つまり、3つある"解決手法"のどれを選択するかが、かなり重要。

実行画面のインストラクションとして、
| 「解決方法」の選択には、
| ・滑らかな非線形を示すソルバー問題には 「GRG非線形」エンジン
| ・線形を示すソルバー問題には 「LP シンプレックス」エンジン
| ・滑らかではない非線形を示すソルバー問題には 「エボリューショナリ」エンジン
| を選択して下さい。
と書いてあるのでこれが全てだが、少し追記しておきます。

●「シンプレックス LP」
これは、線形計画問題において威力を発揮する伝統的方法。
今回のケースでは、非線形なので適当ではないと思う。
反応は早いものの、3960という解が最適と表示してしゃあしゃあとしている。
Excelのソルバーは必ずしも最適解を保証するものではないと知るべき。
特にこの問題に「シンプレックス LP」を使うのは不適当です。

●「GRG非線形」
これは非線形モデルに適用するもの。("一般化簡約勾配法"というのを利用するらしい)
これも、「滑らかな非線形」ではないので、手法選択の誤りということになる。

それでも動作させてみると、
初期値によっては、3919などを最適値として報告したりする。
初期値依存性が結構あるようです。
これを改善するため、オプションに、「マルチスタートを利用する」というのがある。
(初期値をいくつかランダムに生成して使うようです。)
逆に、このオプションを利用すると、精度は上がるものの、
時間が異常にかかる、容易に返ってこないこともある。今回もそのようだ。。

●「エボリューショナリー」
非線形モデルに対応可。("遺伝的アルゴリズム"を使用しているとのこと)
今回はこれを使うべき。

これは、時間を若干要すものの、3,985という最適解を表示する。
時間を縮小するには、オプションにある「改善が見られない最大時間」を変更する。
デフォルトでは30になっていたが、これを5などにすれば、早くに見切りをつけてくれる。
5にしても3,985を表示した。(それでも10秒近くかかりました)

■上記をひとことで言えば、今回の問題は、
・「エボリューショナリー」を使い、
・さらに、「改善が見られない最大時間」を5 に設定するとよい、
ということだが、全体の概要を頭に入れた方がよいと思う。

(余談)
ちなみに、Excelではないが、別の処理系でGLPKというfreeのソルバーを使って解いたところ、
0.007秒で結果(3985)が出た。道具によって、得られるものは変わってきます。

(γ) 2021/05/17(月) 08:38


自分の勉強不足でお手間を取らせて申し訳ありません!
本当に助かります。
素人ながらやってみてなかなかうまく行かずに、途方にくれていました…

最後まで細かな説明本当に感謝します!
(影猫) 2021/05/18(火) 21:56


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.