2017-11-17 21 views
0

[![画像の説明をここに入力してください] [1]] [1] CPLEXがeclipsで提案した例から "bendersatsp.py"を実行しています。 "filename ="が定義されているmain句にatsp.datのパスを追加しただけです。それを実行した後、len(sys.argv)= 1に対してのみ実行され、次の結果が得られます。何が問題なのか、なぜ完全に動かないのか分かりますか?CPLEXのPythonでのベンダーの分解例

Usage:  bendersatsp.py {0|1} [filename] 
    0:  Benders' cuts only used as lazy constraints, 
      to separate integer infeasible solutions. 
    1:  Benders' cuts also used as user cuts, 
      to separate fractional infeasible solutions. 
    filename: ATSP instance file name. 
     File C:\Program Files (x86)\IBM\ILOG\CPLEX_Studio1261\cplex\examples/data/atsp.dat used if no name is provided. 
+0

bendersatsp.pyに行った変更を表示してください。 – rkersh

+0

@rkersh、私はちょうどファイル名のパスを追加しました。デフォルトのデータは、mycomのC:¥Program Files(x86)¥IBM¥ILOG¥CPLEX_Studio1261¥cplex¥examples/data/atsp.datに定義されているので、元のbendersatsp.pyにファイル名として格納します。私はまだbendersatsp.pyを変更していない。 – rezzz

答えて

1

0 | 1引数が必要です。

python bendersatsp.py 0 

は、私が解析するコードにいくつかのコメントを追加しました:デフォルトfilenameパスを変更したと仮定すると、

python bendersatsp.py 0 "C:\Program Files (x86)\IBM\ILOG\CPLEX_Studio1261\cplex\examples/data/atsp.dat" 

のか:たとえば、あなたはそうのようなスクリプトを実行する必要があります以下のコマンドライン引数を試してみてください。

if __name__ == "__main__": 
    # If there are not 1 or 2 arguments then exit (recall that 
    # sys.argv[0] is the program name itself (i.e., "bendersatsp.py") 
    if len(sys.argv) != 2 and len(sys.argv) != 3: 
     usage() 
     sys.exit(-1) 
    # If the first argument is not "0" or "1" then exit. 
    if sys.argv[1] not in ["0", "1"]: 
     usage() 
     sys.exit(-1) 
    # Store the second argument in filename if there is one. 
    if len(sys.argv) == 3: 
     filename = sys.argv[2] 
    else: 
     # Otherwise, use the following default. 
     filename = "../../../examples/data/atsp.dat" 
    # Pass the arguments into the bendersATSP function. 
    bendersATSP(sys.argv[1][0], filename) 
+0

ご返信ありがとうございます!私はまだコマンドラインでも、プログラムを実行することはできません。私が追加した写真を見てください。 – rezzz

+0

あなたのスクリーンショットでは、正しいコマンドを使用していません。例えば、bendersatsp.pyが存在するディレクトリに 'cd'する必要があります。次に、 'c:\ Python34 \ python.exe bendersatsp.py 0'を実行します。このコマンドを発行する前にPythonインタラクティブを起動しないでください。 – rkersh

+0

@ rkershありがとう、あなたは正しいです!日食はどうですか?どうすればそれを実行できますか? – rezzz

関連する問題