⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lpfilewriter.java

📁 著名IT公司ILog的APS高级排产优化引擎
💻 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 + -