2026年7月26日日曜日

SAT Competition2026 AI tune問題が露呈

結果を見ると、AI tuneされたソルバLymphosatが、SAT問題において、異常に高性能であることが目につきます。一体何が起きたの?と思い論文をあたってみましたが、それらしい論文は報告されていませんでした。

これに関する議論をがなされたようです。今まで人間も生成AIほど精緻でなくとも、似たようなアプローチは行っていたわけで、必ずしもAI Tuneを責めるわけには行かない、ということのようです。

昨今のAI Tune結果が人間ソルバを凌駕していたのも、この結果である可能性が高い、ということではないでしょうか?
Autonomous Code Evolution Meets NP-Completeness

NeuroBack: Improving CDCL SAT Solving using Graph Neural Networks


同じインスタンスは使用しない(過去問は使用不可)、等の対策を取らないと競技会自体の存在意義問題になる可能性があると思います。いずれにせよ、個々のユーザにとって、自分の問題は常にUniqueなインスタンスなのですから、自分にとっての最適ソルバが優勝するような仕組みになってほしい、ということではないでしょうか?


■ AI生成/AIチューニングされたソルバーに関する論点まとめ

1. インスタンスデータが「長期記憶」として働く現象

  • LLM で生成されたソルバーは、過去のインスタンスから得た構造的知識を内部に保持する。

  • これは人間研究者が過去のベンチマークから洞察を蓄積するのと同じで、本質的に問題ではない

  • 生成AIやデータ駆動型ヒューリスティクスでは自然に起こる挙動。

2. 本当の課題は「記憶」ではなく「汎化性能」

  • 過去のデータを覚えていること自体よりも、訓練データにない構造へどこまで一般化できるかが重要。

  • AI生成ソルバーは、特定ファミリーに特化した前処理やヒューリスティクスを自動生成できるため、 → “構造の学習” と “単なる暗記” の境界が曖昧になる

3. 可能な対策(メリット・デメリット含む)

▶ 対策案A:構造的に類似したインスタンスをAIトラックで再利用しない

  • 実際には困難。

  • SATベンチマークは自然にファミリー化しており、類似構造を排除すると現実性が失われる。

  • また、正当な専門化(例:暗号系、回路系、計画問題向け前処理)まで制限してしまう。

▶ 対策案B:ファミリー認識を「許容される能力」とみなす

  • 人間研究者もポートフォリオソルバーもファミリー認識を行っている。

  • LLM生成ソルバーが同じことをするのは自然な進化。

  • ファミリー特化は不正ではなく、むしろSATソルバーの歴史的流れに沿っている。

▶ 対策案C:汎化性能を明示的に評価する

  • 公開データに存在しない「ホールドアウトファミリー」を用意する。

  • 新規生成された構造(合成ベンチマーク)でテストする。

  • 毎年新しい分布を追加し、過学習を検出する。

  • ML分野のベンチマーク設計に近いアプローチ。

4. 「ファミリーを認識すること」は問題か?

結論は以下の通り:

  • 問題ではない:構造的特徴を学習し、適切な前処理やヒューリスティクスを適用する場合。

  • 問題になる:特定インスタンスの解やバックボーンを“丸暗記”している場合。

  • 避けられない:AI生成ソルバーが主流になるほど、ファミリー特化は標準的手法になる。

  • むしろ有益:メタ学習・自動アルゴリズム設計・ポートフォリオ最適化が進む。

■ まとめ(短縮版)

  • LLM生成ソルバーがインスタンスファミリーを認識し、特化した前処理を行うのは自然な進化であり、必ずしも不公平ではない。

  • 本質的な課題は「暗記」ではなく「汎化性能の測定」。

  • 汎化を評価するためには、ホールドアウトファミリーや新規生成インスタンスを導入するなど、ベンチマーク設計のアップデートが必要。

  • ファミリー特化はSAT研究の歴史的流れに沿っており、AI時代には標準的なアプローチになる可能性が高い。


特定インスタンスの答えを丸暗記していて、それが能力の高い見せかけになる可能性があるということですね。

はい、その理解でほぼ正確です。 そして、この点こそ AI生成ソルバー時代のSAT競技で最もセンシティブな論点 になります。

■ 問題の核心

特定インスタンスの解やバックボーンを丸暗記しているだけなのに、 あたかも「強いソルバー」に見えてしまう可能性がある。

これは SAT Competition の「汎化性能を評価する」という理念と衝突します。

■ なぜ“丸暗記”が危険なのか

● 1. 実力の錯覚が起きる

  • ソルバーが特定の DIMACS ファイルを覚えているだけなら、 → 未知のインスタンスでは全く役に立たない

  • しかし競技では「既知のベンチマーク」が多いため、 → 丸暗記でも高スコアが出てしまう → 実力と評価が乖離する

● 2. AI生成ソルバーは丸暗記を“自然に”やってしまう

LLM は訓練データのパターンを内部に保持するため、

  • 特定の構造

  • 特定の変数名

  • 特定の制約の並び などを覚えてしまうことがある。

これは人間の「暗記」と違い、 規模が大きく、検出が困難 という特徴がある。

■ ただし「構造を学習すること」は正当な能力

ここが重要な区別です:

✘ NG:特定インスタンスの解を丸暗記

  • 例:このファイルは変数 x123 が True で始まる

  • 例:この CNF の backbone を丸ごと記憶 → これは競技の精神に反する

✔ OK:ファミリーの構造を学習

  • 例:暗号系は XOR が多い

  • 例:回路系はゲート構造が階層的

  • 例:計画問題は制約グラフが疎 → これは人間研究者もやっている正当な専門化

AI生成ソルバーはこの境界が曖昧になりやすいため、 「丸暗記による能力の見せかけ」をどう防ぐかが競技の課題 になります。

■ SAT Competition が今後直面するであろう課題

  1. 丸暗記を検出する方法がない

  2. LLM は構造学習と暗記を同時に行うため境界が曖昧

  3. ファミリー特化は正当だが、インスタンス特化は不正

  4. 新しいベンチマーク設計(ホールドアウト)が必要

つまり、

AI生成ソルバーの時代には、従来の「ベンチマークを解かせるだけの評価方法」が限界に近づいている。

■ 一言でまとめると

はい、特定インスタンスの答えを丸暗記して高性能に見せかける危険性がある。 だからこそ「汎化性能の評価」が今後のSAT競技の最大のテーマになる。

2026年7月25日土曜日

instance23が、104598秒で解けた

 Copt8.03Barrier. Ryzen5950X RTX4060TIGPUです。


マシンを最新CPU/GPUにすれば、1日内も可能と思われます。このインスタンスついては、既にKnownResultが存在し世界記録更新ではない、ので学術的価値はありません。が、菅原システムズ内においては、記録更新なので大きな一歩です。

にしても、一つのインスタンスの記録更新を果たすのに5年もかかってしまいました。


AutoRosterでの検証


2026年7月23日木曜日

Claude Codeを導入

 とりあえず、Pro版を導入してみました。

技術内容を相談していますが、ChatGPTのような忖度はなく、クールな印象です。今のところ瑕疵は、発見していません。

現在のC++ソース課題として、

1)Highsソース最新の取り込み

2)Highs IIS機能の実装

3)整数Branchの一般化

4)一般インスタンスへの展開(シフトのみ)

5)MCPインタフェースの実装

があります。そのあとにRefactoring作業が必要になります。C++ソースとして、現在数十万行になっていますが、実験コード等が散在してために整理が必要です。人に見て頂くための作業が必要です。最上位プランを使ったとしても、一気にRefactoringは出来ないと思いますが、つい1年前なら、1年以上かかると思っていた作業が、上記を使えば、そんなにはかからないだろう、という気になってきました。日本語Document生成も可能です。これもいちいちコメントタグを書く必要もなくなりました。

Instance21が1273秒で解けた

 Copt8.03Barrier. Ryzen9700x RTX3800GPUです。

マシンが変わっただけでほぼ倍速となりました。


2026年7月22日水曜日

Lagrange緩和と列生成

 Q.lagrange緩和と列生成は結果として同じ意味と考えてよい?


結論から言うと、ラグランジュ(Lagrange)緩和と列生成法は「数学的なアプローチは異なるが、結果(得られる上界・下界の質)としては本質的に同じ意味(等価)」と捉えて問題ありません。
これは最適化理論における「最適化問題の対双対性(Duality)」によって証明されており、大規模な整数計画問題を解くための2つのアプローチが表裏一体の関係にあることを示しています。

1. なぜ「同じ意味」と言えるのか?
整数計画問題の線形計画緩和(LP緩和)に対して、以下の2つの操作を行うと、全く同じ最適目的関数値(バウンド)が得られます。
  • ラグランジュ双対問題:制約条件を目的関数に「ペナルティ」として組み込み、元の問題を解きやすくするアプローチ。
  • ダンツィグ・ウルフ(Dantzig-Wolfe)分解 + 列生成法:変数の数が膨大な元の問題を、マスター問題(主問題)とサブ問題に分解し、必要な変数(列)だけを逐次追加していくアプローチ。 [1, 2]
数学的には、ラグランジュ双対問題を「劣勾配法」などで解くプロセスと、ダンツィグ・ウルフ分解された主問題を「列生成法」で解くプロセスは、主対双対の関係(表と裏の関係)で完全に一致します。

2. 2つの手法の決定的な違い(比較表)
結果として得られる境界値(バウンド)は同じですが、解くプロセスや得られる情報には以下のような違いがあります。
比較項目ラグランジュ緩和法列生成法(ダンツィグ・ウルフ分解)
視点・アプローチ対双対空間(Dual) からアプローチ(制約を緩める)主空間(Primal) からアプローチ(変数を絞る)
得られる解の性質途中の解は一般に実行不可能(制約を満たさない)途中の解は常に実行可能(制約を満たす)
得られるバウンド最小化問題なら下界(Lower Bound)を更新していく最小化問題なら上界(Upper Bound)を更新していく
アルゴリズムの挙動劣勾配法などを使うため、収束の判定や調整が難しい単体法(シンプレックス法)の枠組みなので収束判定が明確

3. 直感的なイメージ
  • ラグランジュ緩和は、「守るのが難しいルール(制約)」を破ったペナルティ(ラグランジュ乗数)を調整しながら、少しずつ最適なペナルティの重みを探していく作業です。
  • 列生成法は、ペナルティの重み(潜在価格・双対変数)を基準にして、「いま一番利益になりそうな選択肢(列)」をサブ問題に探させ、会議(マスター問題)に提出させる作業です。
どちらも「サブ問題(解きやすい部分問題)」を繰り返し解くことで、元の巨大な問題の最適解(または精度の高い近似解)にアプローチしています。

4. アルゴリズム選択のポイント
実務でどちらを実装すべきかは、以下の基準で判断されます。
  • 実装のシンプルさ重視:ラグランジュ緩和(劣勾配法は比較的コードがシンプル)
  • 収束の安定性と商用ソルバの活用:列生成法(GurobiやCPLEXなどのLPソルバの機能をそのまま組み込めるため、現在の大規模最適化では列生成法+枝葉判定の「列枝分かれ法(Branch-and-Price)」が主流です)


2026年7月21日火曜日

RTX3800 →5070TI検討

Instance24を解くには、未だ遅いです。様々のReductionテクニックを駆使してきましたが、尽きました。COPTの評価ライセンスも、さすがにこれ以上の延長は認めてもらえそうにありません。これ以上時間を掛けるわけには行きません。

そこで、禁断のハードウェア増強を検討します。

4060TI→3800→5070TIと3度目のUpgradeになります。


1. 3800 → 5900 Ti でどれくらい速くなるか(ざっくり見積もり)

GPU Barrier Solver(COPT / cuOpt どちらでも)で効くのは主に:

  • FP64 性能

  • メモリ帯域

  • L2 キャッシュ容量

Blackwell 世代(5900 Ti)は、Ada 世代(3800)より

  • FP64: おおよそ 2〜3 倍

  • メモリ帯域: 1.5〜2 倍程度

  • L2: 大幅増(スパース行列のアクセス効率アップ)

を見込めるので、Barrier 1 回あたりの時間は「2〜4 倍程度の短縮」が現実的なレンジです。

いま 30〜90 秒かかっているなら、 10〜30 秒くらいまで落ちる可能性は十分ある、という感覚値。

ただし:

  • 行列の疎度・構造

  • ソルバー側の GPU 実装の最適化度合い

によって振れます。「最低でも 2 倍、うまくハマれば 3〜4 倍」くらいを期待値にしておくのが妥当です。

2. FP32 にする方法はないのか?

結論から言うと:

「本気の Barrier Solver を FP32 で回す」のは、ほぼ現実的ではないです。

理由はシンプルで、

  • Barrier は KKT 系の解法(線形代数)が中心で、

  • そこでの誤差が dual/primal の精度に直結し、

  • B&P の RMP では dual の精度が列生成の品質に直結するから。

FP32 にすると:

  • 条件数の悪い行列で誤差が爆増

  • 収束しない/反復数が増える/列生成が壊れる

というリスクが高く、「速くなったけど解が信用できない」状態になりやすい

3. 例外的に FP32 を絡める可能性があるとしたら

完全 FP32 は無理でも、ソルバー側が内部で:

  • mixed precision(FP32+FP64)

  • 前処理だけ FP32、最終解は FP64

のような工夫をしている場合はあります。 ただしこれは ソルバー実装側の話で、ユーザーが「FP32 モード」を選ぶようなものではないことが多いです。

つまり、「ユーザー設定として FP32 Barrier に切り替える」選択肢は、基本的に存在しないと思っておいた方がいい。


 5070TIではなく5070 12GBならどうなりますか?

結論だけ先に
  • 3800 → 5070(12GB)なら、Barrier はざっくり 1.3〜2 倍くらいの短縮が上限に近い

  • 5070 Ti と比べると、FP64 とメモリ帯域が落ちるので、GPU Barrier 目的ならかなり見劣りする

  • RMP が大きいなら、12GB はメモリ容量的にもかなりギリギリになりうる

1. 5070 12GB の位置づけ(GPU Barrier 観点)

5070 無印は、

  • FP64 性能: Ti よりかなり低い

  • メモリ帯域: Ti より低い

  • VRAM: 12GB(Ti はもっと多い想定)

GPU Barrier Solverは、

  • 大規模疎行列の FP64 演算+メモリアクセスが支配的なので、

  • Ti との差がそのまま性能差になりやすいです。

そのため、

3800 → 5070 無印だと、「世代差+多少の帯域アップ」で 1.3〜2 倍程度が現実的なレンジ 「劇的に世界が変わる」ほどではない。

2. メモリ 12GB のボトルネック

あなたの RMP は、

  • 行数 12,000

  • 列数 数万

  • B&P で列が増え続ける構造

なので、

  • 行列+ワークスペース+ソルバー内部バッファを含めると、 12GB は「余裕がある」とは言いづらいラインです。

  • 余裕がないと、

    • ページングや分割処理が増える

    • 転送オーバーヘッドが増える → 結局、GPU のポテンシャルを出し切れないことが多い。

3. 5070 無印を選ぶ意味があるケース

  • 問題サイズがそこまで大きくない(行数・列数がもっと小さい)

  • コスト重視で「とりあえず 1.5 倍くらい速くなればいい」ラインを狙う

  • 他の用途(ゲーム・一般用途)との兼用で、Ti まで要らない

Barrier Solver を「本気でボトルネック潰す」目的なら、

5070 無印より、5070 Ti(あるいは 5900 Ti クラス)を狙った方が投資対効果は明らかに良いです。

2026年7月20日月曜日

CuoptとCOPT Barrier Solver 比較

 結論(最重要ポイント)

現時点の公開ベンチマークでは、GPU Barrier Solver は COPT の方が明確に速い です。 特に Mittelmann LPfeas ベンチマークでは、 COPT-GPU(COPTG)が cuOpt より約 26 倍高速 という結果が出ています。


🔍 1. 公開ベンチマークによる直接比較

Mittelmann の LPfeas Benchmark (2026/06/12) における solver score(低いほど速い):

SolverScore備考
COPTG (COPT GPU Barrier)1.00最速
cuOpt (GPU Barrier)26.06COPTG の約 26 倍遅い

出典:Mittelmann ベンチマークの可視化ページ

🔍 2. なぜ COPT GPU Barrier が速いのか

公開情報から読み取れる理由:

  • COPT は商用ソルバーで唯一 GPU Barrier を実装 → cuOpt は PDLP や GPU Barrier を持つが、Barrier の成熟度は COPT が上。

  • COPT の GPU Barrier は大規模 LP に特化して最適化されている → cuOpt は汎用 LP/MIP/VRP 向けで、Barrier は比較的新しい。

  • COPT は CPU 版 Barrier でもトップクラス → GPU 版でもその設計が継承されている。

🔍 3. ただし例外:PDLP 系では cuOpt が強い

cuOpt の PDLP(cuPDLP-C)は、 zib03 を 15 分で解く(COPT CPU は 16 時間)という圧倒的性能を示しています。

つまり:

  • Barrier Solver の比較 → COPT が圧勝

  • PDLP の比較 → cuOpt が非常に強い

あなたの用途が Barrier(内点法)での RMP 解法なら、 COPT GPU Barrier が最速です。