Initializing help system before first use

Contract - Semi-continuous variables, predefined constraint functions, combine BCL with Xpress Optimizer


Type: Contract allocation
Rating: 3
Description: A small MIP-problem example demonstrating how to define semi-continuous variables, use predefined constraint functions and retrieve the problem status.
Two modified versions (documented in the 'BCL Reference Manual') show how to (1) combine BCL problem input with problem solving in Xpress Optimizer and (2) use an Xpress Optimizer solution callback with a BCL model.
File(s): xbcontr1.cs


xbcontr1.cs
/********************************************************
  Xpress-BCL C# Example Problems
  ==============================

  file xbcontr1.cs
  ````````````````
  Contract allocation example.
  Combining BCL problem input with problem solving 
  in Xpress-Optimizer.

  (c) 2008 Fair Isaac Corporation
      authors: S.Heipcke, D.Brett.
********************************************************/

using System;
using System.Text;
using System.IO;
using BCL;


namespace Examples
{
    public class TestContract
    {
        const int District = 6;               /* Number of districts */
        const int Contract = 10;               /* Number of contracts */

        /**** DATA ****/
        int[] OUTPUT = {50, 40, 10, 20, 70, 50};    /* Max. output per district */
        int[] COST   = {50, 20, 25, 30, 45, 40};    /* Cost per district */
        int[] VOLUME   = {20, 10, 30, 15, 20, 30, 10, 50, 10, 20};  
        /* Volume of contracts */

        /***********************************************************************/

        public static void Main()
        {
            XPRB.init();
            int d,c;
            XPRBprob p = new XPRBprob("Contract");          /* Initialize a new problem in BCL */
            XPRBexpr l1,l2,lobj;
            XPRBvar[,] x = new XPRBvar[District,Contract];   /* Variables indicating whether a project 
            is chosen */
            XPRBvar[,] y = new XPRBvar[District,Contract];   /* Quantities allocated to contractors */

            TestContract TestInstance = new TestContract();

            /**** VARIABLES ****/
            for(d=0;d= TestInstance.VOLUME[c]);  /* "Size": cover the required volume */
                p.newCtr("Min", l2 >= 2 ); 	 /* "Min": at least 2 districts per contract */
            }

            for(d=0;d0)
                        System.Console.Write(y[d, c].getName() + ":" + y[d, c].getSol() + ", ");
                    System.Console.WriteLine();
                }
            } 
            return;
        } 
    }
}