Skip to content

Commit

Permalink
Minor cleanup in CSP package.
Browse files Browse the repository at this point in the history
  • Loading branch information
RuedigerLunde committed May 29, 2019
1 parent 489b58b commit 96ff9d0
Show file tree
Hide file tree
Showing 6 changed files with 8 additions and 18 deletions.
13 changes: 3 additions & 10 deletions aima-core/src/main/java/aima/core/search/csp/Assignment.java
@@ -1,7 +1,6 @@
package aima.core.search.csp;

import java.util.*;
import java.util.stream.Collectors;

/**
* An assignment assigns values to some or all variables of a CSP.
Expand All @@ -15,7 +14,7 @@ public class Assignment<VAR extends Variable, VAL> implements Cloneable {
private LinkedHashMap<VAR, VAL> variableToValueMap = new LinkedHashMap<>();

public List<VAR> getVariables() {
return variableToValueMap.keySet().stream().collect(Collectors.toList());
return new ArrayList<>(variableToValueMap.keySet());
}

public VAL getValue(VAR var) {
Expand All @@ -40,21 +39,15 @@ public boolean contains(VAR var) {
* <code>constraints</code>.
*/
public boolean isConsistent(List<Constraint<VAR, VAL>> constraints) {
for (Constraint<VAR, VAL> cons : constraints)
if (!cons.isSatisfiedWith(this))
return false;
return true;
return constraints.stream().allMatch(cons -> cons.isSatisfiedWith(this));
}

/**
* Returns true if this assignment assigns values to every variable of
* <code>vars</code>.
*/
public boolean isComplete(List<VAR> vars) {
for (VAR var : vars)
if (!contains(var))
return false;
return true;
return vars.stream().allMatch(this::contains);
}

/**
Expand Down
3 changes: 1 addition & 2 deletions aima-core/src/main/java/aima/core/search/csp/CSP.java
Expand Up @@ -154,8 +154,7 @@ public CSP<VAR, VAL> copyDomains() {
CSP<VAR, VAL> result;
try {
result = (CSP<VAR, VAL>) clone();
result.domains = new ArrayList<>(domains.size());
result.domains.addAll(domains);
result.domains = new ArrayList<>(domains);
} catch (CloneNotSupportedException e) {
throw new UnsupportedOperationException("Could not copy domains.");
}
Expand Down
3 changes: 1 addition & 2 deletions aima-core/src/main/java/aima/core/search/csp/CspSolver.java
Expand Up @@ -51,7 +51,6 @@ public void removeCspListener(CspListener<VAR, VAL> listener) {

/** Informs all registered listeners about a state change. */
protected void fireStateChanged(CSP<VAR, VAL> csp, Assignment<VAR, VAL> assignment, VAR variable) {
for (CspListener<VAR, VAL> listener : listeners)
listener.stateChanged(csp, assignment, variable);
listeners.forEach(listener -> listener.stateChanged(csp, assignment, variable));
}
}
Expand Up @@ -79,8 +79,7 @@ private Assignment<VAR, VAL> generateRandomAssignment(CSP<VAR, VAL> csp) {
private Set<VAR> getConflictedVariables(Assignment<VAR, VAL> assignment, CSP<VAR, VAL> csp) {
Set<VAR> result = new LinkedHashSet<>();
csp.getConstraints().stream().filter(constraint -> !constraint.isSatisfiedWith(assignment)).
forEach(constraint -> constraint.getScope().stream().filter(var -> !result.contains(var)).
forEach(result::add));
map(Constraint::getScope).forEach(result::addAll);
return result;
}

Expand Down
2 changes: 1 addition & 1 deletion aima-core/src/main/java/aima/core/search/csp/Variable.java
Expand Up @@ -23,7 +23,7 @@ public String toString() {
/** Variables with equal names are equal. */
@Override
public final boolean equals(Object obj) {
return obj instanceof Variable && this.name.equals(((Variable) obj).name);
return (obj != null && obj.getClass() == getClass()) && name.equals(((Variable) obj).name);
}

@Override
Expand Down
Expand Up @@ -33,7 +33,7 @@ public List<VAR> getScope() {

@Override
public boolean isSatisfiedWith(Assignment<VAR, VAL> assignment) {
Object value1 = assignment.getValue(var1);
VAL value1 = assignment.getValue(var1);
return value1 == null || !value1.equals(assignment.getValue(var2));
}
}

0 comments on commit 96ff9d0

Please sign in to comment.