| |||||||||||||||||||||||
UG - Examples from 'BCL Reference Manual' Description The following examples are discussed in detail in the 'BCL User Guide and Reference Manual':
Source Files By clicking on a file name, a preview is opened at the bottom of this page.
Data Files xbexpl3.java /******************************************************** * Xpress-BCL Java Example Problems * ================================ * * file xbexpl3.java * ````````````````` * Error handling and output redirection. * * (c) 2008-2024 Fair Isaac Corporation * author: S.Heipcke, 2005, rev. Jan. 2012 ********************************************************/ import com.dashoptimization.*; import java.io.*; /* This small, infeasible example shows how all printed messages can be intercepted by the user's program. */ public class xbexpl3 { static XPRB bcl; /***********************************************************************/ public static void modexpl3(XPRBprob prob) throws XPRBerror { XPRBvar[] x; XPRBexpr cobj; int i; x = new XPRBvar[3]; /* Create the variables */ for (i = 0; i < 2; i++) x[i] = prob.newVar("x_" + i, XPRB.UI, 0, 100); /* Create the constraints: C1: 2x0 + 3x1 >= 41 C2: x0 + 2x1 = 13 */ prob.newCtr("C1", x[0].mul(2).add(x[1].mul(3)).gEql(41)); prob.newCtr("C2", x[0].add(x[1].mul(2)).eql(13)); /* Uncomment the following line to cause an error in the model that triggers the error handling: */ // x[2] = prob.newVar("x_2", XPRB.UI, 10, 1); /* Objective: minimize x0+x1 */ cobj = new XPRBexpr(); for (i = 0; i < 2; i++) cobj.add(x[i]); prob.setObj(cobj); /* Select objective function */ prob.setSense(XPRB.MINIM); /* Set objective sense to minimization */ prob.print(); /* Print current problem definition */ prob.lpOptimize(""); /* Solve the LP */ System.out.println( "Problem status: " + prob.getProbStat() + " LP status: " + prob.getLPStat() + " MIP status: " + prob.getMIPStat()); /* This problem is infeasible, that means the following command will fail. It prints a warning if the message level is at least 2 */ System.out.println("Objective: " + prob.getObjVal()); for (i = 0; i < 2; i++) /* Print solution values */ System.out.print(x[i].getName() + ":" + x[i].getSol() + ", "); System.out.println(); } /***********************************************************************/ public static void main(String[] args) { try (XPRB bcl = new XPRB()) { /* Initialize BCL */ bcl.setMsgLevel(2); /* Set the printing flag. Try other values: 0 - no printed output, 2 - print warnings, 3 - all messages */ try (XPRBprob prob = bcl.newProb("Expl3"); /* Create a new problem */ XPRBexprContext context = new XPRBexprContext() /* Release XPRBexpr instance at end of block. */) { FileWriter f = new FileWriter("expl3out.txt"); bcl.setOutputStream(f); /* Redirect all output from BCL to a file */ prob.setOutputStream(); /* Output for this prob. on standard output */ modexpl3(prob); /* Formulate and solve the problem */ prob.setOutputStream(f); /* Redirect problem output to file */ prob.print(); /* Write to the output file */ prob.setOutputStream(); /* Re-establish standard output for prob */ bcl.setOutputStream(); /* Re-establish standard output for BCL */ f.close(); System.err.flush(); } catch (IOException e) { System.err.println(e.getMessage()); System.exit(1); } catch (XPRBerror e) { System.err.println("BCL error " + e.getErrorCode() + ": " + e.getMessage()); System.exit(1); } } catch (XPRBlicenseError e) { System.err.println("BCL error " + e.getErrorCode() + ": " + e.getMessage()); System.exit(1); } } } | |||||||||||||||||||||||
© Copyright 2024 Fair Isaac Corporation. |