Initializing help system before first use

GoalObj - Archimedian and pre-emptive goal programming using objective functions


Type: Goal Programming
Rating: 3
Description: A small linear problem with multiple objectives is solved by Archimedian and pre-emptive goal programming. The example uses functions to access information about constraints and shows how to solve a problem repeatedly with a modified objective function.
File(s): xbgoalobj.cs


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

  file xbgoalobj.cs
  `````````````````
  Archimedian and pre-emptive goal programming
  using objective functions.

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

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


namespace Examples
{
    public class TestAdvGoalObj
    {
        const int NGOALS = 3;

        // **** Data ****
        string[] Type = {"perc", "abs", "perc"};
        string[] Sense = {"max", "min", "max"};
        double[] Weight = {100, 1, 0.1};
        double[] Deviation = {10, 4, 20};

        public void modelgo()
        {
            XPRBvar x,y;
            XPRBctr[] goalCtr = new XPRBctr[NGOALS];
            XPRBctr aCtr;
            double[] Target = new double[NGOALS];
            XPRBexpr[] goal = new XPRBexpr[NGOALS];
            XPRBexpr wobj;
            XPRBprob prob;
            XPRSprob xprsp;
            int i,g;

            prob = new XPRBprob("Goal");

            // Adding the variables
            x = prob.newVar("x", BCLconstant.XPRB_PL);
            y = prob.newVar("y", BCLconstant.XPRB_PL);

            // Adding a constraint
            aCtr = prob.newCtr("Limit", 42*x + 13*y <= 100);

            // Goals
            goal[0] = 5*x + 2*y - 20;
            goal[1] = -3*x + 15*y - 48;
            goal[2] = 1.5*x + 21*y - 3.8;
            for(g=0;g=  ":" <=  ")+
                						    Target[g]);
                if(g==NGOALS-1) 
                    System.Console.WriteLine("     " + prob.getObjVal());
                else   
                    System.Console.WriteLine("     " + (goalCtr[g].getAct() - 
                    			     goalCtr[g].getRHS() + Target[g]));
            }

        }

        public static void Main()
        {
           XPRB.init();
           TestAdvGoalObj TestInstance = new TestAdvGoalObj();

            if (XPRB.init() != 0) return;

            TestInstance.modelgo();
            XPRB.finish();

            return;
        }
    }
}