自然な再帰関係を持つパラメーターのセットを定義する必要があります。
これは、一連の (9 つの) パラメータ S に対して階乗関数を定義しようとする MWE です。
$title TitleOfProblem
set S / s1*s9 /;
alias(S, S1, S2);
set delta1(S1,S2);
delta1(S1,S2) = yes$(ord(S1) + 1 = ord(S2));
parameter f(S);
f(S) = 1$(ord(S) = 1) + (ord(S) * sum(S1$(delta1(S1, S)), f(S1)))$(ord(S) > 1);
display f;
"delta1" は、1 だけ異なるソート順の要素のペアを含む関係です。論理的には、f の定義は階乗関数の定義と一致します (入力 1 から 9 の場合) が、GAMS は f が気に入らないようです。再帰的に定義されます。GAMS コンパイルの出力は次のようになります。
f(S) = 1$(ord(S) = 1) + (ord(S) * sum(S1$(delta1(S1, S)), f(S1)))$(ord(S) > 1);
$141
141 Symbol neither initialized nor assigned
A wild shot: You may have spurious commas in the explanatory
text of a declaration. Check symbol reference list.
質問:
GAMS でパラメーターを再帰的に定義することは可能ですか? そうでない場合、回避策は何ですか?
(PS十分な担当者がいる人は、タグ「GAMS」を作成して、この質問に追加する必要があります。)