Eclipse CLP: максимальное количество ограничений / переменных - PullRequest
1 голос
/ 04 мая 2019

В Eclipse CLP сколько ограничений или переменных я могу определить?

В настоящее время я перестраиваю свою проблему с расписанием - мне нужно заменить одно ограничение alldifferent на множество ограничений atmost. Но так как я ввел это изменение, мой скрипт ecl не работает. Под «не работает» я подразумеваю Eclipse CLP - eclipse.exe или графический интерфейс TkEclipse просто выключается. Без каких-либо сообщений об ошибках, комментариев или прощания. Просто ничего.

Если я попытаюсь закомментировать некоторые ограничения, скрипт по крайней мере компилируется.

Кто-то уже беспокоился об этой проблеме?

1 Ответ

0 голосов
/ 06 мая 2019

Нет конкретного ограничения на число, переменные или ограничения.

Но вы работали с большими, сгенерированными исходными файлами, где в предложениях были тысячи подцелей. Поскольку ECLiPSe использует анализатор рекурсивного спуска, такие файлы могут вызвать переполнение стека ОС, в частности в Windows. Вы можете либо увеличить ограничение стека Windows , либо разбить сгенерированный код на более мелкие предложения и вызывать их вместе.

Однако, как правило, генерация текстового исходного кода не такая уж хорошая идея: его нужно создавать, писать, читать, анализировать, компилировать и затем выполнять только один раз. Вместо этого рассмотрим генерацию файла чистых данных , который содержит только такие вещи, как массивы / списки чисел, но без переменных . После этого вы можете иметь общую программу ECLiPSe, которая читает эти данные и использует их для создания переменных и ограничений, обычно в несколько циклов.

Для очень простого примера сравните https://eclipseclp.org/examples/transport1.pl.txt (где все данные явно указаны в плоской модели) с https://eclipseclp.org/examples/transport_arr.pl.txt, где модель является общей, и все данные поступают из факта data / 3 в конце (это будет соответствовать сгенерированному файлу данных).

...