1

GLPSOL ソルバーを使用して、次の問題を解決しようとしていました。

フレッドは、今後 5 年間で 5000 ドルを投資する必要があります。毎年初めに、彼は 1 年または 2 年の定期預金にお金を投資することができます。銀行は、1 年定期預金で 4%、2 年定期預金で合計 9% の利息を支払います。さらに、West World Limited は、2 年目の初めから 3 年間の証明書を提供します。これらの証明書は 15% (合計) を返します。フレッドが毎年利用できるお金を再投資する場合、線形計画を作成して、5 年目の終わりに手持ちの総現金を最大化する方法を彼に示します。

次の LP モデルを思いつきました。

x ijが j 年にオプション i に投資された金額であるため、
z = 1,04x 15 + 1,09x 24 + 1,15x 33を最大化しよ
うとします。

  • x 11 + x 12 <= 5000
  • × 31 =× 34=× 35=0
  • x 12 + x 22 + x 32 <= 1,04 x 11
  • x 13 + x 23 + x 33 <= 1,04 x 12 + 1,09 x 21
  • x 14 + x 24 <= 1,04 x 13 + 1,09 x 22
  • x 15 <= 1,04 x 14 + 1,09 x 23 + 1,15 x 32
  • x ij >= 0

そしてそれをGMPLで書き込もうとしました:

/* Variables */
var x{i in 1..3, j in 1..5} >= 0;

/* Objective */
maximize money: 1.04*x[1,5] + 1.09*x[2,4] + 1.15*x[3,3];

/* Constraints */
s.t. x[1,1] + x[2,1] <= 5000;
s.t. x[3,1] = x[3,4] = x[3,5] = 0;
s.t. x[1,2] + x[2,2] + x[3,2] <= 1.04 * x[1,1];
s.t. x[1,3] + x[2,3] + x[3,3] <= 1.04 * x[1,2] + 1.09 * x[2,1];
s.t. x[1,4] + x[2,4] <= 1.04 * x[1,3] + 1.09 * x[2,2];
s.t. x[1,5] <= 1.04 * x[1,4] + 1.09 * x[2,3] + 1.15 * x[3,2];

/* Resolve */
solve;

/* Results */
printf{j in 1..5}:"\n* %.2f %.2f %2.f \n", x[1,j], x[2,j], x[3,j];

end;

ただし、次のエラーが発生します。

inv.mod:14: x 乗算宣言
コンテキスト: ...[ 1 , 5 ] + 1.09 * x [ 2 , 4 ] + 1.15 * x [ 3 , 3 ] ; st x
MathProg モデル処理エラー

これについて何か考えている人はいますか?

4

1 に答える 1