2014-12-24 9 views
1

저는 세계 cp optimizer에 새로운 것이므로 작은 테스트를 시작합니다. 다음 질문이 있는데 도움이 필요합니다.어떻게 제한을 만들 수 있습니까?

PairElements는 튜플 [파, 요소]는 다음과 같은 제한이 가장 낮은 비용으로 몇 가지를 얻을 필요가

데이터

const IloInt nbPair = 6; 
const IloInt nbPairElements = 15; 
const IloInt nbElement = 2; 
IloIntVarArray SolPair(env, nbPair,0,1); 

IloIntArray PairCost(env, nbPair,100,150,200,300,350,133); 

IloIntArray2 PairElements(env, nbPairElements); 
PairElements[0] = IloIntArray(env, nbElement, 0,1); 
PairElements[1] = IloIntArray(env, nbElement, 0,2); 
PairElements[2] = IloIntArray(env, nbElement, 1,1); 
PairElements[3] = IloIntArray(env, nbElement, 1,2); 
PairElements[4] = IloIntArray(env, nbElement, 1,3); 
PairElements[5] = IloIntArray(env, nbElement, 2,3); 
PairElements[6] = IloIntArray(env, nbElement, 2,4); 
PairElements[7] = IloIntArray(env, nbElement, 2,5); 
PairElements[8] = IloIntArray(env, nbElement, 3,1); 
PairElements[9] = IloIntArray(env, nbElement, 3,2); 
PairElements[10] = IloIntArray(env, nbElement, 3,3); 
PairElements[11] = IloIntArray(env, nbElement, 4,2); 
PairElements[12] = IloIntArray(env, nbElement, 5,2); 
PairElements[13] = IloIntArray(env, nbElement, 5,4); 
PairElements[14] = IloIntArray(env, nbElement, 5,5); 



// build model 



//Objective 
IloExpr Obj_Func_1(env); 
for (int i = 0; i < nbPair; ++i) 
    { 
      Obj_Func_1 += PairCost[i] * SolPair[i]; 
    } 
model.add(IloMinimize(env, Obj_Func_1)); 
Obj_Func_1.end(); 
IloCP cp(model); 

.....이 내 코드입니다 : :

- There should be a single time all elements. 

나는 제한을 만드는 방법을 모르는


결과는 다음과 같습니다

파 : 0, 2

두 쌍은 한 번에 모든 요소를 ​​포함하고 낮은 비용으로 표현하기 때문에

매우 후안 카를로스

+0

제발 도와 줄 사람이 있습니까? –

답변

0
    감사합니다
  • 모든 요소가 한 번만 있어야합니다.

질문을 이해할 수 없습니다. 제약 조건을 추가하려면

, 당신은 다음과 같은 식을 설정을 시도 할 수 있습니다 : xVars는 당신이 불평등을 원하는 경우에 model.boolVar("X0101")

로 초기화 IloIntVar의 배열을 의미

IloLinearIntExpr expr = this.model.linearIntExpr(); 
for (int j = 0; j < this.dim; j++) { 
    if (i != j) { 
     expr.addTerm(1, this.xVars[i][j]); 
    } 
} 
this.model.addEq(expr, 1); 

을, 단지에 추가 this.model.addLe(expr,1);

희망은 당신을 도왔습니다. 그렇지 않으면 질문을 조금 더 잘 설명하십시오.