Team Babbage Charles Maingi Seph Newman Jon Rollman Nils Schlupp
Original Project Group Formation Software Designed by Team Lovelace. Uses a Random Restart Hill Climbing Algorithm for assigning teams. Takes in a list of individuals and weights as a text file. Outputs a text file listing all groups. Original Sample InputOriginal Sample Output
Improvement Parameters Team Size Skill Sets Weights GPA Gender Skills Schedule Students ID# Name Gender GPA Skill Sets Time Availability += Output Team Set Criteria Suggested Team Sets What to add? Team Meeting Times
Times Input file takes in a list of times sperated by semicolons. Format : [DayOfWeek] [FromHour] : [FromMinute] [FromAM/PM] ~ [ToHour] [ToMinute] [ToAM/PM] Example: M 10:00pm ~ 11:30pm; W 6:00am ~ 8:00am; R 1:00pm ~ 2:00pm Times are parsed and store as a bit array. One bit for every half hour period. 1 = Occupied, 0 = free 24 * 2 * 7 = 336 Bits to represent each student’s weekly schedule W 6:00pm ~ 8:00 pm Example: UMTWRFSUMTWRFS
Bug Symptoms: We set up the program to output schedule bitarrays for debugging purposes. These bitarrays were various sizes. They should all have a size of 336. Narrowed things down to times with an hour of 12. Problem: Program was checking for the number 12, but the string 12 was being passed in. Solution: Five hours later…
Finding Common Times Simply perform a bitwise intersection on each team member’s schedule. Keep a zero if the bit is zero for all team members. Then translate into human-readable time string. … … … … … … … … Sched ule1 Sched ule2 Sched ule3 Inters ection
Input Times Format Change Original Time Input: W 11:00pm ~ 11:30 pm; R 12:00am ~ 1:00am No way to set the last 30 minutes of the day. Modified Time Input: W 11:00pm ~ R 1:00am Both to and from time must contain a day prefix.
Summary of Additions Modified Input Time Strings Ex: W 11:00pm ~ R 1:00am Finding Common Times Bitwise Intersection Translating time bit arrays into human-readable times. All added/moved to our new common times module.
Original Design Driver Formulas Random Number Generator AVL Tree Input file Output file... More... Common Times Modified Design
Testing Check Expects Edge Cases Property Tests DefRandom for generating a random schedule: Simply generate a list of 336 random bits. Round Trips BitArray -> String -> BitArray U 12:30am ~ U 1:00am; U 2:30am ~ U 3:30am; U 5:30am ~ U 6:00am; U 8:30am ~ U 10:00am; U 10:30am ~ U 1:30pm; U 2:00pm ~ U 3:00pm; U 5:00pm ~ U 7:30pm; U 8:30pm ~ U 9:30pm; U 10:00pm ~ U 11:30pm; M 12:00am ~ M 12:30am; M 2:00am ~ M 2:30am; M 3:30am ~ M 4:00am; M 4:30am ~ M 5:30am; M 6:30am ~ M 7:00am; M 8:30am ~ M 9:00am; M 9:30am ~ M 10:00am; M 10:30am ~ M 11:00am; M 11:30am ~ M 12:30pm; M 2:30pm ~ M 4:00pm; M 5:00pm ~ M 5:30pm; M 6:00pm ~ M 7:00pm; M 8:00pm ~ M 9:30pm; M 10:00pm ~ M 11:00pm; M 11:30pm ~ T 12:00am; T 1:00am ~ T 2:30am; T 3:30am ~ T 5:00am; T 7:00am ~ T 8:00am; T 8:30am ~ T 9:30am; T 10:00am ~ T 10:30am; T 11:00am ~ T 12:00pm; T 1:30pm ~ T 2:00pm; T 2:30pm ~ T 3:00pm; T 3:30pm ~ T 4:00pm; T 4:30pm ~ T 6:30pm; T 9:00pm ~ T 10:00pm; T 11:30pm ~ W 12:30am; W 1:00am ~ W 2:30am; W 3:00am ~ W 3:30am; W 4:30am ~ W 5:00am; W 9:00am ~ W 10:00am; W 10:30am ~ W 11:00am; W 12:00pm ~ W 12:30pm; W 2:00pm ~ W 2:30pm; W 3:00pm ~ W 3:30pm; W 5:30pm ~ W 6:00pm; W 6:30pm ~ W 7:30pm; W 9:30pm ~ W 10:00pm; W 10:30pm ~ R 1:30am; R 3:00am ~ R 3:30am; R 4:00am ~ R 5:00am; R 6:00am ~ R 6:30am; R 7:00am ~ R 7:30am; R 8:00am ~ R 8:30am; R 9:00am ~ R 9:30am; R 10:00am ~ R 10:30am; R 11:00am ~ R 12:00pm; R 12:30pm ~ R 2:30pm; R 3:00pm ~ R 4:30pm; R 7:30pm ~ R 8:00pm; R 8:30pm ~ R 9:00pm; R 11:00pm ~ F 12:30am; F 1:30am ~ F 2:30am; F 4:00am ~ F 4:30am; F 6:30am ~ F 8:00am; F 9:00am ~ F 9:30am; F 10:30am ~ F 11:30am; F 12:00pm ~ F 12:30pm; F 1:00pm ~ F 1:30pm; F 2:00pm ~ F 2:30pm; F 3:00pm ~ F 4:30pm; F 5:00pm ~ F 5:30pm; F 7:00pm ~ F 8:00pm; F 8:30pm ~ F 10:00pm; F 11:00pm ~ F 11:30pm; S 12:00am ~ S 1:30am; S 2:30am ~ S 3:30am; S 4:00am ~ S 6:00am; S 6:30am ~ S 7:00am; S 7:30am ~ S 9:30am; S 12:00pm ~ S 1:00pm; S 2:00pm ~ S 3:00pm; S 4:00pm ~ S 4:30pm; S 5:00pm ~ S 6:30pm; S 7:30pm ~ S 10:00pm; S 10:30pm ~ S 11:00pm
Probe ComponentLines of Code Common Times Interface6 Common Times Module206 Common Times Testing Suite65 Total:277
Sample Execution