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.
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
The solution is then saved to constr_hw02/solutions/<instance>,
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.
The solutions might be plotted by using py_plotter program.
cd py_plotter and then python3 plotter.py <json configuration>,
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.
To obtain the graphs in the report, use the following sequence of commands:
compute.sh to compute all the algorithms on all instances, 10 times for each instance.py_plotter folder, and runpython3 ./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.