1 凸最適化の概要
凸最適化は、目的関数が凸であり、制約集合も凸である最適化問題を対象とする。凸性のもつ幾何学的構造によって、局所的な改善が大域的な改善に結びつきやすく、最適解の理論的な性質や数値計算上の振る舞いを比較的体系的に扱える。
実務上は「難しそうに見える問題を、凸として定式化できる形に書き換える」ことが価値となる。これにより、解の存在や一意性の議論、アルゴリズム設計、精度や収束の見積もりが可能になり、制御・推定・機械学習など多様な分野で信頼性の高い手法を提供しやすい。
1.1 凸性の基本概念
1.1.1 凸関数と厳密な凸性
凸関数とは、任意の2点の間で、その関数値が線分上で「持ち上がる」性質をもつ関数である。数学的には、定義域内の任意の点 \(x,y\) と \(t\in[0,1]\) について \[ f(tx+(1-t)y)\le tf(x)+(1-t)f(y) \] が成り立つことを指す。等号が常に成り立つ場合は線形成分を含むことが多く、一般に凸性は「曲がり具合」の制約として解釈できる。
厳密な凸性は、上式で等号が中間点に対して起きにくいことを要求する概念で、結果として最適解の一意性につながりやすい。たとえば、制約が凸で目的が厳密に凸なら、最適解は通常一つに定まる。
1.1.2 凸集合と実現可能集合
凸集合とは、集合内の任意の2点を結ぶ線分が、集合の内部(または境界を含む場合は境界まで)に含まれる性質をもつ集合である。凸最適化では、実現可能集合(制約を満たす点の集合)が凸であることが重要になる。
特に、半空間の交わりとして表せる集合は凸になりやすい。線形不等式で与えられる制約は典型例であり、この性質が問題の「凸化」を支える基本要素となる。
1.1.3 凸性に関する代表的性質(合成・和・スケーリング)
凸性は演算によって保存される場合が多い。代表的には、凸関数の非負係数付き線形和は凸である。さらに、スケーリングとして、非負の定数倍も凸性を保つ。
合成については条件がある。たとえば、外側の関数が凸で、内側の変換がアフィン(あるいは単調性を満たす)場合に、合成後も凸性が維持されることがある。このため、モデル構造に応じて安全に再定式化できるかどうかの判断に凸性の保存則が使われる。
1.2 最適化問題の標準形
1.2.1 原始問題(最小化/最大化)
凸最適化の原始問題は、一般に最小化(あるいは最大化)として書かれる。典型的には
- 対象:変数 \(x\)
- 目的:凸関数 \(f(x)\)
- 制約:凸集合により定義される実現可能性
という構造をもつ。
最大化は最小化と同値に扱えることが多い。たとえば最大化問題を最小化問題に直す際には、目的関数に符号反転を施し、凸性から対応する性質(凹性)へと整理して解釈する。
1.2.2 制約付き問題と無制約問題
無制約の凸最適化は、目的関数が凸であれば、勾配や準ニュートン法のような手法で最適解へ向かう設計がしやすい。制約がない場合、最適性条件は停留点(ただし存在条件を含む)で表される。
制約付きの場合は、実現可能集合上での最小化になる。線形制約、凸領域への制約、さらには複合制約に対応するため、ラグランジュ形式や近接写像を用いた枠組みへと発展する。
1.2.3 鞍点性と解の性質
原始問題と双対問題が結びつくとき、ラグランジアンの鞍点(サドルポイント)が重要になる。凸最適化では、条件が整えば原始解と双対解が対応し、鞍点性が最適性の証拠として機能する。
このとき、停留性だけでなく相補性の情報が同時に得られるため、制約が「どれだけ締まっているか」を同定しやすい。結果として、解の解釈(たとえば制約の重要度)まで含めた分析が可能になる。
1.3 双対性の位置づけ
双対性は、凸最適化において中心的な役割を果たす。双対問題は原始問題の下界(最大化では上界)を与えるため、解の品質評価に使える。さらに、双対ギャップが小さいことは近似解の良さを示唆する。
また、双対変数は「感度」や「制約の価値」を表すことが多い。したがって理論だけでなく、設計・推定・制御の現場でも実用的な解釈をもつ。
1.3.1 双対問題の定義
双対問題は、ラグランジアンを用いて構成される。一般形では、ラグランジュ乗数と呼ばれる変数を導入し、原始の目的に制約違反を重み付けして反映する。
その後、双対関数は「原始変数を消去して乗数のみで表現」される形になり、双対最適化ではこの双対関数の最適化を行う。双対問題の実現可能領域は乗数に関する条件(たとえば不等式制約なら非負など)で定まる。
1.3.2 双対ギャップと意味
双対ギャップは、原始最適値と双対最適値の差として定義される。凸性が満たされる条件の下では、双対ギャップが非負であることが一般に言える。
近似解の場合でも、計算した双対値がどれだけ良い下界になっているかを通じて、解の品質を見積もれる。数値計算の実務では、ギャップの監視が終了判定や検証に役立つ。
1.3.3 強い双対性の要点
強い双対性とは、原始問題と双対問題の最適値が一致する状態を指す。凸最適化では、適切な正則性条件(たとえば制約の配置に関する条件)を満たすと強い双対性が成立しやすい。
強い双対性が得られると、鞍点が存在することや、KKT条件が原始・双対の最適性を特徴づけることが期待できる。結果として、理論面では解の同定が可能になり、計算面では双対値を用いた評価がしやすくなる。
2 凸最適化における代表的な問題クラス
凸最適化の実装や理論の多くは、特定の問題クラスへ整理される。代表例として線形計画、二次計画、セミデフィニット計画があり、それぞれが異なる構造をもつ。
構造が明確であるほど、アルゴリズムの設計も精度の見積もりも行いやすい。さらに応用では、現実問題をこれらのクラスに帰着できるかどうかが成否を分ける。
2.1 線形計画
2.1.1 標準形とカノニカル形
線形計画は、目的関数と制約が線形で与えられる凸最適化問題である。標準形では、最小化(または最大化)の形に揃え、等式・不等式制約の配置を一定の形式へ整える。
カノニカル形では、不等式制約を等式へ変換する際にスラック変数を導入するなど、幾何学的に扱いやすい形へ書き換える。こうした整形は、後述する幾何学的解釈やアルゴリズム選択に影響を与える。
2.1.1.1 実行可能性と有界性
線形計画では、実行可能性(制約を満たす点が存在するか)と有界性(目的値が極端に発散しないか)が基本論点となる。実行可能集合が空なら解は存在しない。
また、実行可能でも目的が無限に改善できる場合、有界性が欠ける。双対性の観点では、こうした状況が双対側にも反映され、判定に使える性質が知られている。
2.1.2 最適解の幾何学的解釈
線形計画の実現可能集合は凸多面体として現れることが多い。そのため最適解は多面体の頂点、あるいは面の端点に現れる傾向がある。
この幾何学的性質は、アルゴリズム(頂点探索や内点法)に直結する。目的関数は線形であり、等高面が移動するにつれて接触する点が最適解になるため、直感的理解もしやすい。
2.2 二次計画
2.2.1 凸二次目的と凸制約
二次計画では目的関数が二次式で、制約が凸になる形で記述される。典型的には
- 目的:二次形式(凸であることが要求される)
- 制約:線形不等式や凸の二次制約
といった構造が扱われる。
凸性により、局所的な最小化が大域へ拡張される。したがって、二次の曲率と制約の幾何を合わせた解析が可能になる。
2.2.2 正定値・半正定値の役割
目的関数の二次部分が正定値であれば、曲率が十分であり最適解は一意になりやすい。半正定値は方向によって曲率が弱く、目的が線形に近い成分を含む場合に対応する。
この区別は、数値計算の挙動にも影響する。例えば最適解付近での縮退(ヘッセ行列のランク不足)が起きると、収束の評価や正則化の設計が必要になることがある。
2.2.3 応用例に見る定式化
二次計画は、最小二乗、制約付きのエネルギー最小化、信号処理での平滑化などに現れる。さらに制御では、性能指標を二次形式で表し、入力や状態の制約を凸として扱うことで、最適制御の一部が二次計画へ落とせる。
この段階では「何を凸として扱えるか」を見極めることが重要になる。たとえば非線形な物理モデルをそのまま扱うのではなく、近似や緩和により凸構造に変換する。
2.3 セミデフィニット計画
2.3.1 行列変数と線形行列不等式
セミデフィニット計画(SDP)は、未知変数が行列であり、その半正定性制約を含む凸最適化である。特に変数 \(X\) が半正定値(\(X\succeq 0\))であることが制約として現れる。
さらに、線形行列不等式として \(A_0+\sum_i x_i A_i \succeq 0\) の形に書ける場合が扱いやすい。行列の世界では、固有値に関する条件が凸制約として機能するため、広い応用に繋がる。
2.3.2 凸錐(円錐)表現との関係
SDPは凸錐の一般化として捉えられる。半正定値錐は自己双対性をもち、双対問題が同型に構成されることが多い。
この錐表現は、内点法の適用や、問題のクラス統一的な理解を促す。結果として、線形計画や二次計画と同様に、標準化された枠組みで扱える利点がある。
2.3.3 計算上の特徴と限界
SDPは表現力が高い一方、計算コストが大きくなりやすい。変数が行列であるため自由度が増え、線形代数処理(因子分解や固有値関連の計算)がボトルネックになることがある。
そのため実務では、問題サイズの見積もり、疎性の活用、低ランク構造の利用などが検討される。場合によっては、より軽量な凸緩和へ置き換える判断も必要になる。
3 最適解の条件と理論的基盤
凸最適化の理論では、最適解を特徴づける条件が中心になる。とくにKKT条件は、制約付き凸問題の最適性を判定するための実務的な道具である。
また、スレータ型条件などの存在定理は、解や双対の成立を保証する。さらに、感度解析は、問題変更時に最適値や解がどう動くかを見積もる枠組みとして重要である。
3.1 KKT条件(停留・相補性)
KKT条件は、ラグランジュ乗数を用いて最適性を記述する。停留性(勾配に関する条件)と、制約の不等式に対する相補性が組み合わされる。
凸性が確保され、適切な正則性が満たされると、KKT条件は必要条件であるだけでなく十分条件としても働く。
3.1.1 ラグランジアンの構成
ラグランジアンは、目的関数に対して制約違反を乗数で重み付けした式として定義される。等式制約には任意の実数乗数、不等式制約には符号制約をもつ乗数が対応する。
構成の段階では、どの制約を等式として扱うか、また不等式がどの向きかに注意が必要になる。ラグランジアンが正しく作られることで、後続の停留条件や相補性の意味が一貫する。
3.1.2 制約の正則性とKKTの成り立ち
KKT条件が十分性まで含んで成立するためには、制約の正則性に関する仮定が必要である。代表例として、スレーター点が存在する、あるいはより一般的な制約資格条件が満たされることが挙げられる。
これらは、制約が極端に矛盾した配置をしていないことを保証し、双対性の整合性にも影響する。凸最適化ではこの種の仮定が満たされやすい場合が多い。
3.1.3 相補性条件の直観
相補性は、不等式制約の「境界での圧力」を示す条件として理解できる。制約が厳密に満たされ(余裕がある)なら、その制約に対応する乗数は0になりやすい。
逆に制約が限界に達している場合は、その乗数が正の値を持ちうる。直観的には、活きている制約だけが解に影響しているという構図が表れる。
3.2 スレータ型条件と存在定理
スレータ型条件は、双対性やKKT条件の適用に必要な「制約の配置」を保証するためのものとして知られる。特に、実現可能集合がある程度厚みをもつことを意味する場合が多い。
存在定理により、解が存在するか、双対最適値が一致するか、あるいは境界的な解の扱いがどうなるかが整理される。
3.2.1 制約資格条件の考え方
制約資格条件は、制約が引き起こす幾何学的障害が極端でないことを要求する。直感的には「実現可能集合の内部が十分にある」あるいは「矛盾した圧縮が起きていない」ことを確認するための仮定である。
条件が満たされれば、双対関数の性質が良くなり、双対最適性やKKTの十分性を導きやすい。
3.2.2 解の存在・境界解の特徴
凸問題では、適切な条件下で最適解の存在が保証される。実現可能集合が閉で有界(あるいは適切なコーチング条件がある)なら、目的関数の連続性と組み合わせて解が存在しやすい。
境界解では、いくつかの制約が等号で成立しやすい。相補性や活性集合の観点から、どの制約が支配的になっているかが理解できる。
3.3 感度解析と安定性
感度解析は、モデルや制約の微小な変更が最適値や解にどう影響するかを扱う。凸最適化では双対変数が感度に結びつく場合が多く、計算結果の解釈が容易になる。
安定性の議論は、数値計算で誤差が生じた場合にも、解が大きく変わらないかどうかを検討することにつながる。
3.3.1 制約変化に対する解の追従
不等式制約の右辺や境界を少し変えたとき、実現可能集合の形が変わる。凸性があり、適切な正則性があると、最適点の変化は制御されることが多い。
双対変数はこの変化の方向性に関する情報を与え、どの制約が最適性に強く関与しているかの指標になる。
3.3.2 目的関数の摂動と最適値の変化
目的関数に係数誤差やモデル化誤差が混入した場合も、最適値への影響を見積もる必要がある。凸解析の枠組みでは、摂動と最適値の変化の関係を不等式として表せる場合がある。
実務では、この見積もりを用いて安全マージンや設計の頑健性を決めることが多い。
3.3.3 一意性がもたらす利点
最適解が一意であると、摂動に対する追従性が議論しやすい。複数解が存在すると、どの解を選ぶかで挙動が変わり、評価が難しくなる。
厳密な凸性や強い正則性がある場合には、数値計算上も解の同定が安定し、感度解析の解釈が明確になる。
4 アルゴリズム
凸最適化のアルゴリズムは、問題の構造に応じて勾配を使う方法、双対を使う方法、制約を扱うための変換を組み合わせる方法に分かれる。目的関数の滑らかさや制約の形状が設計の鍵になる。
収束解析では、収束率だけでなく停止基準や誤差管理が重要になる。特に実務では「どの精度で十分か」を合理的に決める必要がある。
4.1 勾配法・準ニュートン法
勾配法は目的関数の勾配(またはサブグラディエント)を利用して反復を進める。二次近似に基づく準ニュートン法は曲率情報を少し取り込むことで加速を狙う。
4.1.1 勾配降下法と学習率
勾配降下法は、勾配の反対方向へ更新する手法である。更新幅を決める学習率(ステップサイズ)が収束性を左右する。
凸性があっても、ステップが大きすぎると発散しやすい。小さすぎると進みが遅くなるため、理論に基づく選択や実験的調整が行われる。
4.1.2 効率的な停止基準
停止基準は、目的値の変化や残差、勾配ノルムなどで設計される。凸最適化では、停留に近いことを示す指標が比較的意味をもつ。
制約付きでは、実現可能性誤差や双対ギャップを用いた基準が有効なことがある。停止判定の設計は、計算時間と精度のトレードオフを決める。
4.1.3 収束速度の見通し
滑らかな凸問題では、収束がどの程度速いかを示す理論がある。一般に、適切なステップサイズ設計により収束率が改善される。
準ニュートン法は、ヘッセ行列の逆を近似することで反復回数を減らす方向に働くが、制約やスケーリングの影響を受ける。
4.2 勢いのある手法(加速法)
加速法は、単純な勾配法よりも反復回数を減らすことを狙う発想である。過去の情報を蓄えることで更新の「慣性」を導入する。
4.2.1 Nesterov加速の考え方
Nesterov加速は、通常の勾配更新に加えて加速度項を組み込むことで、理論上の収束率改善を達成する枠組みとして知られる。更新は「現在の点」と「補間的に作られた点」を組み合わせる形になる。
凸性や滑らかさに関する仮定が満たされると、加速による優位性が示されやすい。
4.2.2 実装上の注意点
加速法はパラメータ設計が重要で、誤った設定では数値的に不安定になることがある。さらに、有限精度計算では誤差が蓄積しやすい。
実装では、ステップサイズと加速係数を理論に整合させること、オーバーフローやスケーリングの問題に注意することが必要になる。
4.2.3 制約付きへの拡張
制約付きでは、加速法単体では扱いが難しくなる。そこで近接写像や射影の考え方を組み合わせた「近接加速」などの拡張が使われる。
このとき、制約に対応する操作が比較的軽量であることが、実務上の採用の条件になる。
4.3 内点法
内点法は実現可能集合の内部から解に近づく方針を採用する。バリア関数を導入し、制約境界への接近を制御しながら反復を進める。
4.3.1 バリア関数の導入
バリア関数は制約を破る領域で大きな値をとり、内部を維持するよう作用する。典型的には対数バリアが使われるが、制約の型により一般化も行われる。
このバリアを目的に加えることで、「境界に触れるとコストが跳ね上がる」形の最適化へ変換される。
4.3.2 ニュートン法による反復
バリア付きの目的は滑らかになることが多く、ニュートン法や準ニュートン法により効率的に更新できる。反復ごとに線形化した方程式を解いて方向を得る。
ただし計算負荷は高くなりやすく、線形方程式の解法や行列構造の活用が重要になる。
4.3.3 計算コストとスケーリング
内点法では大規模な線形代数計算が支配的になることがある。したがって、スケーリングによって数値条件を改善し、反復の安定性を高める工夫が不可欠になる。
さらに、問題サイズと反復回数の積でコストが見積もられるため、クラスごとの適合性が議論される。
4.4 近接(プロキシ)を用いる手法
近接手法は、非滑らかな項や制約を分離して扱えることが特徴である。近接作用素は「簡単な部分最適化」を反復として埋め込む役割を持つ。
4.4.1 近接作用素の定義と直観
近接作用素は、与えられた点から見て「最小化問題の一回分」を解く操作として定義される。具体的には、ある関数と二乗距離の和を最小化して得られる点である。
直観的には、勾配で動く方向を、制約や正則化の形に応じて「丸める」働きを持つ。
4.4.2 勾配+近接の枠組み
勾配付き部分と、近接で扱える部分を分けて更新する枠組みが使われる。目的関数が和の形で表せるときに適用しやすい。
これにより、たとえばスパース性を促す \(L_1\) 正則化のような非微分成分を、効率的に扱える場合がある。
4.4.3 代表的な反復(例:分割法の系統)
分割法では、変数や項を分解し、それぞれに対する最小化または近接更新を組み合わせる。反復の設計は、収束保証と実装の容易さのバランスで決まる。
代表的にはADMM(交互方向乗数法)系統が広く知られ、制約や項ごとの更新を並列化しやすい利点がある。
4.5 収束解析の観点
4.5.1 収束率とその比較
収束解析では、関数値誤差や距離の縮み方に関する評価が行われる。凸問題でも滑らかさや強凸性の有無で理論上の収束率は変わる。
どの指標を採用するかにより、比較の結果が変わり得る。したがって実務では、止めたい精度に合わせて指標を選ぶことが必要になる。
4.5.2 局所情報での設計思想
ニュートン型は曲率情報を活用することで局所的に速く進む設計思想をもつ。勾配法はより粗い情報で堅牢に動くが、収束は一般に遅くなりがちである。
凸性の仮定に加え、滑らかさやリプシッツ条件などの局所的性質を使うことで、アルゴリズムの選択がより合理的になる。
4.5.3 実務における誤差管理
有限精度計算では、反復ごとに生じる誤差が累積する。停止基準は単に理論上の誤差を目安にするだけでなく、計算誤差も含めて評価する必要がある。
また、スケーリングの問題は誤差伝播を増幅しやすい。数値安定性を確保するために、前処理や正則化の扱いがしばしば重要になる。
5 凸最適化の定式化と応用
凸最適化の応用は、「問題を凸問題として書けるか」に強く依存する。多くの場合、非凸なモデルをそのまま解くのではなく、凸緩和や正則化、変数変換により扱える形へ再構成する。
この過程で、凸性が崩れる兆候を早期に見抜くこと、数値的に扱いやすいスケールに整えることが重要になる。
5.1 機械学習における凸化
5.1.1 正則化(L1・L2など)の役割
機械学習では過学習や過剰適合を抑えるために正則化が使われる。損失に対して適切な正則化項を加えると、最適化問題が凸に保たれやすい場合がある。
\(L_2\) 正則化は滑らかな形で曲率を与え、\(L_1\) 正則化はスパース性を促す。どちらも推定の安定性や汎化の観点で重要である。
5.1.2 線形分類・回帰の凸定式化
線形モデルでは、損失関数を適切に選ぶことで凸最適化が成立する。たとえば線形分類ではヒンジ損失やロジスティック損失がよく用いられ、それらは凸性を満たす。
回帰でも二乗誤差や頑健損失などを選ぶことで、凸最適化として解ける設計が可能になる。
5.1.3 構造化損失と可変性
構造化された出力を扱う場合、損失の設計が鍵になる。条件を満たす損失は凸として表せることがあり、推論や学習を効率化できる場合がある。
ただし設計自由度が高い分、凸性を損なう構成要素も混ざりやすい。よって損失の選定は理論的制約と性能の両面から行われる。
5.2 制御・推定への応用
5.2.1 モデル予測制御と凸緩和
モデル予測制御では、未来区間に対する性能指標を最適化し、制約も同時に満たす必要がある。非線形ダイナミクスがある場合、凸緩和や線形化により制御問題を凸に近づける工夫が行われる。
これにより、リアルタイム性を確保しやすくなる一方、近似の妥当性評価が不可欠になる。
5.2.2 状態推定と凸問題化
状態推定では、不確かさを含むモデルに基づき、推定誤差を最小化する形に落とすことが多い。信号と観測の関係が凸に保たれる構造では、推定は凸最適化として定式化できる。
ロバスト推定やスパース推定は、正則化と組み合わせることで有効になる。
5.2.3 ロバスト化の考え方
モデル誤差や外乱に対して性能を保証するために、ロバスト最適化の発想が取り入れられる。凸性が維持できる範囲で、最悪ケースや確率的条件を凸制約として扱える場合がある。
これにより、設計の信頼性を向上させるが、保守性と性能のトレードオフが生じる。
5.3 信号処理・統計推論
5.3.1 スパース推定と凸近似
スパース性を仮定すると、元々は非凸な \(L_0\) 最小化に近い問題が現れやすい。実務では凸近似として \(L_1\) を用いることが多い。
この置き換えにより、凸最適化として推定でき、計算可能性と品質のバランスを取る設計が成立する。
5.3.2 共分散推定と凸制約
統計推論では共分散行列が登場し、その半正定性が自然な制約になる。半正定性制約は凸であるため、推定問題を凸化しやすい。
さらに、構造(疎性や低ランク)を凸な正則化として組み込めると、推定性能の改善が見込める。
5.3.3 最適設計問題の構造
信号処理や統計では、観測設計や実験計画を最適化することがある。設計変数に対して、情報量や推定誤差に基づく目的関数を定義し、制約を凸に保つと凸最適化として解ける。
この枠組みでは、双対変数の解釈が設計指針につながることがある。
5.4 応用上の落とし穴
5.4.1 凸性が崩れる場合の兆候
モデルに非線形が混入しても、見かけが二次であれば必ずしも凸とは限らない。目的関数の二次部分の符号や、制約集合の幾何が凸であるかを確認する必要がある。
よくある兆候として、ヘッセ行列が不定になる、制約が非線形であっても集合が線分を内包しない、などが挙げられる。設計の段階で検証することが望ましい。
5.4.2 スケール・数値安定性
変数や係数のスケールが極端だと、内部計算が不安定になりやすい。とくにニュートン型や内点法では、線形代数計算の条件数が反復挙動に影響する。
正則化やスケーリングを適切に行うことで、収束の改善や精度の安定が期待できる。
5.4.3 モデルミスと過学習の関係
凸最適化は「計算が安定」になることは保証しても、「モデルが正しい」ことを直接保証しない。誤った仮定や不適切な正則化により、性能劣化が起き得る。
過学習は主にモデルミスやデータ不足、正則化設計の不適合に関連する。したがって、最適化の良さと学習の妥当性は別問題として評価する必要がある。
6 実装・計算と評価
凸最適化の実装では、数値計算の品質が結果に大きく影響する。スケーリング、精度設定、停止条件、ソルバ選定、再現性の確保が評価の土台になる。
理論上は凸であっても、実装上の誤差や不適切な整形で品質が損なわれることがあるため、検証手順が重要になる。
6.1 数値計算の基本
6.1.1 スケーリングと正則化
スケーリングは、係数の大小関係を均すことで計算条件を改善する。変数の単位が異なる場合や、目的・制約の係数が異なる桁になる場合に特に有効である。
正則化は凸性を保ったまま縮退を緩和したり、数値的に扱いやすいヘッセ行列を与えたりする目的で利用される。
6.1.2 計算精度と反復回数
計算精度(許容誤差)を厳しくしすぎると反復回数が増え、緩すぎると解の品質が不足する。凸最適化では双対ギャップや残差を使って精度と品質の関係を評価できる場合がある。
反復回数はソルバの設計と問題の性質に依存するため、事前の小規模検証が有効になる。
6.2 ソルバ選定の指針
6.2.1 問題サイズとクラスの対応
線形計画、二次計画、SDPなどのどのクラスかにより、適切なソルバと計算戦略が変わる。とくにSDPはコストが高くなりやすいため、サイズ見積もりが欠かせない。
問題の構造(疎性、対称性、ブロック構造)を活かせるソルバを選ぶことで性能が大きく変わる。
6.2.2 制約条件の扱い
制約の型(等式・不等式、境界の性質、行列半正定性など)がソルバの内部表現に影響する。たとえば内点法系ではバリアや線形化の形が重要である。
また、制約のスケーリングや正規化の仕方が数値安定性に直結するため、入力整形も選定基準に含めるとよい。
6.2.3 実データでのベンチマーク観点
理論的な最悪計算量だけでは不十分であり、実データでの反復挙動や処理時間を測る必要がある。データの特徴(分布、欠損、スケール)により問題条件が変わり、結果が変動することがある。
ベンチマークでは、目的値誤差、制約違反、双対ギャップ、実行時間を同時に報告するのが望ましい。
6.3 検証方法と再現性
6.3.1 テスト問題の作り方
再現性のためには、同じ条件で生成できるテスト問題の設計が必要になる。パラメータの分布やスケールの作り方を固定し、ランダム性がある場合は乱数種を明示する。
また、凸性が確実に保たれる生成法を用いることで、検証の解釈が簡単になる。
6.3.2 妥当性確認の手順
妥当性確認では、実現可能性、最適性指標(双対ギャップや残差)、および目的値の整合性を確認する。KKTに基づく検算が可能な場合は、停留性と相補性の条件がどれだけ満たされているかを見るとよい。
さらに、ソルバの設定(精度や初期値)を変えたときに結果が安定するかを確認すると頑健性が評価できる。
6.3.3 結果の報告基準
報告では、問題設定、ソルバ名、精度設定、停止基準、計算環境(CPU/GPU、ライブラリ)を明記する。単に最終目的値だけでなく、制約違反や双対ギャップも含めた品質指標があると比較可能性が高まる。
複数試行の平均とばらつき、乱数種の扱いも記載すると、追試が容易になる。