public boolean isSolutionFeasible(Solution s) {
    if (objective.getConnectednessWeight()>0 && s.getList().size()>1 && s.getFuzzyConnectedness()==0.0) return false;
    else if (objective.getCostWeight()>0 && s.getCost()>this.costLimit) return false;
    
    // the following two should not happen because we have prune the construction graph
    else if (objective.getCompetencyWeight()>0 && s.getCompetency()==0.0) return false;
    else if (objective.getResponseTimeWeight()>0 && s.getTime()>this.deadline) return false;
    
    else return true;
  }