R で lpsolveAPI を使用しており、指定された列と行に係数 (指定された制約番号と決定変数番号の係数) を設定したいと考えています。
ただし、新しい列 (新しい決定変数) を追加したり、既存の列を設定したりできますが、そのオプションはその列の以前の係数をすべて削除するため、列を編集することはできません。
たとえば、5 つの制約と 2 つの決定変数があるとします。それで:
lps.model <- make.lp(5, 2) #create lp model
#set coefficients for the first 3 constraint for both variables
for (i in seq(1,2)) set.column(lps.model, i, c(1,2,3), indices = c(1,2,3))
モデルは次のようになります。
Model name:
C1 C2 C3 C4
Minimize 0 0 0 0
R1 1 1 0 0 free 0
R2 2 2 0 0 free 0
R3 3 3 0 0 free 0
R4 0 0 0 0 free 0
R5 0 0 0 0 free 0
Kind Std Std Std Std
Type Real Real Real Real
Upper Inf Inf Inf Inf
Lower 0 0 0 0
ここで、4 番目と 5 番目の制約の係数を追加します。
for (i in seq(1,2)) set.column(lps.model, i, c(4,5), indices = c(4,5))
set.column 関数は、関数パラメーター内にリストされていないすべての係数を 0 に設定するため、コードはモデルを書き換えます。
Model name:
C1 C2
Minimize 0 0
R1 0 0 free 0
R2 0 0 free 0
R3 0 0 free 0
R4 4 4 free 0
R5 5 5 free 0
Kind Std Std
Type Real Real
Upper Inf Inf
Lower 0 0
制約と決定変数の大きなマトリックスがあり、さまざまな変数セットに対して同様のループを実行する必要があります。既存の列を書き換えずに編集する方法はありますか?