Как работать с большим разреженным файлом данных (1 и 0) при вводе в AMPL

У меня есть модель оптимизации с трехмерной матрицей параметров с двоичными значениями. > 50% этой матрицы - 0. При чтении самого файла .dat мои 4 ГБ памяти используются. Использование оперативной памяти большего размера нежелательно. param p_ijk {A, B, C}; Как с этим бороться. Есть ли способ проиндексировать значения со значением 1 и ввести его в AMPL?


person NAVEED AL FARHAN    schedule 16.04.2015    source источник
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