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

📄 mpsfilewriter.java

📁 排产系统
💻 JAVA
字号:
package com.power.lpsolver.LPSolve;
import java.util.*;
import java.io.*;
import com.power.util.Message.*;
import com.power.pipe.*;
import com.power.util.urltools.*;
import com.power.util.Message.*;
import com.power.pipeengine.*;

public class MPSFileWriter
{
    static ResourceBundle res = ResourceBundle.getBundle("com.power.lpsolver.LPSolve.Res",
                                                          EngineConfig.getInstance().getLocale() );
   private static final MPSFileWriter INSTANCE =
                              new MPSFileWriter();

   // Private constructor supresses
   // default public constructor
    private MPSFileWriter( ) {
    }

    public static MPSFileWriter getInstance( ) {
        return INSTANCE;
    }

    private StringBuffer content = new StringBuffer();
    private String urlAddr = GlobalConfig.getInstance().getLPServerURL() +
                             "com.power.pipeengine.LP_ReadWriteFile";

	private void writeModelName() {
		content.append( "NAME" );
		content.append( "        " );
		content.append( "PARASTER\n" );
	}

	private void writeRows() {
        MessageArea.getInstance().addMessage( res.getString( "WritingRows" ) + "...\n" );
		content.append( "ROWS\n" );

		Vector cons = Model.getInstance().getModelConstraints().getConstraints();

		for( int i=0; i<cons.size(); i++ ) {
			Constraint con = (Constraint) cons.elementAt( i );
			content.append( con.getMPSRowType() );
			content.append( con.getMPSRowName() + "\n" );
		}

		ObjectiveFunction objFunc = Model.getInstance().getObjectiveFunction();
		content.append( objFunc.getMPSRowType() );
		content.append( objFunc.getMPSRowName() + "\n" );
	}

	private void writeRHS() {
        MessageArea.getInstance().addMessage( res.getString("WritingRHS") + "...\n" );
		content.append( "RHS\n" );

		Vector cons = Model.getInstance().getModelConstraints().getConstraints();

		for( int i=0; i<cons.size(); i++ ) {
			Constraint con = (Constraint) cons.elementAt( i );
			if( con.getRHS() == 0.0 ) continue;

			content.append( "    RHS       " );
			content.append( con.getMPSRowName() );
			content.append( "  " + con.getRHS() + "\n" );
		}

		content.append( "ENDATA" );
	}



	private void writeColumns() {
        MessageArea.getInstance().addMessage( res.getString("WritingColumns") + "...\n" );
		content.append( "COLUMNS\n" );

		Hashtable vars = Model.getInstance().getModelVariables().getVariablesByName();
		Enumeration allVars = vars.elements();

		ObjectiveFunction objFunc = Model.getInstance().getObjectiveFunction();
        int cnt = 0;

		while( allVars.hasMoreElements() ) {
            cnt++;
            if( (cnt%5000) == 0 ) {
                MessageArea.getInstance().addMessage( "\t" + res.getString( "NumberOfVariablesWritten" )+ cnt + "\n" );
            }

			Variable aVar = (Variable) allVars.nextElement();

            Vector cons = aVar.getCons();
            Vector coeffs = aVar.getCoeffs();

            for( int i=0; i<cons.size(); i++ ) {
				content.append( "    " );
				content.append( aVar.getMPSName() );
				content.append( "  " + ((Constraint) cons.elementAt( i )).getMPSRowName() +
                               "  " + ((Element) coeffs.elementAt( i )).getCoefficient() + "\n" );
			}

			Element elem = objFunc.getElementAt( aVar.getVarIdx() );
			if( null == elem ) continue;
			content.append( "    " );
			content.append( aVar.getMPSName() );
			content.append( "  " + objFunc.getMPSRowName() + "  " + elem.getMPSValue() + "\n" );
		}
	}


	public void write( String outDir ) {
        MessageArea.getInstance().addMessage( res.getString( "WritingMPSModel" ) + "...\n" );
        MessageArea.getInstance().addMessage( "\t" + res.getString( "TotalNumberOfConstraints" )+
                Model.getInstance().getNumberOfRows() + "\n" );
        MessageArea.getInstance().addMessage( "\t" + res.getString( "TotalNumberOfVariables" ) +
                Model.getInstance().getNumberOfColumns() + "\n" );
        writeModelName();
        writeRows();
        writeColumns();
        writeRHS();

        /*URLFileWriter.getInstance().deleteFile( urlAddr,
                GlobalConfig.getInstance().getLPSolverWorkDir() + "model.mps",
                "WriteModel" );*/

        //int OneMB = 1024 * 1024;
        //int i=0;
        /*for( i=0; i<(content.length() - OneMB); i+=OneMB ) {
            URLFileWriter.getInstance().write( urlAddr,
            GlobalConfig.getInstance().getLPSolverWorkDir() + "model.mps",
            "WriteModel",
            content.substring( i, i + OneMB ) );
        }

        URLFileWriter.getInstance().write( urlAddr,
                GlobalConfig.getInstance().getLPSolverWorkDir() + "model.mps",
                "WriteModel",
                content.substring( i, content.length() ) );*/

        //URLFileWriter.getInstance().


        URLFileWriter.getInstance().write( urlAddr,
                GlobalConfig.getInstance().getLPSolverWorkDir() + "model.mps",
                "WriteModel",
                content.toString() );

        MessageArea.getInstance().addMessage( res.getString( "FinishedWritingMPSModel" ) + "\n" );

        content = new StringBuffer();

	}

    public void reset() {
        content = new StringBuffer();
    }


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -