Как исправить ошибку компиляции рюкзака MiniZinc? - PullRequest
0 голосов
/ 18 ноября 2018

Что я могу сделать для исправления ошибок в следующей программе

item= record( int: id,  profit, weight);

set of item: All_Items ;

int :Max_Capacity;

var set of item: Selected_Items;

У меня есть следующий код для решения ранца в MiniZinc, но в нем много ошибок.

constraint sum([holds(X in Selected_Items)*X.weight | X in All_Items])=< Max_Capacity;

constraint Selected_Items >= All_Items;

maximize
sum([holds(S in Selected_Items)*S.profit |S in All_Items]);

ОшибкиСписок

Compiling knapsack1.mzn
C:/Program Files/MiniZinc IDE (bundled)/examples/knapsack1.mzn:3.7-12:
item= record( int: id,  profit, weight);

      ^^^^^^
Error: syntax error, unexpected record
C:/Program Files/MiniZinc IDE (bundled)/examples/knapsack1.mzn:11.45:
constraint sum([holds(X in Selected_Items)*X.weight | X in All_Items])=< Max_Capacity;

                                            ^
Error: syntax error, unexpected $undefined, expecting ]
C:/Program Files/MiniZinc IDE (bundled)/examples/knapsack1.mzn:15.1-8:
maximize

^^^^^^^^
Error: syntax error, unexpected maximize, expecting end of file

Process finished with non-zero exit code 1
Finished in 89msec

1 Ответ

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

Несмотря на то, что в настоящее время MiniZinc не содержит никаких типов записей (читайте struct, как типы), они возможны в будущем.Чтобы предотвратить взлом моделей в будущем, слово record уже является зарезервированным ключевым словом и не может использоваться в качестве идентификатора в вашей модели.Изменение имени с record на что-то другое решит вашу проблему.

...