Как исправить ошибку компиляции ранца 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
чтобы что-то еще решило вашу проблему.