public void transferWeights(MLNModel weightModel, boolean skipLE) { List<MLNFormula> formulasToRemove = new ArrayList<MLNFormula>(); boolean transfered; List<MLNFormula> formulasToAdd = new ArrayList<MLNFormula>(); for (MLNFormula weightFormula : weightModel.getWeightedFormulas()) { transfered = false; if (weightFormula.getProbabilityWeight() != null || weightFormula.getUtilityWeight() != null) { for (MLNFormula targetFormula : getAll(MLNFormula.class)) { if (weightFormula .getPlainFormula() .contentEquals(targetFormula.getPlainFormula(), false, false)) { targetFormula.setProbabilityWeight(weightFormula.getProbabilityWeight()); targetFormula.setUtilityWeight(weightFormula.getUtilityWeight()); transfered = true; break; } else if (!targetFormula.isHardRule() && targetFormula.getProbabilityWeight() == null) targetFormula.setProbabilityWeight(buildMLNWeight(0.0)); } } if (!transfered) { formulasToAdd.add(weightFormula); } } for (MLNFormula quantifiedFormula : getQuantifiedFormulas()) { if (quantifiedFormula.getPlainFormula() != null && quantifiedFormula.getPlainFormula().getQuantification() != null && quantifiedFormula .getPlainFormula() .getQuantification() .getRelation() .equals(MLNRelation.LE) && skipLE) { formulasToRemove.add(quantifiedFormula); } } for (MLNFormula formula : formulasToRemove) removeMlnObject(formula); for (MLNFormula formula : formulasToAdd) { addMlnObject(formula); } }
public void removeUnusedPredicates() { for (MLNPredicate predicate : unusedPredicates) { removeMlnObject(predicate); } }