LPFMLLPFML is a modeling format in XML structure. It started as its own project but is now part of the bigger COIN-OR OSlL project See https://www.coin-or.org/OS/OSlL.html for the home page of this tool and examples. lp_solve can read/write and solve these LPFML models directly via the xli_LPFML XLI driver (see External Language Interfaces). Reading LPFML modelsIt reads such a model in above format and can solve it then.For example: lp_solve -rxli xli_LPFML parinc.xml This gives as result: Value of objective function: 7667.94172245 Actual values of the variables: x1 539.984 x2 252.011 Optionsnone Generating LPFML modelsThe XLI can also create a LPFML model. For example: lp_solve model.lp -wxli xli_LPFML model.xml This gives as model.xml: <?xml version="1.0" encoding="UTF-8" standalone="no" ?> <mathProgram xmlns="http://FML/lpfml.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://FML/lpfml.xsd lpfml.xsd"> <linearProgramDescription> <source></source> <maxOrMin>max</maxOrMin> <numberRows>4</numberRows> <numberVars>2</numberVars> </linearProgramDescription> <linearProgramData> <rows> <row rowName="cutanddye" rowUB="630"/> <row rowName="sewing" rowUB="600"/> <row rowName="finishing" rowUB="708"/> <row rowName="inspectandpack" rowUB="135"/> </rows> <columns> <col colName="x1" colType="C" objVal="10"/> <col colName="x2" colType="C" objVal="9"/> </columns> <amatrix> <sparseMatrix> <pntANonz> <el>4</el> <el>8</el> </pntANonz> <rowIdx> <el>0</el> <el>1</el> <el>2</el> <el>3</el> <el>0</el> <el>1</el> <el>2</el> <el>3</el> </rowIdx> <nonz> <el>0.7</el> <el>0.5</el> <el>1</el> <el>0.1</el> <el>1</el> <el>0.8333</el> <el>0.6667</el> <el>0.25</el> </nonz> </sparseMatrix> </amatrix> </linearProgramData> </mathProgram> OptionsThe XLI accepts several options: -b64 -comp Compress. -can Canonical. APIUse the lpsolve API call read_XLI to read a model and write_XLI to write a model. See also External Language Interfaces. IDEAlso from within the IDE, this XLI can be used. However, some entries must be added in LpSolveIDE.ini (in the folder where the IDE is installed). In the [XLI] section the following must be added: lib4=xli_LPFML And a new section for the LPFML XLI must also be added: [xli_LPFML] extension=.xml language=XML Then make sure that the xli_LPFML.dll is available for the IDE. This must be done by placing this dll in the IDE folder or in the Windows system32 folder. There are also 2 extra dlls needed: Xalan-C_1_6_0.dll and xerces-c_2_3_0.dll. It is advised to put these in the system32 folder Example modelsparinc.xml<?xml version="1.0" encoding="UTF-8"?> <!-- Sample XML file generated by XMLSPY v5 U (http://www.xmlspy.com)--> <!-- $Id: parinc.xml,v 1.8 2003/08/08 19:50:04 kipp Exp $ --> <mathProgram xmlns="http://FML/lpfml.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://FML/lpfml.xsd http://gsbkip.uchicago.edu/fml/testproblems/lpfml.xsd"> <linearProgramDescription> <source>Par Inc. Problem from Anderson, Sweeny, and Williams</source> <maxOrMin>max</maxOrMin> <objConstant>0.</objConstant> <numberRows>4</numberRows> <numberVars>2</numberVars> </linearProgramDescription> <linearProgramData> <rows> <row rowName="cutanddye" rowUB="630" /> <row rowName="sewing" rowUB="600"/> <row rowName="finishing" rowUB="708"/> <row rowName="inspectandpack" rowUB="135" /> </rows> <columns> <col objVal="10.0" colName="x1" colType="C" colLB="0.0" /> <col objVal="9" colName="x2" colType="C" colLB="0.0" /> </columns> <amatrix> <sparseMatrix> <pntANonz> <el>4</el> <el>8</el> </pntANonz> <rowIdx> <el>0</el> <el>1</el> <el>2</el> <el>3</el> <el>0</el> <el>1</el> <el>2</el> <el>3</el> </rowIdx> <nonz> <el>.7</el> <el>.5</el> <el>1.0</el> <el>0.1</el> <el>1.0</el> <el>0.8333</el> <el>0.6667</el> <el>0.25</el> </nonz> </sparseMatrix> </amatrix> </linearProgramData> <linearProgramSolution> <primalSolution> <sol idx="1" name="x1" val="540"/> <sol idx="2" name="x2" val="252"/> </primalSolution> <dualSolution> <sol idx="1" name="cutanddye" val="4.37457"/> <sol idx="3" name="finishing" val="6.9378"/> </dualSolution> <optimalValue>7667.94</optimalValue> <status statusId="optimalSolutionFound">Put in here any other status message desired</status> <solverMessage>This was solved using LINDO from LINDO Systems, Inc.</solverMessage> </linearProgramSolution> </mathProgram> model.lp/* Objective function */ max: +10 x1 +9 x2; /* Constraints */ cutanddye: +0.7 x1 +x2 <= 630; sewing: +0.5 x1 +0.8333 x2 <= 600; finishing: +x1 +0.6667 x2 <= 708; inspectandpack: +0.1 x1 +0.25 x2 <= 135; |