Methods for generating hard instances for robust optimization problems
This is a start of the HIRO package that will be extended to include many different underlying integer programming problems. The structure of this package is as follows:
HIRO
base class containing methods for generating hard instances for robust optimisationHIROsolution
base class to facilitate the transfer of solutions from derived classes to the base class functions
These two classes comprise the HIRO library. This library is used in the examples for creating difficult instances for different combinatorial optimisation problems. However, the library is not limited to combinatorial optimisation problems and can be used to generate hard robust optimisation instances for general mixed integer programs.
There are currently two examples in the HIRO package
This consists of the following files:
main.cpp
the main file for executing the HIRO package to generate hard instances for the selection problem.selection.cpp
andselection.h
containing the derived class for the selection problem. The pure virtual function ofsolve_ip
has been implemented in this derived class
This consists of the following files:
main.cpp
the main file for executing the HIRO package to generate hard instances for the TSP.tsp.cpp
andtsp.h
containing the derived class for the TSP. The pure virtual functions ofsolve_ip
has been implemented in this derived class
The easiest way to extend the package is to write a new example. It is possible to copy one of the current examples and then modify it to suit your needs. The basic steps for creating a new example are (we will call this new example Elephant):
- copy the xyz example directory and rename it elephant. The files and directories needed are the
src
directory, including its contents, and theMakefile
. - change to the
elephant
directory. - replace all occurences of
xyz
toelephant
(preserving case) in theMakefile
and all of the source files insrc
. - in the
src
directory, renamexyz.h
andxyz.cpp
toelephant.h
andelephant.cpp
respectively. - implement the
solve_ip()
so that the integer program for Elephant can be solved within the HIRO package. - open
main.cpp
, modify this file to input the necessary parameters for the Elephant integer program.
You need to first build the HIRO library and then build your example. Follow these steps
- in the
hiro
base directory, open theMakefile
and modify the path to CPLEX and CONCERT. - call
make
- change to your example directory, such as
selection
. - modify the path to CPLEX and CONCERT
- call
make
The Makefile doesn't create the obj
and bin
directories. So for the first installation, you will need to create these directories.
- The
generate_hard_LDR
andgenerate_hard_midpoint
functions in theHIRO
base class have been disabled. This is because the formulations are problem specific. I suspect that these should be made virtual functions, or modify them so that a virtual function could be called to add the appropriate constraints.