1

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 

制約と決定変数の大きなマトリックスがあり、さまざまな変数セットに対して同様のループを実行する必要があります。既存の列を書き換えずに編集する方法はありますか?

4

1 に答える 1