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

📄 tightcapacityconstraint.java

📁 简介: 今天为网友提供的是JAVA源码
💻 JAVA
字号:
package com.power.pipeengine.Constraint;import java.util.*;import com.power.pipeengine.Entity.*;import com.power.pipeengine.InputData.*;import com.power.pipeengine.LPModel.*;import com.power.pipeengine.Report.*;import com.power.pipeengine.Variable.*;import com.power.pipeengine.*;import com.power.lpsolver.LPSolve.*;import com.power.util.Message.*;/** * * <p>Title: PIPE Engine</p> * <p>Description: Global Planning Optimization Engine</p> * <p>Copyright: Copyright (c) 2002</p> * <p>Company: Paraster, Inc.</p> * @author Wei Tan * @version 1.0 *//** * This class creates capacity constraint (see LP model document for algorithm). * It is a singular class. */public class TightCapacityConstraint extends Constraint{    static ResourceBundle res = ResourceBundle.getBundle("com.power.pipeengine.Res",                                                          EngineConfig.getInstance().getLocale() );    private static final TightCapacityConstraint INSTANCE =                              new TightCapacityConstraint();    /**     * Sole class constructor.     */    private TightCapacityConstraint( ) {        setConstraintType( res.getString("CAPACITY_CONSRTAINT") );    }    public static TightCapacityConstraint getInstance( ) {        return INSTANCE;    }    /**     * Builds all capacity constraints by looping through all resources and all     * buckets.     */    public void buildConstraints() {        super.publishMessage();        DataModel dataModel = DataModel.getInstance();        ResourceUses rscUses = dataModel.getResourceUses();        Enumeration allRscs = dataModel.getResources().getResources().elements();        int numOfBuckets = dataModel.getCalendar().getTotalNumOfBuckets();        PIPECalendar cal = dataModel.getCalendar();        Routes routes = dataModel.getRoutes();        StartsVariable startsVar = StartsVariable.getInstance();        OutsVariable outsVar = OutsVariable.getInstance();        Products products = dataModel.getProducts();        RscSlackVariable rscSlackVar = RscSlackVariable.getInstance();        Model mdl = Model.getInstance();        MemoryManager memMgr = MemoryManager.getInstance();        Enumeration allRoutes = routes.getRoutes().elements();        //loop through all resources        while( allRoutes.hasMoreElements() ) {                Route rte = (Route) allRoutes.nextElement();                Vector rscUsesByRte = rscUses.getResourceUse( rte.getRouteID() );                if( null == rscUsesByRte ) continue;                ResourceUse rscUse = (ResourceUse) rscUsesByRte.elementAt( 0 );                Resource rsc = DataModel.getInstance().getResources().getResource( rscUse.getResourceID(), rte.getFacilityID() );                Facility f = rte.getFacility();                //for all time buckets                for( int t=1; t<=numOfBuckets && t <= 50; t++ ) {                        Bucket b = cal.getBucket( t );                        if( rsc.getFacility().getNumWorkingDaysForBucket( t ) == 0 ) {                            continue;                        }                        //create a new constraint for the LPSolve                        int rowNumber = Model.getInstance().getNumberOfRows();                        com.power.lpsolver.LPSolve.Constraint con =                            new com.power.lpsolver.LPSolve.Constraint(                                      "TC" + rowNumber,                                      rowNumber );                        String sVar = startsVar.getVariable( rte,                                rte.getProduct(),                                b );                        int colIdx = Model.getInstance().getModelVariables().addVariable( sVar );                        Element elem = MemoryManager.getInstance().getElement();                        elem.setProperties( colIdx, 1.0 );                        con.addElement( elem );                        this.addMPSElem( con, colIdx, elem );                        //RHS                      double coeff =7.5;                      coeff *= f.getNumWorkingDaysForBucket( t );                        if( con.getElements().size() > 0 ) {                            double rhs = rte.getNumOfOperators() * rscUse.getUPH() * coeff;                            con.setRHS( rhs );                        }                        con.setSign( "<=" );                        mdl.addConstraint( con );                }        }    }}

⌨️ 快捷键说明

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