最適化セミナーのご案内

2.17.1 Vector/Matrixを使用したSIMPLEモデル

 ここでは,Vector/Matrixクラスの記述を使ったモデルを紹介します.

Set Asset(name="銘柄"), Sample(name="サンプル");
Element j(set=Asset), t(set=Sample);

// パラメータ行列,ベクトル
Matrix R(name="収益率",(Sample,Asset)),Rbar((Sample,Asset));
Vector r(Asset);
r[j] = inprod(ones(Sample),R.col(j))/Sample.card();
Rbar[t,j] = R[t,j] - r[j];

// 変数,変数ベクトル
Variable x(name="組入比率",index=j);
Vector xv(Asset),
dev(Sample);// 偏差ベクトル
xv[j] = x[j];// 変数 x をベクトル xv に詰め込む
dev = Rbar*xv;

Expression rpb(name="期待収益率");
rpb = inprod(r,xv);

Objective V(name="リスク",type=minimize);
V = inprod(dev,dev)/Sample.card();

xv >= 0.0;
inprod(ones(Asset),xv) == 1.0;
rpb >= 0.0;

solve();

V.val.print();
rpb.val.print();
x.val.print();

 実行時には,同じデータファイルを与えます.


 

 

上に戻る