Skip to content

Commit

Permalink
Meeting scheduling xslx file io (#394)
Browse files Browse the repository at this point in the history
* Create MeetingSchedulingXslxFileIO and write part of Configuration tab

* Finished writing Configuration view and testing it manually (opened created file and inspected it)

* Finished and tested Persons and Meetings tabs

* Implement writeDays and test it

* Implemented writeRooms and tested it

* Implement writeRoomsView

* Refactor MeetingSchedulingXlsxFileIO to extend AbstractXlsxSolutionFileIO

* Implement read: Configuration, personsList and meetingsList

* Implemented reader and writer methods, Generator generates the xlsx files

* Add id's when initializeingdomain classes in MeetingSchedulingXlsxReader

* Fix writing TimeGrainsHours bug in writeRooms

* Fix writeRoomsView so that a meeting spans multiple columns

* Fix writePersonsView so that a meeting spans multiple columns

* Add speakerList and Topic fields to class Meeting

* Improve filling the meetings and enforce attendees constraints

* remove days and timegrains headers from sheet Rooms

* Add 'Start and end on same day' rule to configuration sheet

* Add room stability and breaks between meetings ruls

* Fix Xslx typo to Xlsx

* Convert XML datasets into XLSX

* Refactor readMeetingList, add mediumScoreColor and improve readability

* Change xml to Xlsx in test files and fix build error

* Write date at which the solution is produced in configuration sheet

* Add speaker to meeting's requiredAttendanceList

* Replace writeConstraintLine with writeIntConstraintLine from parent class

* Add a rule to minimize number of overlapping meetings

* Add a rule to prioritize bigger rooms first

* Add printedFormView and rename Add larger rooms first -> assign larger rooms first

* Improve Printed form view sheet

* Add an entireGroupMeeting field to Meeting and add a hard constraint if such meeting is not scheduled

* Write Gropu column to Meetings sheet and make Room Stability a soft constraint

* Fix writing entireGroup meetings in Persons view. Fix writing configurations. Update examples to fix build error

* Refactor and clean the code

* Fix build error by adding nullPointerException check

* Fix continuation indentation to 8 instead of 4

* Refactor constraint names as an enum

* Parametrize weight of constraints and read it from a file

* Optimize One TimeGrain break rule and add some tests

* - Clean code and address reviews on GitHub. - Remove rules 'Don't go in overtime' (@ValueRangeProvider added) and 'Enter group meeting not schedule' (unnecessary). - Update the docs

* Remve entireGroupMeeting test case

* Refactor constraints weights into MeetingParametrization

* Add back don't go in overtime rule and regenerate examples.\n - Use MeetingParametrization in MeetingSchedulingGenerator

* Fix documentation styles

* Fix IndexOutOfBound bug in writing printedFormView when a meeting is scheduled overtime

* Add parametrization field to unit test

* Add ProblemFactProperty to MeetingParametrization field

* Fix order of MeetingSchedule fields
  • Loading branch information
MusaTalluzi authored and ge0ffrey committed Jul 8, 2018
1 parent d56e63e commit 7ca9666
Show file tree
Hide file tree
Showing 27 changed files with 1,382 additions and 14,143 deletions.
Expand Up @@ -13,6 +13,8 @@ Hard constraints:

* Room conflict: two meetings must not use the same room at the same time.
* Required attendance: A person cannot have two required meetings at the same time.
* Required room capacity: A meeting must not be in a room that doesn't fit all of the meeting's attendees.
* Start and end on same day: A meeting shouldn't be scheduled over multiple days.

Medium constraints:

Expand All @@ -21,6 +23,11 @@ Medium constraints:
Soft constraints:

* Sooner rather than later: Schedule all meetings as soon as possible.
* A break between meetings: Any two meetings should have at least one time grain break between them.
* Overlapping meetings: To minimize the number of meetings in parallel so people don't have to choose one meeting over the other.
* Assign larger rooms first: If a larger room is available any meeting should be assigned to that room in order to accommodate as many people as possible
even if they haven't signed up to that meeting.
* Room stability: If a person has two consecutive meetings with two or less time grains break between them they better be in the same room.


[[meetingSchedulingProblemSize]]
Expand All @@ -30,4 +37,7 @@ Soft constraints:
----
50meetings-160timegrains-5rooms has 50 meetings, 160 timeGrains and 5 rooms with a search space of 10^145.
100meetings-320timegrains-5rooms has 100 meetings, 320 timeGrains and 5 rooms with a search space of 10^320.
200meetings-640timegrains-5rooms has 200 meetings, 640 timeGrains and 5 rooms with a search space of 10^701.
400meetings-1280timegrains-5rooms has 400 meetings, 1280 timeGrains and 5 rooms with a search space of 10^1522.
800meetings-2560timegrains-5rooms has 800 meetings, 2560 timeGrains and 5 rooms with a search space of 10^3285.
----
Binary file not shown.
@@ -1,2 +1,2 @@
# Ignore temporary files
/tmp*.xml
/tmp*.xlsx
Binary file not shown.

0 comments on commit 7ca9666

Please sign in to comment.