代写CS 440: Artificial Intelligence Lab 4帮做Java编程

CS 440: Artificial Intelligence

Lab 4

Due: Friday 11/01/2024 @ 11:59pm EST

The purpose of labs is to practice the concepts that we learn in class. To that end you will be writing java code that uses a game engine called Sepia to develop agents that solve specific problems. In this lab we will be playing a zombie survival game called Zombayes, where we have to classify between human units (pretending to be zombies so they don’t get eaten) and actual zombies. Zombies will attack you given the chance, but humans will not. Your job will be to use a decision tree to learn how to distinguish between zombies and humans: you want to attack the zombies but not the humans!

1. Copy Files

Please, copy the files from the downloaded lab directory to your cs440 directory.  You can just drag and drop them in your file explorer.

•  Copy Downloads/lab4/lib/zomtree.jar to cs440/lib/zomtree.jar. This file is the custom jarfile that I created for you.

•  Copy Downloads/lab4/data/labs/zomtree to cs440/data/labs/zomtree. This directory contains a game configuration and map files.

•  Copy Downloads/lab4/src/labs to cs440/src/labs. This directory contains our source code  .java files.

Copy Downloads/lab4/zomtree .srcs to cs440/zomtree .srcs.

This file contains the paths to the  .java files we are working with in this lab.  Just like last lab, files like these are used to speed up the compilation process by preventing you from listing all source files you want to compile manually.

•  Copy Downloads/lab4/doc/labs to cs440/doc/labs.   This is the documentation generated from  zomtree.jar  and  will  be  extremely  useful  in  this  assignment.   After  copying,  if  you double-click on cs440/doc/labs/zomtree/index.html, the documentation should open in your browser.

2. Test run

If your setup is correct, you should be able to compile and execute the given template code.  You should see the Sepia window appear.

#  Mac,  Linux .  Run  from  the  cs440  directory .

javac  -cp  " ./lib/*: . "  @zomtree .srcs

java  -cp  " ./lib/*: . "  edu .cwru .sepia.Main2  data/labs/zomtree/easy/tunnel .xml

#  Windows .  Run  from  the  cs440  directory .

javac  -cp  " ./lib/*; . "  @zomtree .srcs

java  -cp  " ./lib/*; . "  edu .cwru .sepia.Main2  data/labs/zomtree/easy/tunnel .xml

3. Survival Rules & Information

Our game has two phases.  Initially, you and a partner must go and collect some gold.  However, the gold is guarded by a horde of zombies with humans pretending to be zombies (so they don’t get eaten) mixed in. There is also a special zombie unit who will continuously spawn new units whenever another unit is killed (this special zombie can spawn other zombies and also other humans, dont ask why). Because of this scenario, you will lose this game.  However, we are interested in how long you last; how many zombies you can take down with you before you are killed, and also how many humans you choose to kill.

The game will start off with your partner going to collect gold.  Once your partner is adjacent to the gold, all units in the horde will rush them. Humans, who bear no ill will to you or your partner, will take advantage of the confusion and flee to the bottom-right of the map.  The zombies however will seek to kill your partner. Your partner has a lot of health but isn’t very smart (or capable with their weapon), so will eventually succumb to the horde.

You have been paying attention this whole time, and will be supplied at the moment of your partner’s death with a record of which units attacked them (and therefore are known to be zombies), and which units did not (and therefore are known to be humans).  Each unit has a feature description which you cannot see on the game rendering.  So, to make it easier to view, human units in the horde have a  “h” character, and zombie units have a “z” character.  The “S” character is the zombie spawning unit, and there is only one of them in the game.

Your agent however does not get to view the characters of the units in order to make its decisions. Instead, your agent is supplied with four features:  2 continuous and 2 discrete.  The distribution of the features is controlled by the difficulty of the game:  humans and zombies look very different in the EASY game mode and look much more similar in the HARD game mode. You are to implement and train a decision tree model to classify whether or not a unit (represented with its feature vector) is a human or not.  Any unit your decision tree classifies as a zombie (i.e.  class 1) will be attacked by your agent. So be careful! Any time you waste shooting humans is time that you aren’t shooting zombies!

Task 1: Decision Tree Agent (100 points)

In this task,I want you to fill in the empty methods and classes in src .labs .zomtree .DecisionTreeAgent. You will need to finish the implementation for a DecisionTree type.  Our Decision Tree implemen-

tation will be a standard tree implementation, using Node objects and children/parent relationships. I have provided an abstract Node datatype, and have begun the implementation for two subtypes: InteriorNode and LeafNode.  You will need to finish these two classes in order to begin assembling a Decision Tree.

To build a Decision Tree, I have begun a recursive dfs-style. implementation for you called dfsBuild. This implementation should build a Node from the provided data (only looking at the provided columns within that data), and should recurse to build all children of the Node before returning.

I have provided the implementation for fit and predict for you as a courtesy.  Most notably is the predict method which will walk your tree until it encounters a LeafNode, at which point it will make a prediction. I have hidden most of the Sepia-ness from you, so please focus entirely on making a good Decision Tree model!

Suggestion:  This game will take a long time to run, so to save time, please complete the following:

1.  Modify the DecisionTree .fit method to save the training data to disk.  The Matrix class has serialization/deserialization methods, but you will need to open/close and read/write to the files. Once your training data is saved to disk, you don’t have to run the game again (and wait for the training data to generate from your partner) until the very end.  Once your data is saved to disk, you can remove your modification(s) from the fit method.

2. Write a separate Java file with its own main method. The name of this file, where it goes, etc. are not important.  What is important is that your main method loads the training data from disk, instantiates your DecisionTree class, and tries to fit the decision tree to the training data. Use this to debug your implementation.

3. When you have your implementation working, run the game again and see how well it does!  Use this pipeline to iterate and begin changing the difficulty of the game as you see fit.

Task 2: Extra Credit (50 points)

In this task I will ask you to tune your decision tree model.  There are many ways of doing this (for instance going through the ROC curve of your model, etc) however the most effective strategy for this is to prune your tree. The reason for doing so is that the consequences for a misclassification are not symmetric: if you misclassify a human as a zombie you will kill the human (and presumably feel bad). If you misclassify a zombie as a human, you won’t kill the zombie and the zombie will stand there attacking you until you die. Since our model predicts zombies as class 1 (i.e. the class corresponding to the boolean value true), misclassifying a zombie as a human is a false  negative.  The first false negative your model predicts is your death sentence.

To avoid making these mistakes, you should implement some of the pruning algorithms we discussed in lecture. Some will work better than others, its up to you to identify them.  Extra credit points will be awarded by running on the HARD difficulty.  Your implementation will earn credit proportional to the number of zombies that you kill, and will lose credit for every human that you kill.  For full extra credit, you must kill at least 40 zombies and not kill any humans.

Task 3:  Submitting your lab

Please submit your unpruned DecisionTreeAgent.java to the “normal-credit” entry on gradescope (just  drag  and  drop  in  the  file).    If  you  complete  the  extra  credit,  please  submit  your  pruned DecisionTreeAgent.java on the “ec” entry on gradescope.




热门主题

课程名

mktg2509 csci 2600 38170 lng302 csse3010 phas3226 77938 arch1162 engn4536/engn6536 acx5903 comp151101 phl245 cse12 comp9312 stat3016/6016 phas0038 comp2140 6qqmb312 xjco3011 rest0005 ematm0051 5qqmn219 lubs5062m eee8155 cege0100 eap033 artd1109 mat246 etc3430 ecmm462 mis102 inft6800 ddes9903 comp6521 comp9517 comp3331/9331 comp4337 comp6008 comp9414 bu.231.790.81 man00150m csb352h math1041 eengm4100 isys1002 08 6057cem mktg3504 mthm036 mtrx1701 mth3241 eeee3086 cmp-7038b cmp-7000a ints4010 econ2151 infs5710 fins5516 fin3309 fins5510 gsoe9340 math2007 math2036 soee5010 mark3088 infs3605 elec9714 comp2271 ma214 comp2211 infs3604 600426 sit254 acct3091 bbt405 msin0116 com107/com113 mark5826 sit120 comp9021 eco2101 eeen40700 cs253 ece3114 ecmm447 chns3000 math377 itd102 comp9444 comp(2041|9044) econ0060 econ7230 mgt001371 ecs-323 cs6250 mgdi60012 mdia2012 comm221001 comm5000 ma1008 engl642 econ241 com333 math367 mis201 nbs-7041x meek16104 econ2003 comm1190 mbas902 comp-1027 dpst1091 comp7315 eppd1033 m06 ee3025 msci231 bb113/bbs1063 fc709 comp3425 comp9417 econ42915 cb9101 math1102e chme0017 fc307 mkt60104 5522usst litr1-uc6201.200 ee1102 cosc2803 math39512 omp9727 int2067/int5051 bsb151 mgt253 fc021 babs2202 mis2002s phya21 18-213 cege0012 mdia1002 math38032 mech5125 07 cisc102 mgx3110 cs240 11175 fin3020s eco3420 ictten622 comp9727 cpt111 de114102d mgm320h5s bafi1019 math21112 efim20036 mn-3503 fins5568 110.807 bcpm000028 info6030 bma0092 bcpm0054 math20212 ce335 cs365 cenv6141 ftec5580 math2010 ec3450 comm1170 ecmt1010 csci-ua.0480-003 econ12-200 ib3960 ectb60h3f cs247—assignment tk3163 ics3u ib3j80 comp20008 comp9334 eppd1063 acct2343 cct109 isys1055/3412 math350-real math2014 eec180 stat141b econ2101 msinm014/msing014/msing014b fit2004 comp643 bu1002 cm2030
联系我们
EMail: 99515681@qq.com
QQ: 99515681
留学生作业帮-留学生的知心伴侣!
工作时间:08:00-21:00
python代写
微信客服:codinghelp
站长地图