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.

xbworksjava.zip[download all files]

Source Files
By clicking on a file name, a preview is opened at the bottom of this page.
xbworks.java[download]
xbworkrng.java[download]





xbworks.java

/********************************************************
 * Xpress-BCL Java Example Problems
 * ================================
 *
 * file xbworks.java
 * `````````````````
 * Workshop planning example.
 *
 * (c) 2008-2024 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) {
    try (XPRBprob pb = new XPRBprob("Workshop"); /* Initialize BCL and create a new problem */
        XPRBexprContext context =
            new XPRBexprContext() /* Release XPRBexpr instances at end of block. */) {
      int p, s;
      XPRBexpr l;
      XPRBvar[] x; /* Amount of product p */

      /****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();
    }
  }
}

Back to examples browserPrevious exampleNext example