Skip to content
This repository was archived by the owner on May 23, 2022. It is now read-only.

Commit 32f39d6

Browse files
authored
Merge pull request #19 from manleviet/second_version
Second version
2 parents fceeae1 + 263bc1b commit 32f39d6

File tree

9 files changed

+56
-28
lines changed

9 files changed

+56
-28
lines changed

.idea/copyright/manleviet.xml

Lines changed: 0 additions & 6 deletions
This file was deleted.

.idea/copyright/profiles_settings.xml

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

Lines changed: 4 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/runConfigurations.xml

Lines changed: 0 additions & 10 deletions
This file was deleted.

pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,12 @@
2222
<artifactId>fm</artifactId>
2323
<version>1.2</version>
2424
</dependency>
25+
26+
<dependency>
27+
<groupId>at.tugraz.ist.ase</groupId>
28+
<artifactId>eval-package</artifactId>
29+
<version>1.2</version>
30+
</dependency>
2531
</dependencies>
2632

2733
<distributionManagement>

src/main/java/at/tugraz/ist/ase/common/ConstraintUtils.java

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,32 @@
1111
import at.tugraz.ist.ase.knowledgebases.core.Constraint;
1212
import lombok.NonNull;
1313
import lombok.experimental.UtilityClass;
14+
import lombok.extern.slf4j.Slf4j;
15+
import org.chocosolver.solver.Model;
1416

17+
import java.util.Collection;
1518
import java.util.List;
1619
import java.util.Set;
1720
import java.util.stream.Collectors;
1821

22+
import static at.tugraz.ist.ase.eval.evaluator.PerformanceEvaluator.incrementCounter;
23+
1924
@UtilityClass
25+
@Slf4j
2026
public final class ConstraintUtils {
2127

28+
// for evaluation
29+
public final String COUNTER_UNPOST_CONSTRAINT = "The number of unpost constraints:";
30+
public final String COUNTER_POST_CONSTRAINT = "The number of post constraints:";
31+
public final String COUNTER_CONSTAINS_CONSTRAINT = "The number of contains calls:";
32+
2233
public String convertToString(@NonNull Set<Constraint> ac) {
2334
return ac.stream().map(Constraint::toString).collect(Collectors.joining("\n"));
2435
}
2536

2637
public String convertToStringWithMessage(@NonNull List<Set<Constraint>> allDiag, @NonNull String mess) {
38+
if (allDiag.isEmpty()) return "";
39+
2740
StringBuilder sb = new StringBuilder();
2841
int count = 0;
2942
for (Set<Constraint> diag : allDiag) {
@@ -39,11 +52,29 @@ public String convertToStringWithMessage(@NonNull List<Set<Constraint>> allDiag,
3952
return sb.toString();
4053
}
4154

55+
public void postConstraints(Collection<Constraint> C, Model toModel) {
56+
for (Constraint c : C) {
57+
c.getChocoConstraints().forEach(toModel::post);
58+
incrementCounter(COUNTER_POST_CONSTRAINT, c.getChocoConstraints().size());
59+
}
60+
log.trace("{}Posted constraints", LoggerUtils.tab);
61+
}
62+
4263
public boolean isMinimal(Set<Constraint> diag, List<Set<Constraint>> allDiag) {
43-
return allDiag.stream().noneMatch(diag::containsAll);
64+
return allDiag.parallelStream().noneMatch(diag::containsAll);
4465
}
4566

4667
public boolean containsAll(List<Set<Constraint>> allDiag, Set<Constraint> diag) {
47-
return allDiag.stream().anyMatch(adiag -> adiag.containsAll(diag));
68+
return allDiag.parallelStream().anyMatch(adiag -> adiag.containsAll(diag));
69+
}
70+
71+
public boolean hasIntersection(Collection<Constraint> col1, Collection<Constraint> col2) {
72+
return col1.parallelStream().anyMatch(col2::contains);
73+
/*
74+
for (Constraint c : col1) {
75+
if (col2.contains(c)) return true;
76+
}
77+
return false;
78+
*/
4879
}
4980
}

src/main/java/at/tugraz/ist/ase/knowledgebases/core/Constraint.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
import java.util.List;
1919
import java.util.Objects;
2020

21+
import static com.google.common.base.Preconditions.checkArgument;
22+
import static com.google.common.base.Preconditions.checkElementIndex;
23+
2124
@Getter
2225
@Slf4j
2326
public class Constraint {
@@ -33,9 +36,13 @@ public Constraint(@NonNull String constraint) {
3336
log.trace("{}Created Constraint [cstr={}]", LoggerUtils.tab, constraint);
3437
}
3538

36-
public void addChocoConstraints(Model model, int startIdx, int endIdx, boolean hasNegativeConstraints) {
39+
public void addChocoConstraints(@NonNull Model model, int startIdx, int endIdx, boolean hasNegativeConstraints) {
3740
org.chocosolver.solver.constraints.Constraint[] constraints = model.getCstrs();
3841

42+
checkElementIndex(startIdx, constraints.length, "startIdx must be within the range of constraints");
43+
checkElementIndex(endIdx, constraints.length, "endIdx must be within the range of constraints");
44+
checkArgument(startIdx <= endIdx, "startIdx must be <= endIdx");
45+
3946
if (hasNegativeConstraints) {
4047
endIdx = endIdx - 2;
4148
} else {

src/main/java/at/tugraz/ist/ase/knowledgebases/core/KB.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import java.util.List;
1919
import java.util.stream.IntStream;
2020

21-
import static com.google.common.base.Preconditions.checkArgument;
21+
import static com.google.common.base.Preconditions.checkElementIndex;
2222

2323
@Getter
2424
@ToString
@@ -75,7 +75,7 @@ public int getNumVariables() {
7575
}
7676

7777
public Variable getVariable(int index) {
78-
checkArgument(index >= 0 && index < variableList.size(), "Index out of bounds");
78+
checkElementIndex(index, variableList.size(), "Index out of bounds");
7979

8080
return variableList.get(index);
8181
}
@@ -116,7 +116,7 @@ public int getNumConstraints() {
116116
}
117117

118118
public Constraint getConstraint(int index) {
119-
checkArgument(index >= 0 && index < constraintList.size(), "Index out of bounds");
119+
checkElementIndex(index, constraintList.size(), "Index out of bounds");
120120

121121
return constraintList.get(index);
122122
}

src/main/java/at/tugraz/ist/ase/knowledgebases/pc/PCKB.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,6 @@
2020
import java.util.Arrays;
2121
import java.util.LinkedList;
2222
import java.util.List;
23-
import java.util.stream.IntStream;
24-
25-
import static com.google.common.base.Preconditions.checkArgument;
2623

2724
@Slf4j
2825
public class PCKB extends KB {

0 commit comments

Comments
 (0)