Переменные AMPL в подписках еще не разрешены - PullRequest
0 голосов
/ 25 ноября 2018

Я действительно надеюсь, что кто-то может помочь с этим ... Это то, что у меня есть в файле .mod

set I := 1..10;
set J := 1..10;
set K := 1..2;
set W := 1..20;

param v{K, W};
param d{I, J};

var x1, integer;
var y1, integer;
var x2, integer;
var y2, integer;
var assist{W}, binary;

, и это ошибка генерации кода:

minimize nome: sum{w in W} (if (assist[w] == 0) then 
                    (if (x1 >= v[1,w]) then 
                        (if (y1 >= v[2,w]) then 
                            (d[x1 - v[1,w],y1 - v[2,w]])....

где ошибка относится к последней строке и говорит:

Variables in subscripts are not yet allowed.
context:  (d[x1 - v[1,w],y1 -  >>> v[2,w]] <<< )

это одно из ограничений (другие точно такие же):

subject to rangex1:
x1 > 0 && x1 <= 10;

1 Ответ

0 голосов
/ 29 ноября 2018

Как говорится в сообщении об ошибке, вы не можете использовать переменные решения в нижнем индексе в AMPL.В этом случае x1 и y1 являются переменными решения, поэтому d[x1 - v[1,w],y1 - v[2,w]] не допускается.Вам нужно будет переформулировать проблему таким образом, чтобы избежать этой проблемы.

...