Как запрограммировать на c# решение задачи целочисленного программирования?
Есть матрица элементов (строки - тип элемента, столбцы - разновидность типа в строке), значение элементов может быть от 0 до 10 (типа рейтинг элементов, 0 - нет элемента).
Есть логические ограничения (например: элементы [1,2] и [2,3] не могут одновременно находится в решении), их количество может меняться. С помощью ограничений выбирается решение в виде определенного набора элементов, причем количество этих элементов не должно превышать определенного значения, которое задает пользователь перед решением задачи.
Необходимо решить данную задачу на С#, можно использовать сторонние бесплатные библиотеки. Использую Visual Studio 2013.
Основная проблема - это как проверять логические ограничения, когда они могут изменятся, в ходе работы программы.
В данный момент решается эта задача с помощью ILOG OPL Studio 3.5. Данная студия морально устарела, а что либо новое купить нет возможности.
Пример ограничений в ILOG:
// в конечный результат обязательно должен входить один из видов деталей
Y[1,1]+Y[1,2]+Y[1,3]+Y[1,4]+Y[1,5]+Y[1,6]=1;
//первая деталь не сочетается со второй
Y[3,1]-Y[4,1]=0;