局所最適化
ここでは、最適化ルーチンとモデリングスイートの使用に関連するさまざまなリソース(主にJupyterノートブックとJupyterノートブック例の実行方法のセクションを読むことをお勧めします。
nAGの最適化製品にすでに精通しており、問題に適したソルバーを見つけるだけでよい場合は、最適化インデックスまたは 数理最適化ソルバー選択ガイドを確認することをお勧めします。
![]() |
??????????? |
![]() |
図1. 応用最適化の例。(左) KowalikとOsborne関数のDFO非線形最小二乗キャリブレーション、 赤線は最終解を示しています。(右) 非線形最小二乗フィッティングの例、実験データのヒストグラム(青棒)は 集約モデル(緑曲線)でフィットされ、アンフォールディングされたモデルは青と赤の曲線です。最適なパラメータ値は凡例に報告されています。詳細はこちらをご覧ください。
目次
リポジトリ
- 二次錐計画法 (SOCP)
- 一次アクティブセットCG (FOAS)
- 非線形最小二乗法 (BXNL)
- 半正定値計画法 (SDP)
- 導関数フリー最適化 (DFO)
- モデリングのヒントとコツ
- 各種サンプルノートブック
nAG Library for Pythonのインストール方法
このセクションでは、nAG Library for Pythonのインストール方法、トライアルライセンスの要求方法、およびライブラリが正常に動作していることを確認する方法を説明します。インストールに関する詳細および追加情報はこちらで確認できます。
注意 開始する前に、Python 3(3.4以降)がインストールされているホストにアクセスできることを確認してください。
ステップ1. ダウンロードとインストール
nAG
Libraryのインストールはpip
パッケージマネージャーを使用して行います。Bashを使用してターミナルを起動し、nAG
LibraryをインストールしてテストするためのPython
3仮想環境を作成します。
guest@nag-37:~$ python3 -m venv nag3
guest@nag-37:~$ . nag3/bin/activate
(nag3) guest@nag-37:~$
nAG Library for Python をインストールするために pip
を使用してください
(nag3) guest@nag-37:~$ python -m pip install --extra-index-url https://www.nag.com/downloads/py/naginterfaces_nag naginterfaces
または、最適化された線形代数ルーチンのためにIntel MKLに依存するバージョンのパッケージを使用したい場合は、次のようにしてください
(nag3) guest@nag-37:~$ python -m pip install --extra-index-url https://www.nag.com/downloads/py/naginterfaces_mkl naginterfaces
出力は以下のようになるべきです
Collecting naginterfaces
Downloading https://www.nag.com/downloads/py/naginterfaces_nag/naginterfaces/naginterfaces-27.1.0.0-py2.py3-none-linux_x86_64.whl (55.8MB)
100% |????????????????????????????????| 55.8MB 21kB/s
Collecting numpy>=1.15 (from naginterfaces)
Downloading https://files.pythonhosted.org/packages/45/b2/6c7545bb7a38754d63048c7696804a0d947328125d81bf12beaa692c3ae3/numpy-1.19.5-cp36-cp36m-manylinux1_x86_64.whl (13.4MB)
100% |????????????????????????????????| 13.4MB 70kB/s
Installing collected packages: numpy, naginterfaces
Successfully installed naginterfaces-27.1.0.0 numpy-1.19.5
インストールが成功したことを出力が示しています。
ステップ2. 試用ライセンスの取得
次のステップは、ライセンス情報(製品コードとKUSARI ID)を取得し、それを使用してライセンスをリクエストすることです。同じ仮想ターミナルから、以下を試してください
(nag3) guest@nag-37:~$ python -m naginterfaces.kusari
出力は以下のようになるべきです
The nAG Library for Python on this platform uses
underlying Library NLL6I271VL.
This Library has been installed as part of the package
and it requires a valid licence key.
No such key could be validated:
the key may not have been installed correctly or
it may have expired.
The Kusari licence-check utility reports the following:
User: guest
Directory: /home/guest
nAG_KUSARI_FILE=""
File /home/guest/nag.key does not exist
-------------------------------------------------------------------------------
Error: Licence not found; this product requires a key for NLL6I271VL
The above information has been generated on machine nag-37
For information on how to obtain a licence, please see
https://www.nag.com/numeric/py/nagdoc_latest/naginterfaces.kusari.html
KUSARI ID = "ADLXt-adEclJLmvnxlrU2sseteZoo,RopA-Ld"
2つの重要な部分は以下の通りです:
製品コードは
underlying Library NLL6I271VL.
として表示され、リクエストするライセンスを識別します。KUSARI IDは
KUSARI ID = "ADLXt-adEclJLmvnxlrU2sseteZoo,RopA-Ld"
として表示され、ライブラリを実行しているホストを識別します。
注意:製品コードとKUSARI IDは前の例とは異なる場合があります。
これらがあれば、nAGに連絡してトライアルライセンスをリクエストする準備が整います。
トライアルライセンスは、以下のような単純なテキストチャンクです:
NLL6I271V TRIAL 2021/01/27 "RverXn0Pc-Ib?ctdgF=Wpis2j7I"
/home/guest/nag.keyファイルにテキストを保存またはコピーしてください。
最後のステップは、ライセンスが有効であり、ライブラリが期待通りに動作していることを確認することです。
ステップ3. nAGライブラリのテスト
最後のステップは、ライセンスが正しく保存され、nAGライブラリが正常に動作していることを確認することです。同じ仮想端末から、Kusariライセンスモジュールを再実行してください。
(nag3) guest@nag-37:~$ python -m naginterfaces.kusari
今回の出力は以下のようになるはずです
Licence available; the required NLL6I271VL licence key for this product is valid
TRIAL licence, 27 days remaining (licence from file)
より興味深い例を試してみましょう(最適化の例のリスト)
このコマンドは、FOAS(一次アクティブセット法)ソルバーの例を実行し、Rosenbrock 2D関数を最小化します。
(nag3) guest@nag-37:~$ python -m naginterfaces.library.examples.opt.handle_solve_bounds_foas_ex
以下のような出力を生成する必要があります
Trying:
main()
Expecting:
naginterfaces.library.opt.handle_solve_bounds_foas Python Example Results.
Minimizing a bound-constrained Rosenbrock problem.
E04KF, First order method for bound-constrained problems
...
Status: converged, an optimal solution was found
Value of the objective 4.00000E-02
...
ok
例が正常に実行されたことを示しています。ソースコードはこちらで見つけることができます。
さらに多くの例を実行する
ディスク上の例のソースファイルの完全なリストを表示するが、実行はしない場合は、以下を実行します
python -m naginterfaces.library.examples --locate
すべての例は、以下を実行することで順番に実行できます
python -m naginterfaces.library.examples
追加の使用方法を確認するには、python -m naginterfaces.library.examples --help
を実行してください。
Jupyter notebookの例の実行方法
このセクションでは、このリポジトリで提供されているJupyter notebooksを開いて実行するためのホストのセットアップ方法を簡単に説明します。 ノートブックを実行する前に、nAG Libraryがインストールされ動作していることを確認してください。始める前に、Jupyterのインストールページを読むことをお勧めします。
Jupyter notebookのインストール
Jupyterをインストールするには、ターミナルを起動し、nAG Library for Pythonをインストールするために使用した仮想環境をアクティブにします
guest@nag-37:~$ . nag3/bin/activate
(nag3) guest@nag-37:~$ pip install notebook matplotlib
Collecting notebook
Downloading https://files.pythonhosted.org/packages/74/19/50cd38acf22e33370d01fef764355f1e3517f6e12b4fceb8d434ece4f8fd/notebook-6.2.0-py3-none-any.whl (9.5MB)
100% |????????????????????????????????| 9.5MB 115kB/s
Collecting argon2-cffi (from notebook)
...
Successfully installed jupyter-client-6.1.11 jupyterlab-pygments-0.1.2 ... wcwidth-0.2.5
これはJupyterとmatplotlibが正常にインストールされたことを示しています。次のセクションでは、ノートブックインターフェースを起動し、例を開く方法を示します。
ノートブック例の実行
例を実行するには、関心のあるノートブックのコピーを取得し、ノートブックインターフェースを起動します。
例えば、Rosenbrock
2D最適化例ノートブック rosenbrock2d.ipynb
を現在のディレクトリにダウンロードします
(nag3) guest@nag-37:~$ curl -O https://raw.githubusercontent.com/numericalalgorithmsgroup/nAGPythonExamples/master/local_optimization/FOAS/rosenbrock2d.ipynb
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 61961 100 61961 0 0 382k 0 --:--:-- --:--:-- --:--:-- 382k
そして、jupyter-notebook
を使用してそれを開きます
(nag3) guest@nag-37:~$ jupyter-notebook rosenbrock2d.ipynb
[I 12:24:07.336 NotebookApp] Serving notebooks from local directory: /home/guest
[I 12:24:07.336 NotebookApp] Jupyter Notebook 6.2.0 is running at:
[I 12:24:07.336 NotebookApp] http://localhost:8888/?token=f1836a06799a92f25ef9966439bf3491b2f0960dcb51806d
...
このコマンドを実行すると、Webブラウザが起動し、rosenbrock2d.ipynb
ノートブックが開きます。ウィンドウは以下のようになるはずです。
