[jboss-svn-commits] JBL Code SVN: r19188 - in labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main: java/org/drools/solver/examples/itc2007/curriculumcourse/domain and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Mar 21 15:26:16 EDT 2008
Author: ge0ffrey
Date: 2008-03-21 15:26:16 -0400 (Fri, 21 Mar 2008)
New Revision: 19188
Added:
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/app/CurriculumCourseApp.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/swingui/CurriculumCoursePanel.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/curriculumcourse/solver/curriculumCourseScoreRules.drl
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/curriculumcourse/solver/curriculumCourseSolverConfig.xml
Modified:
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Course.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Curriculum.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Day.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Lecture.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Period.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Room.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Teacher.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Timeslot.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/UnavailablePeriodConstraint.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationScoreRules.drl
Log:
curruculumcourse panel
Copied: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/app/CurriculumCourseApp.java (from rev 18895, labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/app/ExaminationApp.java)
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/app/CurriculumCourseApp.java (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/app/CurriculumCourseApp.java 2008-03-21 19:26:16 UTC (rev 19188)
@@ -0,0 +1,38 @@
+package org.drools.solver.examples.itc2007.curriculumcourse.app;
+
+import org.drools.solver.config.XmlSolverConfigurer;
+import org.drools.solver.core.Solver;
+import org.drools.solver.examples.common.app.CommonApp;
+import org.drools.solver.examples.common.swingui.SolutionPanel;
+import org.drools.solver.examples.itc2007.curriculumcourse.swingui.CurriculumCoursePanel;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class CurriculumCourseApp extends CommonApp {
+
+ public static final String SOLVER_CONFIG
+ = "/org/drools/solver/examples/itc2007/curriculumcourse/solver/curriculumCourseSolverConfig.xml";
+
+ public static void main(String[] args) {
+ new CurriculumCourseApp().init();
+ }
+
+ @Override
+ protected Solver createSolver() {
+ XmlSolverConfigurer configurer = new XmlSolverConfigurer();
+ configurer.configure(SOLVER_CONFIG);
+ return configurer.buildSolver();
+ }
+
+ @Override
+ protected String getExampleDirName() {
+ return "itc2007/curriculumcourse";
+ }
+
+ @Override
+ protected SolutionPanel createSolutionPanel() {
+ return new CurriculumCoursePanel();
+ }
+
+}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Course.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Course.java 2008-03-21 19:16:54 UTC (rev 19187)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Course.java 2008-03-21 19:26:16 UTC (rev 19188)
@@ -1,11 +1,13 @@
package org.drools.solver.examples.itc2007.curriculumcourse.domain;
+import com.thoughtworks.xstream.annotations.XStreamAlias;
import org.apache.commons.lang.builder.CompareToBuilder;
import org.drools.solver.examples.common.domain.AbstractPersistable;
/**
* @author Geoffrey De Smet
*/
+ at XStreamAlias("Course")
public class Course extends AbstractPersistable implements Comparable<Course> {
private String code;
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Curriculum.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Curriculum.java 2008-03-21 19:16:54 UTC (rev 19187)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Curriculum.java 2008-03-21 19:26:16 UTC (rev 19188)
@@ -1,11 +1,13 @@
package org.drools.solver.examples.itc2007.curriculumcourse.domain;
+import com.thoughtworks.xstream.annotations.XStreamAlias;
import org.apache.commons.lang.builder.CompareToBuilder;
import org.drools.solver.examples.common.domain.AbstractPersistable;
/**
* @author Geoffrey De Smet
*/
+ at XStreamAlias("Curriculum")
public class Curriculum extends AbstractPersistable implements Comparable<Curriculum> {
private String code;
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Day.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Day.java 2008-03-21 19:16:54 UTC (rev 19187)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Day.java 2008-03-21 19:26:16 UTC (rev 19188)
@@ -1,11 +1,13 @@
package org.drools.solver.examples.itc2007.curriculumcourse.domain;
+import com.thoughtworks.xstream.annotations.XStreamAlias;
import org.apache.commons.lang.builder.CompareToBuilder;
import org.drools.solver.examples.common.domain.AbstractPersistable;
/**
* @author Geoffrey De Smet
*/
+ at XStreamAlias("Day")
public class Day extends AbstractPersistable implements Comparable<Day> {
private int dayIndex;
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Lecture.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Lecture.java 2008-03-21 19:16:54 UTC (rev 19187)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Lecture.java 2008-03-21 19:26:16 UTC (rev 19188)
@@ -1,5 +1,6 @@
package org.drools.solver.examples.itc2007.curriculumcourse.domain;
+import com.thoughtworks.xstream.annotations.XStreamAlias;
import org.apache.commons.lang.builder.CompareToBuilder;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
@@ -8,6 +9,7 @@
/**
* @author Geoffrey De Smet
*/
+ at XStreamAlias("Lecture")
public class Lecture extends AbstractPersistable implements Comparable<Lecture> {
private Course course;
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Period.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Period.java 2008-03-21 19:16:54 UTC (rev 19187)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Period.java 2008-03-21 19:26:16 UTC (rev 19188)
@@ -1,11 +1,13 @@
package org.drools.solver.examples.itc2007.curriculumcourse.domain;
+import com.thoughtworks.xstream.annotations.XStreamAlias;
import org.apache.commons.lang.builder.CompareToBuilder;
import org.drools.solver.examples.common.domain.AbstractPersistable;
/**
* @author Geoffrey De Smet
*/
+ at XStreamAlias("Period")
public class Period extends AbstractPersistable implements Comparable<Period> {
private Day day;
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Room.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Room.java 2008-03-21 19:16:54 UTC (rev 19187)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Room.java 2008-03-21 19:26:16 UTC (rev 19188)
@@ -1,11 +1,13 @@
package org.drools.solver.examples.itc2007.curriculumcourse.domain;
+import com.thoughtworks.xstream.annotations.XStreamAlias;
import org.apache.commons.lang.builder.CompareToBuilder;
import org.drools.solver.examples.common.domain.AbstractPersistable;
/**
* @author Geoffrey De Smet
*/
+ at XStreamAlias("Room")
public class Room extends AbstractPersistable implements Comparable<Room> {
private String code;
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Teacher.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Teacher.java 2008-03-21 19:16:54 UTC (rev 19187)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Teacher.java 2008-03-21 19:26:16 UTC (rev 19188)
@@ -1,5 +1,6 @@
package org.drools.solver.examples.itc2007.curriculumcourse.domain;
+import com.thoughtworks.xstream.annotations.XStreamAlias;
import org.apache.commons.lang.builder.CompareToBuilder;
import org.drools.solver.examples.common.domain.AbstractPersistable;
@@ -7,6 +8,7 @@
* Not used during score calculation, so not inserted into the working memory.
* @author Geoffrey De Smet
*/
+ at XStreamAlias("Teacher")
public class Teacher extends AbstractPersistable implements Comparable<Teacher> {
private String code;
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Timeslot.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Timeslot.java 2008-03-21 19:16:54 UTC (rev 19187)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/Timeslot.java 2008-03-21 19:26:16 UTC (rev 19188)
@@ -1,11 +1,13 @@
package org.drools.solver.examples.itc2007.curriculumcourse.domain;
+import com.thoughtworks.xstream.annotations.XStreamAlias;
import org.apache.commons.lang.builder.CompareToBuilder;
import org.drools.solver.examples.common.domain.AbstractPersistable;
/**
* @author Geoffrey De Smet
*/
+ at XStreamAlias("Timeslot")
public class Timeslot extends AbstractPersistable implements Comparable<Timeslot> {
private int timeslotIndex;
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/UnavailablePeriodConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/UnavailablePeriodConstraint.java 2008-03-21 19:16:54 UTC (rev 19187)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/UnavailablePeriodConstraint.java 2008-03-21 19:26:16 UTC (rev 19188)
@@ -1,12 +1,15 @@
package org.drools.solver.examples.itc2007.curriculumcourse.domain;
+import com.thoughtworks.xstream.annotations.XStreamAlias;
import org.apache.commons.lang.builder.CompareToBuilder;
import org.drools.solver.examples.common.domain.AbstractPersistable;
/**
* @author Geoffrey De Smet
*/
-public class UnavailablePeriodConstraint extends AbstractPersistable implements Comparable<UnavailablePeriodConstraint> {
+ at XStreamAlias("UnavailablePeriodConstraint")
+public class UnavailablePeriodConstraint extends AbstractPersistable
+ implements Comparable<UnavailablePeriodConstraint> {
private Course course;
private Period period;
Copied: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/swingui/CurriculumCoursePanel.java (from rev 18895, labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/swingui/ExaminationPanel.java)
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/swingui/CurriculumCoursePanel.java (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/swingui/CurriculumCoursePanel.java 2008-03-21 19:26:16 UTC (rev 19188)
@@ -0,0 +1,132 @@
+package org.drools.solver.examples.itc2007.curriculumcourse.swingui;
+
+import java.awt.Color;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.swing.AbstractAction;
+import javax.swing.BorderFactory;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import org.drools.solver.examples.common.swingui.SolutionPanel;
+import org.drools.solver.examples.itc2007.curriculumcourse.domain.CurriculumCourseSchedule;
+import org.drools.solver.examples.itc2007.curriculumcourse.domain.Lecture;
+import org.drools.solver.examples.itc2007.curriculumcourse.domain.Period;
+import org.drools.solver.examples.itc2007.curriculumcourse.domain.Room;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class CurriculumCoursePanel extends SolutionPanel {
+
+ private static final Color HEADER_COLOR = Color.YELLOW;
+
+ private GridLayout gridLayout;
+
+ public CurriculumCoursePanel() {
+ gridLayout = new GridLayout(0, 1);
+ setLayout(gridLayout);
+ }
+
+ private CurriculumCourseSchedule getCurriculumCourseSchedule() {
+ return (CurriculumCourseSchedule) solutionBusiness.getSolution();
+ }
+
+ public void resetPanel() {
+ removeAll();
+ CurriculumCourseSchedule schedule = getCurriculumCourseSchedule();
+ gridLayout.setColumns(schedule.getRoomList().size() + 1);
+ JLabel headerCornerLabel = new JLabel("Period \\ Room");
+ headerCornerLabel.setBorder(BorderFactory.createCompoundBorder(
+ BorderFactory.createLineBorder(Color.DARK_GRAY),
+ BorderFactory.createEmptyBorder(2, 2, 2, 2)));
+ headerCornerLabel.setBackground(HEADER_COLOR);
+ headerCornerLabel.setOpaque(true);
+ add(headerCornerLabel);
+ for (Room room : schedule.getRoomList()) {
+ JLabel roomLabel = new JLabel(room.toString());
+ roomLabel.setBorder(BorderFactory.createCompoundBorder(
+ BorderFactory.createLineBorder(Color.DARK_GRAY),
+ BorderFactory.createEmptyBorder(2, 2, 2, 2)));
+ roomLabel.setBackground(HEADER_COLOR);
+ roomLabel.setOpaque(true);
+ add(roomLabel);
+ }
+ Map<Period, Map<Room, PeriodRoomPanel>> periodRoomPanelMap = new HashMap<Period, Map<Room, PeriodRoomPanel>>();
+ for (Period period : schedule.getPeriodList()) {
+ JLabel periodLabel = new JLabel(period.toString());
+ periodLabel.setBorder(BorderFactory.createCompoundBorder(
+ BorderFactory.createLineBorder(Color.DARK_GRAY),
+ BorderFactory.createEmptyBorder(2, 2, 2, 2)));
+ periodLabel.setBackground(HEADER_COLOR);
+ periodLabel.setOpaque(true);
+ add(periodLabel);
+ Map<Room, PeriodRoomPanel> roomPanelMap = new HashMap<Room, PeriodRoomPanel>();
+ periodRoomPanelMap.put(period, roomPanelMap);
+ for (Room room : schedule.getRoomList()) {
+ PeriodRoomPanel periodRoomPanel = new PeriodRoomPanel();
+ add(periodRoomPanel);
+ roomPanelMap.put(room, periodRoomPanel);
+ }
+ }
+ if (schedule.isInitialized()) {
+ for (Lecture lecture : schedule.getLectureList()) {
+ PeriodRoomPanel periodRoomPanel = periodRoomPanelMap.get(lecture.getPeriod()).get(lecture.getRoom());
+ periodRoomPanel.addLecture(lecture);
+ }
+ }
+ }
+
+ private class PeriodRoomPanel extends JPanel {
+
+ public PeriodRoomPanel() {
+ super(new GridLayout(0, 1));
+ setBorder(BorderFactory.createCompoundBorder(
+ BorderFactory.createLineBorder(Color.DARK_GRAY),
+ BorderFactory.createEmptyBorder(2, 2, 2, 2)));
+ }
+
+ public void addLecture(Lecture lecture) {
+ JButton button = new JButton(new ExamAction(lecture));
+ add(button);
+ }
+
+ }
+
+ private class ExamAction extends AbstractAction {
+
+ private Lecture lecture;
+
+ public ExamAction(Lecture lecture) {
+ super(lecture.toString());
+ this.lecture = lecture;
+ }
+
+ public void actionPerformed(ActionEvent e) {
+// JPanel listFieldsPanel = new JPanel(new GridLayout(2, 1));
+// List<Period> periodList = getExamination().getPeriodList();
+// JComboBox periodListField = new JComboBox(periodList.toArray());
+// periodListField.setSelectedItem(lecture.getPeriod());
+// listFieldsPanel.add(periodListField);
+// List<Room> roomList = getExamination().getRoomList();
+// JComboBox roomListField = new JComboBox(roomList.toArray());
+// roomListField.setSelectedItem(lecture.getRoom());
+// listFieldsPanel.add(roomListField);
+// int result = JOptionPane.showConfirmDialog(CurriculumCoursePanel.this.getRootPane(), listFieldsPanel,
+// "Select period and room", JOptionPane.OK_CANCEL_OPTION);
+// if (result == JOptionPane.OK_OPTION) {
+// Period toPeriod = (Period) periodListField.getSelectedItem();
+// solutionBusiness.doMove(new PeriodChangeMove(lecture, toPeriod));
+// Room toRoom = (Room) roomListField.getSelectedItem();
+// solutionBusiness.doMove(new RoomChangeMove(lecture, toRoom));
+// workflowFrame.updateScreen();
+// }
+ }
+
+ }
+
+}
\ No newline at end of file
Copied: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/curriculumcourse/solver/curriculumCourseScoreRules.drl (from rev 18895, labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationScoreRules.drl)
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/curriculumcourse/solver/curriculumCourseScoreRules.drl (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/curriculumcourse/solver/curriculumCourseScoreRules.drl 2008-03-21 19:26:16 UTC (rev 19188)
@@ -0,0 +1,51 @@
+package org.drools.solver.examples.itc2007.curriculumcourse.solver;
+ dialect "java"
+
+import org.drools.solver.core.score.calculator.HardAndSoftConstraintScoreCalculator;
+import org.drools.solver.core.score.constraint.IntConstraintOccurrence;
+import org.drools.solver.core.score.constraint.ConstraintType;
+
+import org.drools.solver.examples.itc2007.curriculumcourse.domain.Course;
+import org.drools.solver.examples.itc2007.curriculumcourse.domain.Curriculum;
+import org.drools.solver.examples.itc2007.curriculumcourse.domain.CurriculumCourseSchedule;
+import org.drools.solver.examples.itc2007.curriculumcourse.domain.Day;
+import org.drools.solver.examples.itc2007.curriculumcourse.domain.Lecture;
+import org.drools.solver.examples.itc2007.curriculumcourse.domain.Period;
+import org.drools.solver.examples.itc2007.curriculumcourse.domain.Room;
+import org.drools.solver.examples.itc2007.curriculumcourse.domain.Teacher;
+import org.drools.solver.examples.itc2007.curriculumcourse.domain.Timeslot;
+import org.drools.solver.examples.itc2007.curriculumcourse.domain.UnavailablePeriodConstraint;
+
+global HardAndSoftConstraintScoreCalculator scoreCalculator;
+
+// ############################################################################
+// Hard constraints
+// ############################################################################
+
+// Accumulate hard constraints
+rule "hardConstraintsBroken"
+ salience -1 // Finish the other rules first (optional, for performance)
+ when
+ $hardTotal : Number() from accumulate(
+ IntConstraintOccurrence(constraintType == ConstraintType.NEGATIVE_HARD, $weight : weight),
+ sum($weight) // Vote for http://jira.jboss.com/jira/browse/JBRULES-1075
+ );
+ then
+ scoreCalculator.setHardConstraintsBroken($hardTotal.intValue());
+end
+
+// ############################################################################
+// Soft constraints
+// ############################################################################
+
+// Accumulate soft constraints
+rule "softConstraintsBroken"
+ salience -1 // Finish the other rules first (optional, for performance)
+ when
+ $softTotal : Number() from accumulate(
+ IntConstraintOccurrence(constraintType == ConstraintType.NEGATIVE_SOFT, $weight : weight),
+ sum($weight) // Vote for http://jira.jboss.com/jira/browse/JBRULES-1075
+ );
+ then
+ scoreCalculator.setSoftConstraintsBroken($softTotal.intValue());
+end
Copied: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/curriculumcourse/solver/curriculumCourseSolverConfig.xml (from rev 18895, labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationSolverConfig.xml)
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/curriculumcourse/solver/curriculumCourseSolverConfig.xml (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/curriculumcourse/solver/curriculumCourseSolverConfig.xml 2008-03-21 19:26:16 UTC (rev 19188)
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<localSearchSolver>
+ <scoreDrl>/org/drools/solver/examples/itc2007/curriculumcourse/solver/curriculumCourseScoreRules.drl</scoreDrl>
+ <scoreCalculator>
+ <scoreCalculatorType>HARD_AND_SOFT_CONSTRAINTS</scoreCalculatorType>
+ </scoreCalculator>
+ <!--<startingSolutionInitializerClass>org.drools.solver.examples.itc2007.examination.solver.solution.initializer.ExaminationStartingSolutionInitializer</startingSolutionInitializerClass>-->
+ <finish>
+ <!--
+ Official benchmark maximumSecondsSpend allowed on:
+ ge0ffrey's main pc: 429
+ ge0ffrey's old pc: 1152
+ -->
+ <maximumSecondsSpend>429</maximumSecondsSpend>
+ <!--<feasableScore>-999999.0</feasableScore>-->
+ <!--<maximumStepCount>100</maximumStepCount>-->
+ </finish>
+ <selector>
+ <selector>
+ <topSize>10</topSize>
+ </selector>
+ <!--<selector>-->
+ <!--<moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.PeriodChangeExaminationMoveFactory</moveFactoryClass>-->
+ <!--<relativeSelection>0.002</relativeSelection>-->
+ <!--</selector>-->
+ <!--<selector>-->
+ <!--<moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.RoomChangeExaminationMoveFactory</moveFactoryClass>-->
+ <!--<relativeSelection>0.002</relativeSelection>-->
+ <!--</selector>-->
+ <!--<selector>-->
+ <!--<moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.ExamSwitchExaminationMoveFactory</moveFactoryClass>-->
+ <!--<relativeSelection>0.002</relativeSelection>-->
+ <!--</selector>-->
+ </selector>
+ <accepter>
+ <completeSolutionTabuSize>1500</completeSolutionTabuSize>
+ </accepter>
+ <forager>
+ <foragerType>MAX_SCORE_OF_ALL</foragerType>
+ </forager>
+ <!--<selector>-->
+ <!--<moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.PeriodChangeExaminationMoveFactory</moveFactoryClass>-->
+ <!--<shuffleMovesEveryStep>true</shuffleMovesEveryStep>-->
+ <!--</selector>-->
+ <!--<accepter>-->
+ <!--<accepterType>SIMULATED_ANNEALING</accepterType>-->
+ <!--</accepter>-->
+ <!--<forager>-->
+ <!--<foragerType>FIRST_RANDOMLY_ACCEPTED</foragerType>-->
+ <!--</forager>-->
+</localSearchSolver>
+
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationScoreRules.drl
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationScoreRules.drl 2008-03-21 19:16:54 UTC (rev 19187)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationScoreRules.drl 2008-03-21 19:26:16 UTC (rev 19188)
@@ -18,8 +18,6 @@
import org.drools.solver.examples.itc2007.examination.domain.Topic;
import org.drools.solver.examples.itc2007.examination.domain.TopicConflict;
-import java.util.HashSet;
-
global HardAndSoftConstraintScoreCalculator scoreCalculator;
// ############################################################################
More information about the jboss-svn-commits
mailing list