У меня проблема в том, что на поверхности выглядит как рюкзак 0-1.У меня есть набор возможных «кандидатов», которые могут быть выбраны (или нет), у каждого кандидата есть «вес» (стоимость) и потенциальная «ценность».Если бы это была вся проблема, я бы использовал подход DP и покончил бы с этим.Но вот кривая: есть «ограничения разделения» на возможных кандидатов, которые могут быть в окончательном решении.
Я имею в виду, что пространство кандидатов разбивается на классы дискретной эквивалентности.Для моей конкретной задачи есть около 300 кандидатов и 12 возможных классов эквивалентности.Существуют «бизнес-правила», в которых говорится, что я могу иметь не более 3 кандидатов из класса C1 и 6 кандидатов из C2 и т. Д.или какая-либо другая форма обрезки, однако я несколько озадачен тем, как начать, так как я только знаком с решением DP для 0-1 ранца.Какие методы / подходы могут подойти для этой проблемы?Я также подумал, может быть, использовать библиотеку программирования ограничений, но не уверен, что она сможет найти решение?