[jboss-svn-commits] JBL Code SVN: r17829 - in labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main: java/org/drools/solver/examples/itc2007/examination/solver and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Jan 14 14:03:49 EST 2008
Author: ge0ffrey
Date: 2008-01-14 14:03:49 -0500 (Mon, 14 Jan 2008)
New Revision: 17829
Modified:
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/persistence/ExaminationInputConvertor.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/ExaminationStartingSolutionInitializer.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/benchmark/examinationSolverBenchmarkConfig.xml
Log:
better starting order + id's for room/period hard constraint
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/persistence/ExaminationInputConvertor.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/persistence/ExaminationInputConvertor.java 2008-01-14 17:38:21 UTC (rev 17828)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/persistence/ExaminationInputConvertor.java 2008-01-14 19:03:49 UTC (rev 17829)
@@ -209,9 +209,11 @@
List<Topic> topicList = examination.getTopicList();
List<PeriodHardConstraint> periodHardConstraintList = new ArrayList<PeriodHardConstraint>();
String line = bufferedReader.readLine();
+ int id = 0;
while (!line.equals("[RoomHardConstraints]")) {
String[] lineTokens = line.split(SPLIT_REGEX);
PeriodHardConstraint periodHardConstraint = new PeriodHardConstraint();
+ periodHardConstraint.setId((long) id);
if (lineTokens.length != 3) {
throw new IllegalArgumentException("Read line (" + line + ") is expected to contain 3 tokens.");
}
@@ -220,6 +222,7 @@
periodHardConstraint.setRightSideTopic(topicList.get(Integer.parseInt(lineTokens[2])));
periodHardConstraintList.add(periodHardConstraint);
line = bufferedReader.readLine();
+ id++;
}
examination.setPeriodHardConstraintList(periodHardConstraintList);
}
@@ -229,9 +232,11 @@
List<Topic> topicList = examination.getTopicList();
List<RoomHardConstraint> roomHardConstraintList = new ArrayList<RoomHardConstraint>();
String line = bufferedReader.readLine();
+ int id = 0;
while (!line.equals("[InstitutionalWeightings]")) {
String[] lineTokens = line.split(SPLIT_REGEX);
RoomHardConstraint roomHardConstraint = new RoomHardConstraint();
+ roomHardConstraint.setId((long) id);
if (lineTokens.length != 2) {
throw new IllegalArgumentException("Read line (" + line + ") is expected to contain 3 tokens.");
}
@@ -239,6 +244,7 @@
roomHardConstraint.setRoomHardConstraintType(RoomHardConstraintType.valueOf(lineTokens[1]));
roomHardConstraintList.add(roomHardConstraint);
line = bufferedReader.readLine();
+ id++;
}
examination.setRoomHardConstraintList(roomHardConstraintList);
}
@@ -254,6 +260,7 @@
private void readInstitutionalWeighting(BufferedReader bufferedReader, Examination examination) throws IOException {
InstitutionalWeighting institutionalWeighting = new InstitutionalWeighting();
+ institutionalWeighting.setId(0L);
String[] lineTokens;
lineTokens = readInstitutionalWeightingProperty(bufferedReader, "TWOINAROW", 2);
institutionalWeighting.setTwoInARowPenality(Integer.parseInt(lineTokens[1]));
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/ExaminationStartingSolutionInitializer.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/ExaminationStartingSolutionInitializer.java 2008-01-14 17:38:21 UTC (rev 17828)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/ExaminationStartingSolutionInitializer.java 2008-01-14 19:03:49 UTC (rev 17829)
@@ -122,14 +122,24 @@
List<Topic> assigningTopicList = new ArrayList<Topic>(examination.getTopicList());
Collections.sort(assigningTopicList, new Comparator<Topic>() {
public int compare(Topic a, Topic b) {
- // Descending
return new CompareToBuilder()
- .append(b.getStudentListSize(), a.getStudentListSize())
+ .append(b.getStudentListSize(), a.getStudentListSize()) // Descending
+ .append(b.getDuration(), a.getDuration()) // Descending
+ .append(a.getId(), b.getId()) // Ascending
.toComparison();
}
});
for (PeriodHardConstraint periodHardConstraint : examination.getPeriodHardConstraintList()) {
- if (periodHardConstraint.getPeriodHardConstraintType() == PeriodHardConstraintType.AFTER) {
+ if (periodHardConstraint.getPeriodHardConstraintType() == PeriodHardConstraintType.EXAM_COINCIDENCE) {
+ int leftSideIndex = assigningTopicList.indexOf(periodHardConstraint.getLeftSideTopic());
+ int rightSideIndex = assigningTopicList.indexOf(periodHardConstraint.getRightSideTopic());
+ int firstIndex = Math.min(leftSideIndex, rightSideIndex);
+ int lastIndex = Math.max(leftSideIndex, rightSideIndex);
+ if ((lastIndex - firstIndex) > 1) {
+ Topic lastTopic = assigningTopicList.remove(lastIndex);
+ assigningTopicList.add(firstIndex + 1, lastTopic);
+ }
+ } else if (periodHardConstraint.getPeriodHardConstraintType() == PeriodHardConstraintType.AFTER) {
int afterSideIndex = assigningTopicList.indexOf(periodHardConstraint.getLeftSideTopic());
int beforeSideIndex = assigningTopicList.indexOf(periodHardConstraint.getRightSideTopic());
if (afterSideIndex < beforeSideIndex) {
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/benchmark/examinationSolverBenchmarkConfig.xml
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/benchmark/examinationSolverBenchmarkConfig.xml 2008-01-14 17:38:21 UTC (rev 17828)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/benchmark/examinationSolverBenchmarkConfig.xml 2008-01-14 19:03:49 UTC (rev 17829)
@@ -21,7 +21,12 @@
</scoreCalculator>
<startingSolutionInitializerClass>org.drools.solver.examples.itc2007.examination.solver.ExaminationStartingSolutionInitializer</startingSolutionInitializerClass>
<finish>
- <maximumSecondsSpend>3</maximumSecondsSpend>
+ <!--
+ Official benchmark maximumSecondsSpend allowed on:
+ ge0ffrey's main pc: 429
+ ge0ffrey's old pc: 1152
+ -->
+ <maximumSecondsSpend>1152</maximumSecondsSpend>
</finish>
</inheritedLocalSearchSolver>
More information about the jboss-svn-commits
mailing list