You are a software developer at RescueBots Inc., a robotics company that develops technology to aid in life-threatening situations. The company has recently built a feet of autonomous robots that can assist in rescue operations during natural disasters, such as bushfires and foods. RescueBots’ robots can navigate unknown terrain and successfully locate and rescue people in need of help. For these robots to be truly autonomous and effective, however, they must be capable of making diffcult decisions. The RescueBots robots must be programmed to prioritize and determine the order of rescue operations, a feat with ethical and moral implications.
In this project, you will create the decision engine for RescueBots, i.e., a program designed to explore different scenarios and make critical decisions about whom to save. You will finally audit your decision-making algorithm through simulations, and allow users of your program to judge the outcomes themselves.
All assessment items (assignments, test and final project) must be your own, individual, original work.
Any code that is submitted for assessment will be automatically compared against other students’ code and other code sources using sophisticated similarity checking software.
Cases of potential copying or submitting code that is not your own may lead to a formal academic misconduct hearing and prosecution.
Potential penalties can include getting zero for the project, failing the subject, and even expulsion from the university in extreme cases.
For further information, please see the university’s Academic Integrity website or ask your teaching team.
Pre-amble: Object Oriented Design
In this final project, you will need to follow best practices of Object-Oriented Programming as taught and discussed throughout the semester.
When creating packages and classes, carefully consider which members (classes, instance variables or methods) should go where, and ensure you are properly using polymorphism, inheritance, and encapsulation in your code.
One class has been provided to you in the starter code (RescueBot.java), which must be used as your program’s entry point. You will need to add additional classes and possibly a package so as to make your code more modular.
This project requires a significant amount of time so make sure you plan accordingly! Time management is of the essence when developing software. Start early, don’t leave it to the last week to fire up your IDE!
Program Launch with Flags
We will use command-line options or so-called �ags to initialize the execution of RescueBot.
Therefore, you need to add a few more options as possible command-line arguments.
Hence, your program is run as follows:
$ java RescueBot [arguments]
Make sure your program provides a help documentation to tell users how to correctly call and execute your program. The help is a printout on the console telling users about each option that your program supports.
The following program calls should invoke the help:
$ java RescueBot –help
$ java RescueBot -h
The command-line output following the invocation of the help should look like this:
RescueBot – COMP90041 – Final Project
Usage: java RescueBot [arguments]
-s or –scenarios Optional: path to scenario file
-h or –help Optional: Print Help (this message) and exit
-l or –log Optional: path to data log file
The help should be displayed when the –help or -h flag is set or if the –scenarios or –log flag is set without an argument (i.e., no path is provided). The flag –scenario or -s tells your program about the path and filename of the file that contains predefined scenarios. The flag –log or -l indicates the path and filename where scenarios and user judgements should be saved to. More about that later.
Multiple flags can be used and their order is interchangeable, for example:
$ java RescueBot -s scenarios.csv -l logfile.log
is equivalent to$ java RescueBot -l logfile.log -s scenarios.csv
The help should always be displayed when your program is invoked with an invalid set of arguments.
The Class RescueBot.java
This class provided in the code skeleton holds the main method and manages your program execution. It needs to take care of the program parameters as described above.
This class also houses the decide method, which implements the decision-making algorithm.
Your task is to implement the public static method decide(Scenario scenario), which returns an object of the type Location, which will be specified later. Your code must choose a location that contains a group of characters that will be saved for the given scenario.
To make the decision, your algorithm needs to consider the attributes of the characters involved as well as the situation. You can take any of the characters’ characteristics (age, body type, profession,etc.) into account when making your decision, but you must base your decision on at least 5 characteristics–from the scenario itself (e.g., whether the characters have illegally trespassed) or from the characters’ attributes. Note that there is no right or wrong in how you design your algorithm.
Execution is what matters here so make sure your code meets the technical specifications. But you may want to think about the consequences of your algorithmic design choices.