next up previous contents Back to SYMPHONY Home Page
Next: Advanced Development Up: Developing a New Application Previous: Unix

Microsoft Windows

Developing a simple branch and bound solver can be done quite quickly using the template provided in the SYMPHONY$\backslash$Template$\backslash$ 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. First open the workspace SYMPHONY-3.0.1$\backslash$WIN32$\backslash$template.dsw and modify for your local setup, as described in Section 8.2. Note that you will also have to delete the file vrp.lib from the symphony project and add template.lib. It should build right away, although it won't run until modified as described below.

  2. First, decide what run-time parameters you might need and what data has to be stored to describe your instance. Edit the file Template$\backslash$include$\backslash$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$\backslash$Master$\backslash$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$\backslash$LP$\backslash$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 build again and you have a working branch and bound solver! Next you can work on filling in more advanced functions and adding cutting planes. See the documentation for more information on this.


next up previous contents
Next: Advanced Development Up: Developing a New Application Previous: Unix
Ted Ralphs
2003-05-29