Рюкзак 0-1 с ограничениями разделения

У меня проблема, которая на первый взгляд выглядит как рюкзак 0-1. У меня есть набор возможных «кандидатов», которых можно выбрать (или нет), у каждого кандидата есть «вес» (стоимость) и потенциальная «ценность». Если бы это была вся проблема, я бы использовал подход DP и покончил бы с этим. Но вот загвоздка: существуют «ограничения разделения» на возможных кандидатов, которые могут быть в окончательном решении.

Я имею в виду, что пространство кандидатов разбито на дискретные классы эквивалентности. Для моей конкретной проблемы существует около 300 кандидатов и 12 возможных классов эквивалентности. Существуют «бизнес-правила», согласно которым у меня может быть только 3 кандидата из класса C1 и 6 кандидатов из C2 и т. Д.

Это ограничение предполагает подход типа поиска по графу с использованием методов ветвей и границ или некоторых других форма обрезки, однако я несколько озадачен тем, с чего начать, поскольку я знаком только с решением DP для 0-1 Knapsack. Какие методы / подходы могут быть подходящими для этой проблемы? Я также думал об использовании библиотеки программирования ограничений, но не уверен, сможет ли она найти решение?

8
задан omnisis 4 February 2012 в 19:37
поделиться