Как исправить ошибку компиляции ранца MiniZinc?

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

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 ответ

Решение

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

Другие вопросы по тегам