JP / EN

10-Variable Nonlinear System

【MAL-Seeker初陣】10変数・1024解の非線形連立方程式を探索

$$f_i(x)=x_i-\sum_{j=1}^{10}g(x_j)+C_i=0\quad(i=1,2,\dots,10)$$

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分)です。

Dr.WataWata Insight:

今回、自作のプログラムが意図通りに動いて、無事に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