This page contains materials for the practice lessons of the Artificial Intelligence 1 (NAIL069) course that is/has been taught during winter term of 2016/2017 at Charles University in Prague, Czech Republic. The course is/was lead by Roman Barták. Labs are/were backed up by Jakub Gemrot (email@example.com) and Otakar Trunda.
Permalink to this page: bit.ly-2016
Newest labs: bit.ly/mff-uk-ai1-labs
Monday’s workshops, 15:40, SU2 (Jakub)
Wednesday’s workshops, 10:40, SW1 (Otakar)
How to pass the practice
We have a credit system here. You can have credits for: homeworks (extra credits for meeting deadlines),writing essays and tournaments. Tournament points are not necessary to pass the practice, credits from homeworks and/or essays are.
You will need to collect 50 points to pass the practice.
Points are tracked within a google spreadsheet; students may ask for the link: firstname.lastname@example.org
If you have problems with >FullHD resolutions on Windows 10, read this tip. You have to create a .manifest file for javaw.exe within your JDK or JRE folder.
Mail me: email@example.com
Subject: AI1 – 2016 – H[homework number] – [homework name]
If you’re submitting AIs, please zip up the whole project folder (except bin/ folder). Note that it helps to rename the extension to obfuscate its mime … if you submitt .zi_ or .zzz my GMail (or yours if you’re using it as well) will not complain about the attachment having executable files.
Note that you always have a chance to submit fixes if I find your solution not good enough 😉
Submission deadline: 30.10.2016 (23:59)
Score extra 8 / 6 / 4 / 2 points!
We will make Mario run through LevelConfig.LEVEL_4_SPIKIES, the best AIs will be awarded with points!
Submission deadline: 10.12.2016 (23:59)
Score extra 12 / 8 / 6 / 4 points!
The best Sokoban AI (solving the toughest level) will win! New levels are going to be introduced into the levels GitHub folder over the time!
Submission deadline: 7.1.2017 (23:59)
Score extra 16 / 12 / 8 / 4 points!
The best Conquest AI (table tournament; all-vs-all) will win!
Lab 07 – 9.1.2017
Encoding Sudoku 9×9 puzzle as SAT problem
- Use Sat4J to check which Sudoku SAT representation is better
Lab 05 and 06 – 28.11.2016 / 5.12.2016
2-player game of Conquest; checks it sources out from Conquest GitHub repo! We’re going to work with yet-another environment, a 2-player board game, which we are going to eventually implement Alpha-Beta Expectiminimax algorithm in!
- Start coding Expectiminimax algorithm for your Conquest agent!
Lab 04 – 14.11.2016 / 21.11.2016
Heuristics applied! We’re going to work with Sokoban game and discuss various heuristics for it as well as performance tips. Checkout Sokoban4J sources from Sokoban4J GitHub repo.
- Programming Homework 04 [10 points]
- Alternative Homework 04 [10 points]
- Written report (in the form of PDF) on Sokoban AI; read Pavel Klavík‘s report and describe in detail three techniques (you choose) from “non-implemented” sections including your analysis how they will affect the search. [10 points]
- You can be credited only for one of these two homeworks.
- Any Sokoban AI submit before 11.12.2016 will be put into the tournament!
Lab 03 – 31.10.2016 / 7.11.2016
Today it’s about informed graph-search for Pac-Man maze, checkout its sources from Pac-Man GitHub repo.
- Homework 03 [10 points]
Lab 02 – 17.10.2016 / 24.10.2016
We are going to implement uninformed graph-search algorithms for Pac-Man maze, checkout its sources from Pac-Man GitHub repo.
- Homework 02 [5 points]
Lab 01 – 3.10.2016 / 10.10.2016
We were playing with Super Mario simulator in Java, checkout its sources from Mario GitHub repo.
- Introduction to environment classification
- Homework 01 [5 points]
- Create AI for Super Mario!
- AI must be reflexive, no “agent state / agent memory” persistence allowed
- If you wish to score extra points, try to prepare your Mario for tough LevelConfig.LEVEL_4_SPIKIES
- Any Mario AI submit before 30.10.2016 will be put into the tournament!
- Create AI for Super Mario!
Java notes (PDF)
- Contains hint how to fight with Eclipse GUI
- The only thing that is not included