[rules-users] "OR"-constraint doesn't work

rob_87 robert.el-hussein at gmx.de
Mon Jan 6 06:29:20 EST 2014


Hey guys,

I'm trying to build a simple score-calculator with optaplanner. 
Method "A_at_Index2_or_Index3" should force "A" to be at index 2 or index 3.
Method "no_A_at_Index2" forces "A" not to be at Index 2. So, "A" only can be
at index 3 ... but it doesn't.
Optaplanner says the score is -1, but the score has to be 0. Method
"no_A_at_Index2" works well. "A_at_Index2_or_Index3" seems to be wrong.

Does anyone know what I am doing wrong? Do u have any examples for building
complex constraints like XOR, AND, ...)?

 @Override
    public SimpleScore calculateScore(NCells nCells) {

    int score = 0;
    if (!(this.A_at_Index2_or_Index3(nCells))){
       score--;
    }

    if (!(this.no_A_at_Index2(nCells))){
       score--;
    }
    return SimpleScore.valueOf(score);
}


public boolean A_at_Index2_or_Index3(NCells nCells){

        List<Cell> cellList = nCells.getCellList();
        ChomskyRule rule1 = cellList.get(2).getRule();
        ChomskyRule rule2 = cellList.get(3).getRule();  
        int a_counter = 0;
        if ( rule1 != null && rule1.getLeftSide().equals("A")){
                a_counter++;
        }
        if ( rule2 != null && rule2.getLeftSide().equals("A")){
                a_counter++;
        }

        if (a_counter==0 && rule1!=null && rule2!=null){ 
            return false;
        }
        return true;
}

public boolean no_A_at_Index2(NCells nCells){

        List<Cell> cellList = nCells.getCellList();
        ChomskyRule rule = cellList.get(2).getRule();
        if(rule!=null && rule.getLeftSide().equals("A")){return false;}
        return true;
}



--
View this message in context: http://drools.46999.n3.nabble.com/OR-constraint-doesn-t-work-tp4027525.html
Sent from the Drools: User forum mailing list archive at Nabble.com.


More information about the rules-users mailing list