next up previous contents Back to SYMPHONY Home Page
Next: Microsoft Windows Up: Developing a New Application Previous: Developing a New Application

Unix

Developing a simple branch and bound solver can be done quite quickly using the template provided in the SYMPHONY/Template/ 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 simple steps to get up and running.

  1. Set the variable USERROOT in the makefile to be $(ROOT)/Template and type "make". Assuming that the make file has already been modified appropriately, as described in Section 8.2, this should successfully compile the template code, although it will not run until it is modified as described below.

  2. Decide what run-time parameters you might need and what data has to be stored to describe your instance. Edit the file Template/include/user.h, adding the appropriate fields to the user_parameter and user_problem structure to store the relevant values.

  3. Now edit the file Template/Master/master_user.c. If you choose to have all variables in the base set (a good starting point), the only function that really needs to be filled out initially is user_io(), where you can read in the instance data. Note that the name of the file to read the instance data from can be specified on the command line using the "-F" switch. Also, check out the function user_set_base().

  4. Edit the file Template/LP/lp_user.c. The function user_create_lp() must be filled out. This is the most important function, as it sets up the initial LP relaxation in each search node.

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 up previous contents
Next: Microsoft Windows Up: Developing a New Application Previous: Developing a New Application
Ted Ralphs
2003-05-29