?? lpfilewriter.java
字號:
package com.power.lpsolver.LPSolve;import java.util.*;import java.io.*;import com.power.util.Message.*;public class LPFileWriter{ private static final LPFileWriter INSTANCE = new LPFileWriter(); private BufferedWriter _myFileWriter; //initialized in subclass // Private constructor supresses // default public constructor private LPFileWriter( ) { } public static LPFileWriter getInstance( ) { return INSTANCE; } private StringBuffer content = new StringBuffer( ); /** * Initializes a FileWriter for the report using global input directory and * local file name. */ private void initFileWriter( String outDir ) { try { FileOutputStream w = new FileOutputStream( outDir ); _myFileWriter = new BufferedWriter( new OutputStreamWriter( w ) ); } catch (IOException e ) { System.out.println( e.getMessage() ); } } public void write( String outDir ) { initFileWriter( outDir ); MessageArea.getInstance().addMessage( "Creating MPS model ...\n" ); MessageArea.getInstance().addMessage( "\tTotal number of constraints: " + Model.getInstance().getNumberOfRows() + "\n" ); MessageArea.getInstance().addMessage( "\tTotal number of variables: " + Model.getInstance().getNumberOfColumns() + "\n" ); printObj(); Vector allCons = Model.getInstance().getModelConstraints().getConstraints(); for( int i=0; i<allCons.size(); i++ ) { Constraint con = (Constraint) allCons.elementAt( i ); printCon( con ); if( (i%100) == 0 ) { MessageArea.getInstance().addMessage( "LP file writing: # of cons: " + i + "\n" ); flushFile(); content = new StringBuffer(); } } flushFile( ); try{ _myFileWriter.close(); } catch( Exception e ) { MessageArea.getInstance().addMessage( "Error: " + e.getMessage() + "\n" ); } } private boolean flushFile( ) { try{ int i=0; for( ; i<(content.length()-1024); i+=1024 ) { _myFileWriter.write( content.toString(), i, 1024 ); _myFileWriter.flush(); } _myFileWriter.write( content.toString(), i, content.length() - i ); _myFileWriter.flush(); //_myFileWriter.close(); } catch ( IOException e ) { System.out.println( "Error:" + e.getMessage() ); return false; } return true; } public void printObj() { content.append( "Min" + ": " ); Enumeration allElems = Model.getInstance().getObjectiveFunction().getElements().elements(); ModelVariables mdlVars = Model.getInstance().getModelVariables(); while( allElems.hasMoreElements() ) { Element elem = (Element) allElems.nextElement(); Variable var = mdlVars.getVariable( elem.getColumnNumber() ); if( elem.getCoefficient() > 0 ) { content.append( " + " ); } else { content.append( " - " ); } content.append( Math.abs( elem.getCoefficient() ) ); content.append( var.getMPSName() ); } content.append( ";\n" ); } /** * Prints the constraint in a readable format (LP format). */ public void printCon( Constraint con ) { //content += con.getName() + ": "; Enumeration allElems = con.getElements().elements(); ModelVariables mdlVars = Model.getInstance().getModelVariables(); while( allElems.hasMoreElements() ) { Element elem = (Element) allElems.nextElement(); Variable var = mdlVars.getVariable( elem.getColumnNumber() ); if( elem.getCoefficient() > 0 ) { content.append( " + " ); } else { content.append( " - " ); } content.append( Math.abs( elem.getCoefficient() ) ); content.append( var.getMPSName() ); } content.append( " " + con.getSign() + " " + con.getRHS() + ";\n" ); }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -