質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

2174閲覧

【SCOP】2つの制約条件における2変数の最適解を求めたい

84zero

総合スコア48

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/02/09 01:04

編集2018/02/13 00:20

前提・実現したいこと

制約最適化ソルバーSCOPの練習(参考リンク http://logopt.com/scop.htm )
制約条件(c1,c2)における2変数(x1,x2)の最適解を求めるプログラムの実現。

発生している問題・エラーメッセージ

最後の答えがNoneになってしまい、動画通りにならない。
https://www.youtube.com/watch?time_continue=401&v=V80XVXX9a1U
(動画の6分23秒ぐらいのところ)

================ Now solving the problem ================ Status= 1 Output= (None, None)

================ Now solving the problem ================ ({'x1':'3','x2':'2'},{'c2':1})

という表示になって欲しい。

該当のソースコード

python

1>>> import scop 2>>> from scop import* 3>>> m=Model() 4>>> x1=m.addVariable("x1",[1,2,3]) 5>>> print(x1) 6variable x1:['1', '2', '3'] = None 7>>> x2 = m.addVariable("x2",[1,2,3]) 8>>> c1=Alldiff("c1",[x1,x2]) 9>>> m.addConstraint(c1) 10>>> print(m) 11Model: 12number of variables = 2 13number of constraints= 1 14variable x1:['1', '2', '3'] = None 15variable x2:['1', '2', '3'] = None 16c1: weight= 1 type=alldiff x1 x2 ; :LHS =0 17>>> c2=Linear("c2") 18>>> c2.addTerms([3,2,1],[x1,x1,x1],[1,2,3]) 19>>> m.addConstraint(c2) 20>>> print(c2) 21c2: weight= 1 type=linear 3(x1,1) 2(x1,2) 1(x1,3) <=0 22 23>>> m.Params.TimeLimit=1 24>>> m.optimize() 25 26 ================ Now solving the problem ================ 27 28Status= 1 29Output= 30(None, None) 31>>>

補足情報(FW/ツールのバージョンなど)

Python3.6

動画のソースコードと相違がないか十分にチェックしてみました。
おそらく相違ないと思われますが、上手くいきませんでした。
ご教示お願いします。

参考リンク
http://logopt.com/scop.htm

###追記:
SCOP windows64トライアル版 (zip圧縮形式)
scop.pyと同じディレクトリ内にscop.exeは存在します。
「m.optimize()」を実行すると、JupyterNotebookに以下のように表示されます。

[I 13:26:45.956 NotebookApp] Adapting to protocol v5.1 for kernel b5560f83-f2c6-4525-bbc4-6505fb11d8f9 'scop' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。

###解決までの手順:ベストアンサー参考

①scop.pyと同じディレクトリ内にscop.exeを入れる。
②下記のパイソンファイルを名前を付けて①と同じファイルに保存
(最後の行でprintを用いて答えを表示されるように改訂)
③実行

python

1import scop 2from scop import* 3m=Model() 4x1=m.addVariable("x1",[1,2,3]) 5print(x1) 6 7x2 = m.addVariable("x2",[1,2,3]) 8c1=Alldiff("c1",[x1,x2]) 9m.addConstraint(c1) 10print(m) 11 12c2=Linear("c2") 13c2.addTerms([3,2,1],[x1,x1,x1],[1,2,3]) 14m.addConstraint(c2) 15print(c2) 16 17m.Params.TimeLimit=1 18ret = m.optimize() 19print(ret)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

can110

2018/02/09 02:20

実行環境(OS)およびどのバージョンをダウンロード&解凍しましたか(SCOP windows64トライアル版 (zip圧縮形式)など)?またscop.pyと同じディレクトリ内にscop.exeは存在しますか?
84zero

2018/02/09 05:02

両方とも同じディレクトリに存在します。情報を追記しました。宜しくお願いします。
guest

回答2

0

ベストアンサー

Win10にて

  • SCOP windows64トライアル版 (zip圧縮形式)をダウンロードし解凍。
  • 解凍したディレクトリ内にhoge.pyを作成しpython3.6.3で実行。

にて正常に動作しました。

hoge.py

Python

1# coding:utf-8 2from scop import * 3 4m=Model() 5x1=m.addVariable("x1",[1,2,3]) 6print(x1) 7 8x2 = m.addVariable("x2",[1,2,3]) 9c1=Alldiff("c1",[x1,x2]) 10m.addConstraint(c1) 11print(m) 12 13c2=Linear("c2") 14c2.addTerms([3,2,1],[x1,x1,x1],[1,2,3]) 15m.addConstraint(c2) 16print(c2) 17 18m.Params.TimeLimit=1 19ret = m.optimize() 20print(ret)

結果

PlainText

1(py36) >python hoge.py 2variable x1:['1', '2', '3'] = None 3Model: 4number of variables = 2 5number of constraints= 1 6variable x1:['1', '2', '3'] = None 7variable x2:['1', '2', '3'] = None 8c1: weight= 1 type=alldiff x2 x1 ; :LHS =0 9c2: weight= 1 type=linear 3(x1,1) 2(x1,2) 1(x1,3) <=0 10 11 ================ Now solving the problem ================ 12 13({'x1': '3', 'x2': '2'}, {'c2': 1})

ちなみにscop.pyと同じディレクトリにscop.exeが存在しないと以下のような結果になりました。

PlainText

1(同じなので略) 2 ================ Now solving the problem ================ 3 4'scop' は、内部コマンドまたは外部コマンド、 5操作可能なプログラムまたはバッチ ファイルとして認識されていません。 6Status= 1 7Output= 8(None, None)

投稿2018/02/09 02:46

can110

総合スコア38266

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

84zero

2018/02/10 00:28

解決しました!ありがとうございます。 どうやら、scop.pyとscop.exeを保存した同じファイルに、 作成したPythonのファイル(この場合hoge.py)を保存していないといけないみたいです。 あとで、解決までの詳細を追記しておきます。
84zero

2018/02/13 00:21

解決手順を追記しました。ありがとうございます。
guest

0

エラーを再現できませんでした。

Status=1のエラーは何ゆえでしょう…

以下のようなファイルを用意して、
python -i filename.pyで実行すると入力部分を打ち直さくて済みます。

python

1import scop 2from scop import* 3m=Model() 4x1=m.addVariable("x1",[1,2,3]) 5print(x1) 6 7x2 = m.addVariable("x2",[1,2,3]) 8c1=Alldiff("c1",[x1,x2]) 9m.addConstraint(c1) 10print(m) 11 12c2=Linear("c2") 13c2.addTerms([3,2,1],[x1,x1,x1],[1,2,3]) 14m.addConstraint(c2) 15print(c2) 16 17m.Params.TimeLimit=1 18m.optimize()

投稿2018/02/09 02:42

mkgrei

総合スコア8560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

84zero

2018/02/09 05:04

考えられる要因として、ファイルの設置場所とPathの通し方が悪いのかと思い、情報を追記しました。 宜しくお願いします。
84zero

2018/02/10 00:29

解決しました!あとで、解決の詳細を追記しておきます!ありがとうございました!
84zero

2018/02/13 00:21

解決手順を追記しました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問