У меня есть модель оптимизации с трехмерной матрицей параметров с двоичными значениями. > 50% этой матрицы - 0. При чтении самого файла .dat мои 4 ГБ памяти используются. Использование оперативной памяти большего размера нежелательно. param p_ijk {A, B, C}; Как с этим бороться. Есть ли способ проиндексировать значения со значением 1 и ввести его в AMPL?
Как работать с большим разреженным файлом данных (1 и 0) при вводе в AMPL
comment
Вам нужно, чтобы ваши данные были более разреженными, чтобы иметь преимущества при использовании разреженной модели. На мой взгляд, верхний предел отношения для ненулевых значений в худшем случае должен составлять 10%. Чем меньше тем лучше.
- person valentin   schedule 17.04.2015
comment
@valentin Не обязательно. Используя значение по умолчанию, вы можете получить некоторую экономию памяти, даже если есть небольшая разреженность.
- person vitaut   schedule 19.04.2015
Ответы (1)
Вы можете указать значение по умолчанию 0 при объявлении параметра
param p_ijk{A,B,C} default 0;
и укажите для него в данных только ненулевые значения. Таким образом, нули не будут сохраняться, что сэкономит немного памяти.
person
vitaut
schedule
17.04.2015