cocolog:91372755
穴井宏和『数理最適化の実践ガイド』を読んで、micro_economy_*.py について検討した。価格を 1 から 1000 までに抑える制約をペナルティ関数法を使って考慮すべきか迷う。また、最適化で競争をどう表現するかで迷っている。 (JRF 6429)
JRF 2019年10月 8日 (火)
最適化について、理論的導出ではなく、利用者の観点にたった紹介がメインの本。非線形最適化に多くの紙片を費やしており、線形計画法についても書かれているが、それは別の本に頼るべきだろう。
最適化は、目的関数の gradient のイコール 0 となるところで、gradient の二回微分に相当するヘッセ行列(Hessian matrix)を用いた凸性の判断と組み合わせて判断するのが基本となる。
JRF2019/10/87668
制約を含んでラグランジュ関数にする方法ももちろん解説している。アルゴリズムでは BFGS 法も紹介がある。
その後、非凸計画問題への対応として、遺伝的アルゴリズム(GA)や、粒子群最適化法(PSO)の説明がある。私が micro_economy_*.py で採用している Nelder-Mead 法は紹介がない。焼きなまし法(アニーリング法 SA)は簡単な紹介のみある。
JRF2019/10/83890
数式ごと最適化する手法も少し詳しく紹介されており、その方法としての QE (Quantifier Elimination) は論理学をやっていた私には興味深い方法だった。ちょっと説明すると…。
(Ex x. x ** 2 + b * x + c) という式を自動的に b ** 2 - 4 * a * c > 0 という限量記号を含まない形式に自動的に変換する一般的なアルゴリズムがある。
JRF2019/10/87680
これを使い (Ex x. k = f(x) and g_1(x) >= 0 ...) という式を k について解くと、最適値を求めることのできる k に関する不等式が求まる。
…という寸法である(ただし、f(x) や g_1(x) は多項式で、あまり複雑なものは計算量が爆発する)。
JRF2019/10/83363
複数の最適化を同時に行う多目的最適化についても解説がある。重み付き和は私も考案していたが、重み付き max を使うチェビシェフスカラー化関数(Tchebyshev scalarization function) は思い付いていなかった。
あとは、工業的場面などで、最適化関数がはっきりとはわからない場合、応答曲面法を用いればいいという紹介があった。
JRF2019/10/82840
……。
紹介の部分はある程度わかった気にさせてくれるので、それは読んでよかったが、当然、理解力の足りない私…眼がどんどんかすんでくるのと同様におそらく知能もますますかげりつつある私…では、ちゃんと理解したと言えない部分も多かった。
JRF2019/10/88154
……。
micro_economy_*.py (↓) で、よくわからないまま最適化を使っていたが、その点についてもう少し検討を加えたいというのが、この本を読んだ動機だった。
《ミクロ経済学の我流シミュレーション その1 基礎経済モデル》
http://jrf.cocolog-nifty.com/society/2018/03/post.html
JRF2019/10/89131
多目的最適化については、基本、やっぱり和を取るしかないんだな…とあたりをつけれたのは良かった。
気になっている点として、gradient を取るのが難しいので、微分を使わない無制約の最適化を使っているのだが、それでも価格を 1 から 1000 の間にするような制約は欲しく、制約の外に出たら無限大にすることで、無理矢理に制約を課すようなことをしている。どうもこの本によると、そういうときは、普通は、ペナルティ関数法を使えばよいとのこと。
JRF2019/10/84247
でも、結局 gradient が使えないから終了条件が使えないのではないか…とか Nelder-Mead 法でそれをして意味があるのか…というところでよくわからない。まぁ、試せばいい…ということかもしれないが、試して使うことになれば時間も余計にかかるし、迷っている。
JRF2019/10/89747
また、競争をどう最適化を用いて表すかという点でも私には迷いがある。これまでは、企業どうしの競争について、最適化で利益を最大化するというのとは別に、弾力性や優位性をもとに分配すなわち競争結果が決まるとしていた。
JRF2019/10/84953
今、考えている途中なのは、資本家どうしの競争をどう考えるかというところ。資本家どうしが競争することで、企業数が 1 よりも大きくなると同時に、その数が資本家の数ぐらいに限られる…ということをやろうとしている。これは最適化するとき、企業の数が 5 を増えるまで最適化関数が増え、それ以降は増えないとすることで実現できるのだが、その裏で、資本家はどういう競争をすれば、そういう最適化と「矛盾なくできるか」が問題となる。
JRF2019/10/88390
企業の数を5ぐらいにするというだけなら、資本家がどうたらという議論はいらない。しかし、最適化が何がしかの競争の結果なされると考えるなら、資本家というものを考える必要があるのではないか。そして、資本家がどう企業をもつかという部分では、矛盾がないようにする必要があるのではないか。
JRF2019/10/83747
つまり、社会は最適化したいこと(この例では企業の数を5ぐらいにする)があるが、それをどういう競争を通じて実現するかという問題があり、それは本来は別のことなのではということ。ただし、最適化のために、競争が目的を導かない場合は、いくらでもルールをいじっていいというのも通常の競争とは少し違う。
社会の最適化を考えるには、ある「最適化」が可能なような競争ルールはあるか、最適化の結果はルールと矛盾がないか…を確認・証明する必要があるのではないか?
JRF2019/10/88313
遺伝的アルゴリズム(GA)のようなもので、エージェントを使って競争させる…ということも思考実験としては考えるのだが、競争を誰がどのように判断するのか、競争するエージェントとは別のエージェントに判断させるのか…とか考えていくと難しい。もちろん、乱数的要素もあろう。それは平均すれば結局、何がしかの最適化と等しい…とできるのではないか…そうできないとすれば何が違うのか。
JRF2019/10/81542
…とかいろいろ考えるが、どうも答えが出ず、迷っている。
JRF2019/10/82422
『数理最適化の実践ガイド』(穴井 宏和 著, 講談社, 2013年)
https://www.amazon.co.jp/dp/4061565109
https://7net.omni7.jp/detail/1106252139
JRF2019/10/86615