Back to SYMPHONY Home Page
Next: Microsoft Windows
Up: Customizing SYMPHONY
Previous: Customizing SYMPHONY
Developing a simple branch and bound solver that can read in instance data in
a custom format is straightforward using the template provided in the
SYMPHONY-4.0/USER/ directory. The simplest approach is to develop a
sequential application, sharing a single user data structure among all the
modules. Using this approach, an application can be developed by filling in
only a few simple functions. Here are four steps to make the most common
custom modifications.
- Decide what run-time parameters you might need and what data has
to be stored to describe your instance. Edit the file
SYMPHONY-4.0/USER/include/user.h, adding the appropriate fields to the
user_parameter and user_problem structure to store the
relevant values.
- Now edit the file SYMPHONY-4.0/USER/Master/user_master.c. Only two
function needs to be filled out initially in order to read in your data files
in a custom format. The function user_io() is where you can read in
the instance data, if it is in something other than MPS format (a TSPLIB file,
for example). Note that the name of the file to read the instance data from
can be specified on the command line using the -F option by
default. Also, you'll probably need to modify the
user_initialize_root_node() function to set up the root node.
- Edit the file USER/LP/user_lp.c. The function
user_create_subproblem() must be filled out. This is the most
important function, as it sets up the initial LP relaxation in each search
node.
- You may also want to add some problem-specific cutting planes by modifying
the user_find_cuts() function.
Now compile by by typing make (assuming that the make
file has already been modified appropriately). That's it! You should now have
a working branch and bound solver. Next you can work on filling in more
advanced functions and adding cutting planes.
Next: Microsoft Windows
Up: Customizing SYMPHONY
Previous: Customizing SYMPHONY
Ted Ralphs
2003-10-16