FICO
FICO Xpress Optimization Examples Repository
FICO Optimization Community FICO Xpress Optimization Home
Back to examples browserPrevious exampleNext example

Workshop - Displaying solution information

Description
A small planning problem. The example composes constraints, LP solves the problem and then prints the variables.

Model version 'xbworkrng' shows how to retrieve ranging information for variables and constraints and how to change the number-printing format.

xbworkscpp.zip[download all files]

Source Files





xbworks.cxx

/********************************************************
  Xpress-BCL C++ Example Problems
  ===============================

  file xbworks.cxx
  ````````````````
  Workshop planning example.

  (c) 2008 Fair Isaac Corporation
      author: S.Heipcke, Jan. 2000, rev. Mar. 2011
********************************************************/

#include <iostream>
#include "xprb_cpp.h"

using namespace std;
using namespace ::dashoptimization;

#define NProd 2                  /* Number of products */
#define NShop 3                  /* Number of workshops */
#define WMAX 40                  /* Maximum weekly working time */ 

/****DATA****/
int DUR[][NShop] =  {{5, 9, 7},  /* Duration of product p on shop s */
                    {10, 2, 5}};
int RES[]   = {10, 8};           /* Man hours per unit */
int PRICE[] = {108, 84};         /* Selling price per unit */

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

int main(int argc, char **argv)
{
 int p,s;
 XPRBexpr l;
 XPRBvar x[NProd];               /* Amount of product p */
 XPRBprob pb("Workshop");        /* Initialize a new problem in BCL */

/****VARIABLES****/
 for(p=0;p<NProd;p++)  x[p] = pb.newVar("x");
 
/****OBJECTIVE****/
 for(p=0;p<NProd;p++)
  l += (PRICE[p]-5*RES[p])*x[p];
 pb.setObj(pb.newCtr("OBJ",l));  /* Set obj. function: maximize benefit */ 
 
/****CONSTRAINTS****/
 for(s=0;s<NShop;s++)            /* Limit on weekly working hours */
 {
  l = 0;
  for(p=0;p<NProd;p++)  l += DUR[p][s]*x[p];
  pb.newCtr("ResMax",l <= WMAX);
 }
 
/****SOLVING + OUTPUT****/  
 pb.setSense(XPRB_MAXIM);
 pb.lpOptimize("");              /* Solve the LP-problem */
 cout << "Objective: " << pb.getObjVal() << endl;  /* Get objective value */
 for(p=0;p<NProd;p++)            /* Print the solution values */
  cout << x[p].getName() << ":" << x[p].getSol() << " ";  
 cout << endl;

 return 0;
} 

Back to examples browserPrevious exampleNext example