| /********************************************************
  Xpress-BCL Java Example Problems
  ================================
  file xbworks.java
  `````````````````
  Workshop planning example.
  (c) 2008 Fair Isaac Corporation
      author: S.Heipcke, Jan. 2000, rev. Mar. 2011
********************************************************/
import com.dashoptimization.*;
public class xbworks
{
 static final int NProd = 2;     /* Number of products */
 static final int NShop = 3;     /* Number of workshops */
 static final int WMAX = 40;     /* Maximum weekly working time */ 
/****DATA****/
 static final int[][] DUR = {{5, 9, 7},
                            {10, 2, 5}};  /* Duration of product p on shop s */
 static final int[] RES   = {10, 8};      /* Man hours per unit */
 static final int[] PRICE = {108, 84};    /* Selling price per unit */
/***********************************************************************/
 public static void main(String[] args)
 {
  int p,s;
  XPRB bcl;
  XPRBexpr l;
  XPRBvar[] x;                   /* Amount of product p */
  XPRBprob pb;
  
  bcl = new XPRB();              /* Initialize BCL */
  pb = bcl.newProb("Workshop");  /* Create a new problem in BCL */
/****VARIABLES****/
  x = new XPRBvar[NProd];
  for(p=0;p<NProd;p++)  x[p] = pb.newVar("x");
 
/****OBJECTIVE****/
  l = new XPRBexpr();
  for(p=0;p<NProd;p++)
   l.add(x[p].mul(PRICE[p]-5*RES[p]));
  pb.setObj(l);                  /* Set obj. function: maximize benefit */ 
 
/****CONSTRAINTS****/
  for(s=0;s<NShop;s++)           /* Limit on weekly working hours */
  {
   l = new XPRBexpr();
   for(p=0;p<NProd;p++)  l.add(x[p].mul(DUR[p][s]));
   pb.newCtr("ResMax", l.lEql(WMAX) );
  }
  
/****SOLVING + OUTPUT****/  
  pb.setSense(XPRB.MAXIM);
  pb.lpOptimize("");             /* Solve the LP-problem */
  System.out.println("Objective: " + pb.getObjVal());  /* Get objective value */
  for(p=0;p<NProd;p++)           /* Print the solution values */
   System.out.print(x[p].getName() + ":" + x[p].getSol() + " ");
  System.out.println();
 }
 
} 
 | 
| /********************************************************
  Xpress-BCL Java Example Problems
  ================================
  file xbworkrng.java
  ```````````````````
  Workshop planning example.
  Test ranges and number printing format.
  (c) 2008 Fair Isaac Corporation
      author: S.Heipcke, 2003, rev. Mar. 2011
********************************************************/
import com.dashoptimization.*;
public class xbworkrng
{
 static final int NProd = 2;     /* Number of products */
 static final int NShop = 3;     /* Number of workshops */
 static final int WMAX = 40;     /* Maximum weekly working time */ 
/****DATA****/
 static final int[][] DUR = {{5, 9, 7},
                            {10, 2, 5}};  /* Duration of product p on shop s */
 static final int[] RES   = {10, 8};      /* Man hours per unit */
 static final int[] PRICE = {108, 84};    /* Selling price per unit */
/***********************************************************************/
 public static void main(String[] args)
 {
  int p,s;
  XPRB bcl;
  XPRBexpr l;
  XPRBvar[] x;                   /* Amount of product p */
  XPRBprob pb;
  XPRBctr[] c;
  
  bcl = new XPRB();              /* Initialize BCL */
  pb = bcl.newProb("Workshop");  /* Create a new problem in BCL */
/****VARIABLES****/
  x = new XPRBvar[NProd];
  for(p=0;p<NProd;p++)  x[p] = pb.newVar("x");
 
/****OBJECTIVE****/
  l = new XPRBexpr();
  for(p=0;p<NProd;p++)
   l.add(x[p].mul(PRICE[p]-5*RES[p]));
  pb.setObj(l);                  /* Set obj. function: maximize benefit */ 
 
/****CONSTRAINTS****/
  c = new XPRBctr[NShop];
  for(s=0;s<NShop;s++)           /* Limit on weekly working hours */
  {
   l = new XPRBexpr();
   for(p=0;p<NProd;p++)  l.add(x[p].mul(DUR[p][s]));
   c[s] = pb.newCtr("ResMax", l.lEql(WMAX) );
  }
  
/****SOLVING + OUTPUT****/  
  pb.setRealFmt("%4.2e");
  for(p=0;p<NProd;p++)
  { x[p].print(); System.out.print(" "); }
  pb.setSense(XPRB.MAXIM);
  pb.lpOptimize("");             /* Solve the LP-problem */
  System.out.println("Objective: " + pb.getObjVal());  /* Get objective value */
  pb.setRealFmt("%g, ");
  for(p=0;p<NProd;p++)           /* Print the solution values */
   x[p].print();
  System.out.println();
  pb.setRealFmt("%8.4f");
  pb.print(); 
                                 /* Row ranges */ 
  System.out.println("Ctr: Lower activity, Upper activity, Unit cost DN, Unit cost UP");
  for(s=0;s<NShop;s++)
   System.out.println(c[s].getName() + ": " + 
          c[s].getRNG(XPRB.LOACT) + ", " +  c[s].getRNG(XPRB.UPACT) + ", " + 
          c[s].getRNG(XPRB.UDN) + ", " +  c[s].getRNG(XPRB.UUP));
                                 /* Column ranges */
  System.out.println("Var: Lower activity, Upper activity, Unit cost DN, Unit cost UP, Lower profit, Upper profit");
  for(p=0;p<NProd;p++)
   System.out.println(x[p].getName() + ": " +
          x[p].getRNG(XPRB.LOACT) + ", " + x[p].getRNG(XPRB.UPACT) + ", " + 
          x[p].getRNG(XPRB.UDN) + ", " +  x[p].getRNG(XPRB.UUP) + ", " + 
          x[p].getRNG(XPRB.LCOST) + ", " +  x[p].getRNG(XPRB.UCOST));
 }
 
} 
 |