The report is located at bohacek_frantisek_report.pdf, it has been generated from report.md Rust has been used to write the library and program for solving constrained problems. Cargo is used for managing the dependencies. # How to run To run the contr, go into the constr_hw02 folder, ie. `cd constr_hw02`, then use `cargo run --release -- srank|nsga|nsga_improved|nsga_constr|nsga_multi problem`, Supported problems are: `g04`, `g05` `g06`, `g08`, `g09`, `g11` and `g24`. So for example: `cargo run --release -- srank g06` # Solutions The solution is then saved to `constr_hw02/solutions/`, csv file with best candidate fitness (only feasible candidates can be saved) and next to it is file with faction of feasible candidates in each iteration. # Plotting The solutions might be plotted by using `py_plotter` program. `cd py_plotter` and then `python3 plotter.py `, The configurations are available in the same folder. For generating the probability of success graphs, `target_proximity_plotter.py` is utilized. It's usage is the same as `plotter.py`, but it uses different json fields. The name of the plotter is same as used for hw01 as the plotting itself is the same. # 'Reproducing' the plots in the report To obtain the graphs in the report, use the following sequence of commands: 1. `compute.sh` to compute all the algorithms on all instances, 10 times for each instance. 2. Generate the plots, go to `py_plotter` folder, and run ``` python3 ./plotter.py config_feasible_g11.json python3 ./plotter.py config_feasible_g06.json python3 ./plotter.py config_feasible_g05.json python3 ./plotter.py config_best_g09.json python3 ./target_proximity_plotter.py config_target_proximity_comprehensive_no_std.json ``` Now all the csv solutions are in `constr_hw02/solutions` and all the plots are in `py_plotter/plots` The graphs won't be 1:1, because randomness is involved and the seeds haven't been captured and aren't configurable.