2015-01-18 5 views
0

GeCode를 사용하여 특정 작업을 해결하는 소프트웨어를 빌드하고 있습니다. 나는 integer set 변수와 이러한 변수에 대한 몇 가지 제약 조건을 사용하여 문제를 모델링했습니다. 그러나이 문제에 관해서는 더 간단한 경우를 생각해 봅시다.정수 설정 변수를 통한 프로그래밍

도메인이 [{}, ..., {1,2,3}] 인 {{}, {1}, {2}, {3}, {1,2 }, {1,3}, {2,3}, {1,2,3} 그리고 유일한 제약 조건은 intersection (var_i, var_j)은 모든 i와 j에 대해 비어 있고 i는 j와 다릅니다.

물론 내 자신의 논리를 잘 이해하면 적어도 var_1 = {1}, var_2 = {2} 및 var_3 = {3}을 제공해야합니다. 그러나 var_1 = {1,2,3} 및 var_2 = var_3 = {}을 줄 수도 있습니다. 실제로 이러한 변수와 제약 조건을 사용하여 GeCode를 실행하면 var_1 = var_2 = var_3 = {1,2,3}의 모든 하위 집합이 하나의 결과 만 나타납니다. 이는 다양한 솔루션이 있음을 의미합니다 (var_1에서 하나의 하위 집합을 선택할 수 있음). 그 제한을 만족시키는 두 개의 다른 변수의 부분 집합.

제 질문은 어떻게 GeCode가 다른 조합을 열거 할 수 있는지 궁금합니다. 분명히 최종 모델은 더 많은 정수로 구성되어 더 많은 하위 집합으로 구성됩니다. 따라서 제약 조건 해결사가 제공 할 수있는 모든 이점을 잃어 버렸기 때문에 직접 변수를 설정하여 선택을 수행하는 비용을 감당할 수 없습니다.

이 문제를 해결하는 데 도움이 될 수있는 가능성이 있습니까?

답변

0

질문에 약간 혼란 스럽지만 일반적인 호 일관성이 어떻게 작동하는지 이해하려고하는 것 같습니다. Gecode가 모든 가능한 하위 집합을 제공하는 이유를 명확히하기 위해 찾고 있습니까? 아니면 분석 할 수 있도록 이러한 하위 집합을 출력하기 위해 Gecode 자체를 찾고 있습니까?

+0

감사합니다. 사실, 왜 당신이 명확히 할 수 있다면, 그것은 나를 도울 것입니다. 비록 내가 gecode가 왜 그것을 공식적으로/세부적으로 표현할 수는 없는지 이해할 수 있다고 생각하지만, DFS 검색자를 사용하면 모든 가능한 하위 집합을 가진 결과가 아닌 여러 결과를 출력 할 것이라고 생각했습니다. 필자가 제시 한 제약 조건을 만족하는 실현 가능한 솔루션을 실제로 얻을 필요가 있기 때문에 GeCode의 결과물로 만족스럽지 않습니다. – Nightzus

+0

다음과 같이 생각하십시오. var_1 값을 해당 도메인의 모든 값으로 고정하면 var_2와 var_3은 모두 제약 조건을 충족하는 값을 가질 수 있습니다. 따라서 제약 조건에서 var_1은 모든 값이 될 수 있습니다. 동일한 인수가 var_2 및 var_3에 적용되므로 모든 조합의 출력을 얻습니다. 추가 제한 조건 (예 : var_2> var_1)을 추가하면 솔루션 공간이 더 작아집니다. –

+0

자, 이제 알겠습니다. 그러나 Gecode가 가능한 조합 (var_1 = {1}, var_2 = {2} 및 var_3 = {3}) 중 하나의 가능한 솔루션 만 자동으로 출력하는 방법이 있습니까? 내가 말했듯이, 만약 내가 큰 문제에 스스로 해결한다면 그것은 확장 성이 없다. – Nightzus