Как запрограммировать на c# решение задачи целочисленного программирования?

Рейтинг: 0Ответов: 0Опубликовано: 10.09.2014

Есть матрица элементов (строки - тип элемента, столбцы - разновидность типа в строке), значение элементов может быть от 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;

Ответы

Ответов пока нет.