最適化セミナーのご案内

15.3.1 線形計画問題専用内点法(higher)/直線探索法(lipm/lepm/line)/逐次二次計画法(lsqp/tsqp/slpsqp)/半正定値計画専用内点法(lsdp/csdp/qnsdp/lmsdp/trsdp)に有効なパラメータ

 以下,線形計画問題専用内点法のみ有効なパラメータ値と,その設定について解説します.

  • スケーリング
    アルゴリズムを効率よく安定に動作させるため,目的関数,制約式,変数に定数値を乗じる処置がスケーリングです.このパラメータはスケーリングを行うか否かと,スケーリングの種類を指定するものです.指定できる値は“off”,“minmax”,“cr”,“on”の4つです.“off”ではスケーリング処理を行いません.“minmax”では,係数行列の各行と列について,非零要素の絶対値の最大値と最小値との幾何平均が1になるようにスケーリングを施します.“cr”では係数行列全体について,非零要素の絶対値の対数の2乗和を最小化します.“on”はNumerical Optimizer V15以前との互換性のために用意されており,“minmax”と等価です.
    モデルファイルに記述する方法
    options.scaling = "cr";
    パラメータファイルnuopt.prmに記述する方法
    scaling:cr
  • 単体法へのクロスオーバー(線形計画専用内点法higherのみ)
    この指定を行うと,内点法によって得られた解の情報をもとにして単体法を起動することができます.大規模問題に関して可能基底解を得るにはこの方法が最も有効です.
    モデルファイルに記述する方法
    options.crossover = "on";
    パラメータファイルnuopt.prmに記述する方法
    cross:on
  • 停止条件
    停止条件として用いる最適性条件の残差です.最適性条件の残差がこの値以下になったときに,計算が収束したとみなして反復計算を終了します.
    モデルファイルに記述する方法
    options.eps = 1.0e-8;
    パラメータファイルnuopt.prmに記述する方法
    crit:eps=1.0e-8
  • 反復回数上限
    停止条件として用いる反復計算の回数の上限です.反復回数のデフォルト値は150回となっています.反復回数がこの回数を越えた場合には解が得られなかったとみなしてエラー((NUOPT 10) IPM iteration limit exceeded.)を出力します.逐次二次計画法(lsqp/tsqp/slpsqp)を用いた場合にはエラー((NUOPT 40) SQP iteration limit exceeded.)を出力します.
    モデルファイルに記述する方法
    options.maxitn = 150;
    パラメータファイルnuopt.prmに記述する方法
    crit:maxitn=150
  • 外点法の実行不可能性ペナルティー(外点法lepm/tepmのみ)
    問題が実行不可能に非常に近い場合,外点法は不等式制約を満たさない解を与える可能性があります((NUOPT 55) exterior solution obtained.).そのような場合には,パラメータexrhoをデフォルトよりも大きく設定すると解消する可能性があります.問題が実行可能な場合に,exrhoが大きいと反復に時間がかかるケースがあります.内点法に比べて外点法のパフォーマンスが悪い場合にはexrhoをあえて下げて実行してみるのも一つの方法です.exrhoの初期設定値は1.0e3です
    モデルファイルに記述する方法
    options.exrho = 1.0e3;
    パラメータファイルnuopt.prmに記述する方法
    param:exrho=1.0e3
  • 内点法内に現れる連立一次方程式を反復法で解く設定(higherのみ)
    この方法(mtxfree)を指定すると,探索方向を求めるために解く連立一次方程式を反復法(クリロフ部分空間法)を用いて解きます.デフォルトの求解法よりもメモリの使用量を減らすことができます.mtxfreeには下記の制限が伴います.
    • 単体法へのクロスオーバーと併用することができない
    • 上界も下界も設定されていない変数がある場合は使用できない
    • 実行不可能性要因検知機能(iisDetect)と併用することができない
    モデルファイルに記述する方法
    options.mtxfree = "on";
    パラメータファイルnuopt.prmに記述する方法
    linear:mtxfree=on

 

 

上に戻る