2017-10-01 14 views
3

は、私は後で指定のデフォルト値

from numpy import random 
from scipy import sparse 
from amplpy import AMPL, Environment, dataframe 

B = random.randint(0, 2, (3, 3)) 
BSparse = sparse.lil_matrix(B) 

dfB = dataframe.DataFrame(('RnRow', 'RnCol'), 'val') 
dfB.setValues({ 
    (i+1, j+1): BSparse.data[i][jPos] 
    for i, row in enumerate(BSparse.rows) 
    for jPos, j in enumerate(row) 
    }) 

として非スパース値を定義するため

param B {Rn,Rn}; 

、ときに私を、モデルファイルに定義されたマトリックス形式のパラメータBを、持っています私のモデルを解きたいと思っていますが、ソルバーは文句を言っています。

Error executing "solve" command: 
error processing constraint f[1]: 
    no value for B[1,1] 

明らかに欠損値はありません。値は0です。これをデフォルト値に設定するにはどうすればよいですか?

+0

は、あなたがそれかどうかを確認するために、マトリックスの非スパースバージョンを使用してみましたがモデルファイルでそれらを指定することができます作品ですか?おそらくおもちゃの例 – ShreyasG

+0

@ShreyasG非スパース版が動作します(基本的にはすべての値を反復処理し、ゼロを明示的に設定しています)。私は、大きな効率向上のために疎フォーマットのデフォルトを設定することに特に関心があります。 – FooBar

+0

右。おそらくあなたの 'ソルバー'モジュール内でこれを微調整する方法がありますか? NaN以外の値だけをループするように指示できます。 – ShreyasG

答えて

0

私はまだamplpy以内にこれを行うことを認識してないんだけど、少なくとも一つは直接

param B {Rn, Rn} default 0; 
関連する問題