CSU 670 Spring 2009 Out: February 3, 2009 Due: February 10, 2009 Karl Lieberherr Ahmed Abdelmeged Subproject 5 ================================================================= Implement a robot capable of playing Classic SDG CSP Slow Pitch Softball (multiple relations in a relation chain) in our third robot competition. The updated section 3.3 in http://www.ccs.neu.edu/home/lieber/courses/csu670/sp09/project/csu670-sp09-reqs.pdf explains the different versions of the Classic SDG CSP game. The following is in preparation for Classic SDG CSP Fast Pitch Softball and the simpler Classic SDG CSP Fast Pitch Softball Level k Independent competitions. Level k Independent means that there are k relations that are independent, i.e., no relation is implying another relation. (See section 3.3 of the requirements document). The fourth competition will be Classic SDG CSP Fast Pitch Softball Level 2 Independent. PART 1: 15 points ======================================== R1 => R2 means that the Boolean expression R1 (in our case using 3 variables) implies Boolean expression R2. R1 => R2 <=> !R1 and R2 With our encoding of relations, => means bit-wise imply. Given a derivative, list all relation pairs that are in an implication relationship. For example, for (2,6,22,1,3) we have the implication relationships: 2 => 6 => 22 and 1 => 3 (and 2 => 22 by transitivity). Consider the technique suggested by Ahmed to check R1=>R2: (R1&R2)==R1 & is the bitwise and. R1&R2 is true for the rows that both R1 and R2 are true. If that is R2, then that means that whatever makes R1 true also makes R2 true. PART 2: ========================================= I use the SAT notation. PART A: ===================================================== Consider d1 = (1,1) and d2 = (2,0) and d3 = ((1,1) (2,0)). Determine the break-even prices for d1, d2 and d3. Notice that ((1,1) (2,0)) belongs to: Classic SDG CSP Fast Pitch Softball Level 2 Independent. Based on this example, carry the requirments analysis from T Ball and Slow Pitch Softball to Classic SDG CSP Fast Pitch Softball Level 2 Independent and program the following parts. Note that because we practice incremental software development, we need to revisit the agents we programmed earlier for T Ball. PART B: Buying Agent: 3 points ========================================== Add a buying agent to your robot that buys all derivatives d with a price p < break-even(d), provided there is enough life energy available. PART C: Offering Agent: 3 points ========================================== Add an offering agent to your robot that only offers derivatives d at a price p > break-even(d). PART D: Finishing Agent: 4 points ========================================= Add a finishing agent to your robot that uses an optimally biased coin to generate the assignments. Generate a few assignments and take the best one. PART E: Raw Material Delivery Agent: 4 points ========================================= The raw material delivery agent needs to create a symmetric raw material. But this time, the weights need to be chosen carefully. ======================================== Project Submission Guidelines: ============================== 1. Player: 1.1. Turn in the jar file for your player, without source code, to /scratch/lieber/csu670-sp09-sdg/feb10 Make sure you name your robot after your team name followed by the subproject number. If your team name is SilverSnakes, call your jar on Blackboard SilverSnakes5_Source.jar and the other one: /scratch/lieber/csu670-sp09-sdg/jan27/SilverSnakes5.jar for this subproject 5. 1.2. * Use the given manifest file supplied with the GenericPlayer located at: http://www.ccs.neu.edu/home/lieber/courses/csu670/sp09/source/GenericPlayer/player/player.mf This manifest file has two important entries. The first is the "Main-Class" entry which defines the entry point for the player (the class with the public static void main method). This makes the jar executable and this is in turn important for the Admin to run your player. In the generic player, it is the GenericPlayer class. The second important record is the "Player-Class" entry which points to a class that implements the PlayerI interface. In the generic player. it is again the GenericPlayer class. This is important because we'll have an evaluator that evaluates the intelligence of the different agents of your robot. 2. Source Code/Assignments: 2.1. Deliver Source Code/Assignment by checking them into svn BEFORE the deadline. Check your projects into the following path: https://trac.ccs.neu.edu/svn/speckerderivativegame/trunk/ Where GROUP_NAME is: 670km for: kathryn, mark, 670cx for: carol, xueyi, 670mm for: matthew, manny, 670gja for: ghadeer, jana, aron, 670jr for: john, ron, 670dl for: david, lee, 670dm for: dave, matt, 670ak for: alex, ken, 670ij for: ian, jay, 670ca for: charles, andrew, 670bk for: benjamin, konrad, 670cd for: christopher, duc, 670mb for: michael, brian, 670sj for: sarah, jeffery, 670kr for: kenneth, ryan, 670tj for: thomas, jorge, Use your CCIS credentials 2.2. Have your group's submission subdirectory organized as: https://trac.ccs.neu.edu/svn/speckerderivativegame/trunk/ / where project name is project5 for this project. Then, if a project asks for part 1, part 2 with sub parts A and B, part 3, your submission must have the same structure: /part1 /part2 /partA /partB /part3 where partA is a subdirectory of part2, etc. Readme files are appreciated. They should contain information like: part 1 is in Y.java and part 2 in C.java and program.input. 2.3. If a part of your project asks you to develop a program, submit that part as an Eclipse project. (From within eclipse, right click the project and select "team" then "share project"). Your project should have the following structure |_src | |_ |_test |_ 3. Notes: - Remember that your source code will be made available to the class at a later time. - The submitted robots are made available to the entire class so that you can check the competition results and observe the behaviors of all robots and learn from them. - The Scrum masters need to decide which of those parts they have time to implement with their team by the deadline. - The subproject will be evaluated based on how many subprojects you implement and based on the performance of your player in the competition. - It is important to unit test your application. We expect you to put some "Brain Power" in writing the test cases. Demonstrate this to us by writing a test plan and a reasonable amount of test cases.