10-Variable Nonlinear System
【MAL-Seeker初陣】10変数・1024解の非線形連立方程式を探索
10-Variable Nonlinear System of Equations
Roots: 1024 Points in 10D Space
1. 対象となる方程式(10変数の迷宮)
当Laboratoryで新たに開発した全解探索ソルバー「MAL-Seeker (Antares Ver 3.1.1)」。今回はその初陣のテストケースとして、解が1,000個以上存在する「10変数の非線形連立方程式」の全解探索に挑んだ記録をご紹介します。
ターゲットとする方程式は、各変数 $x_i$ に対して、非線形な関数 $g(x_j)$ がすべての変数から絡み合って足し合わされる形をしています。解析の結果、この方程式が持つ「真の解(谷底)」の数は、1,024個にも上ることが分かっています。10次元という目に見えない多次元空間の中に、1,024個の正解ポイントが散らばっている状態です。
2. SPICE指向型解析法からのバトンタッチ
これまで当Laboratoryでは「SPICE指向型解析法(ニュートン法やホモトピー法)」をメインに使ってきました。この方法は、方程式の連続的な振る舞いや、特定の解までの軌跡をじっくり追うのには非常に便利です。
しかし、今回のように「解が1,000個以上あるから、とにかく全部探したい」といった総当たり的な全解探索となると、シミュレータ上で回路網として大規模に展開したり、膨大なループ処理を組んだりする必要があり、どうしてもSPICE本来の用途からは少し外れてきて計算コストも嵩んでしまいます。
そこで、探索に特化した専用ツールとしてC言語で自作したのが「MAL-Seeker」です。
3. MAL-Seekerによるアプローチ(10万匹のマルの投入)
MAL-Seekerは、私の愛犬(ポメラニアンの「マル」)の5感をモデルにした泥臭いアルゴリズムで動いています。空間全体に10万匹のマル(初期シード)をばら撒き、以下のような前処理を行います。
- 👃 嗅覚(デフレーション法): すでに見つけた解には強烈な悪臭ペナルティをつけ、他のマルが同じ穴を掘らないようにする。
- 👅 味覚(勾配テスト): 足元の傾きを舐めて確かめ、平坦すぎる場所や崖を避ける。
- 👂 聴覚(クラスタリング): 仲間の足音を聞き、近すぎるマル同士は道を譲り合って無駄を省く。
これらの「5感の審査」を通り抜けた少数のマルだけが、最後にニュートン法のスイッチを押し、谷底へ一気に滑り降ります。
4. 実行結果
MacBookのローカル環境にて、MAL-Seekerを実行したターミナルの最終ログがこちらです。
=========================================
Total Valid Roots Found: 1024 (Out of 1024 local minima)
Execution Time: 240.492646 seconds
=========================================
1,024個すべての解を漏れなく発見することができました。計算時間は約240.5秒(約4分)です。
今回、自作のプログラムが意図通りに動いて、無事に1,024個の解をすべて拾い上げてくれたことに少しホッとしています。
「10万匹のマルを放って、バッチ処理が100回連続で空振りするまでひたすら探し続ける」というかなり泥臭くて執念深いアルゴリズムですが、結果的に4分程度という現実的な時間で探索を完了できました。今後はこのMAL-Seekerを使って、さらに色々な方程式を試していこうと思います。
5. 解析環境
- 解析エンジン: MAL-Seeker (Antares Ver 3.1.1 / C言語)
- PC: MacBook
- OS: macOS Monterey 12.7.6
- CPU: 1.2GHz デュアルコア Intel Core m5
- メモリ: 8GB