ie_test
2018年7月22日日曜日
pyOpt をmac上のdockerにインストールする
# 目的 最適化部分について pyopt が必要になったが mac だとインストールできるかわからない。 (pyopt のページを見ても mac については記述なしで、そもそもlinux でもインストールがめんどいのにさらに苦労するだろうことが予想される。) # どうしたか 結局 docker に ubuntu を入れて、インストールした. # docker 準備 docker のインストールに関しては下記を参照。 https://qiita.com/kurkuru/items/127fa99ef5b2f0288b81 # 実行したこと まずdocker でコンテナを作成する。 ``` docker run -p 5901:5901 -it --name ubuntu_for_pyopt ubuntu:16.04 /bin/bash ``` 上記のコマンドを打つとコンテナが作られ、開始して、すでにコンテナの中にいる状態となる。以降は pyopt のインストールのためのコマンド。 ``` apt-get update apt-get install python3-pip apt-get install git pip3 install --upgrade pip # gfortran のインストール. pyOpt のインストールに必要. apt-get install gfortran # swig のインストール. pyOpt のインストールに必要. apt-get install swig # numpy がなぜか入っていない.あとなぜか pip3 は動かないので普通の pip を使う。 pip install numpy git clone https://github.com/madebr/pyOpt.git madebr_pyOpt cd madebr_pyOpt python3 setup.py install ``` アップデートなどここまで 5~10 分くらいかかる。 # 確認 ひとまず exit で出る. 以下のファイルを用意し、コンテナに送る。 tmp.py ``` #coding:utf-8 import pyOpt import numpy as np def objfunc(x): f = -np.prod(x) g = np.zeros(2) g[0] = x[0] + 2.0 * x[1] + 2.0 * x[2] - 72.0 g[1] = -x[0] - 2.0 * x[1] - 2.0 * x[2] fail = 0 return f, g, fail def main(): opt_prob = pyOpt.Optimization("hoge", objfunc) opt_prob.addObj("f") opt_prob.addVar("x1", "c", lower = 0.0, upper = 42.0, value = 10.0) opt_prob.addVar("x2", "c", lower = 0.0, upper = 42.0, value = 10.0) opt_prob.addVar("x3", "c", lower = 0.0, upper = 42.0, value = 10.0) opt_prob.addConGroup("g", 2, "i") print(opt_prob) slsqp = pyOpt.SLSQP() slsqp.setOption("IPRINT", -1) [fstr, xstr, inform] = slsqp(opt_prob, sens_type = "FD") print(opt_prob.solution(0)) print("hello,pyopt") main() ``` コマンドは次の通り ``` docker cp tmp.py 340d9c43bb23:/ ``` ちなみにコンテナから逆にファイルをコピーするときは以下のようなコマンド ``` docker cp 340d9c43bb23:/tmp.py . ``` ここで 340d9c43bb23 は作ったコンテナの ID. コンテナのIDは以下のコマンドで確認する。NAMES のところが ubuntu_for_pyopt となっている行を探せば良い。 ``` docker ps -a ``` ちなみに docker ps だと動いているコンテナ、 docker ps -a だと動いていないコンテナも含めて全て表示される。 以下で python 実行 ``` docker exec -it ubuntu_for_pyopt python3 tmp.py ``` 「docker exec -it ubuntu_for_pyopt /bin/bash」でコンテナに入ってから実行でも良いが、mac から直接呼び出すことが増える時には上記のコマンドのが良さげ. 使い終わったら以下のコマンドで止める。 ``` docker stop ubuntu_for_pyopt ``` 止まっているかどうかは「docker ps -a」で確認。 次に使う時には以下のコマンドでコンテナを起動する。 ``` docker restart ubuntu_for_pyopt ``` # 追記(2018/5/17) docker cp について、コンテナID の指定でなくてコンテナネームの指定でもよい。 ``` docker cp ubuntu_for_pyopt:/tmp.py . docker cp tmp.py ubuntu_for_pyopt:/ ``` 実行について以下のように環境変数を設定して実行できる。 問題が生じたときは以下のように実行する必要があるだろう。 ``` docker exec -it -e LANG=ja_JP.UTF-8 ubuntu_for_pyopt python3 tmp.py ```
0 件のコメント:
コメントを投稿
次の投稿
前の投稿
ホーム
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿