choco присвоить int переменной IntVar

Для массива переменных, например

IntVar[][] array = VF.boolMatrix("example", 5, 10, solver);

в чем разница между

solver.post(ICF.arithm(array[i][j], "=", 0));

а также

array[i][j] = VariableFactory.fixed(0, solver);

Является ли одно превосходит другое с точки зрения, например. требуется меньше места, быстрее решение, меньше возвратов?


person Dora    schedule 11.04.2016    source источник


Ответы (1)


array[i][j] = VariableFactory.fixed(0, решатель); является более эффективным, поскольку фиксированное представление потребляет меньше памяти (небольшая разница для BoolVar, но верно для IntVar, основанного на реализации домена списка BitSet) и позволяет избежать создания бесполезного ограничения. Эти элементы довольно незначительны, но если их умножить на 10000, это может иметь значение во время выполнения. Более того, они кешируются: если два представления имеют одинаковое значение, фактически будет создан только один новый объект. Однако номер возврата останется прежним (если только эвристика поиска не основана на случайности или количестве ограничений и т. д.).

Лучший,

Жан-Гийом Фажес https://www.cosling.com/

person Jean-Guillaume Fages    schedule 21.04.2016