backordertwovariable.java

来自「著名IT公司ILog的APS高级排产优化引擎」· Java 代码 · 共 105 行

JAVA
105
字号
package com.power.pipeengine.Variable;

import java.util.*;
import com.power.pipeengine.Entity.*;
import com.power.pipeengine.*;

/**
 *
 * <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
 */

/**
 * BackorderTwoVariable defines the portion of the demand that is fulfilled two
 * buckets later.
 */
public class BackorderTwoVariable
    extends Variable {
  private static final BackorderTwoVariable INSTANCE =
      new BackorderTwoVariable();

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

  public static BackorderTwoVariable getInstance() {
    return INSTANCE;
  }

  private Hashtable _definedVars = new Hashtable();
  private String getDefinedVar(Facility f, Product p, Bucket b) {
    Hashtable prodHash = (Hashtable) _definedVars.get(f.getFacilityIDString());
    if (prodHash == null)
      return null;

    Hashtable bucketHash = (Hashtable) prodHash.get(p.getProductID());
    if (bucketHash == null)
      return null;

    return (String) bucketHash.get(b.getBucketIDString());
  }

  private void addDefinedVar(Facility f, Product p, Bucket b, String varName) {
    Hashtable prodHash = (Hashtable) _definedVars.get(f.getFacilityIDString());
    if (prodHash == null) {
      prodHash = new Hashtable();
      _definedVars.put(f.getFacilityIDString(), prodHash);
    }

    Hashtable bucketHash = (Hashtable) prodHash.get(p.getProductID());
    if (bucketHash == null) {
      bucketHash = new Hashtable();
      prodHash.put(p.getProductID(), bucketHash);
    }

    bucketHash.put(b.getBucketIDString(), varName);
  }

  public String getVariable(Facility f, Product p, Bucket b) {
    String varName = getDefinedVar(f, p, b);
    if (null != varName) {
      return varName;
    }

    String separator = "";
    varName = new String("B2" +
                         "F" + f.getVariableCode() +
                         "P" + p.getVariableCode() +
                         "T" + b.getVariableCode());

    /*varName = new String( "B2" +
           f.getFacilityID() + separator +
           p.getProductID() + separator +
           b.getBucketID() );*/

    addDefinedVar(f, p, b, varName);

    return varName;
  }

  public void setObjElement(String varName, Product p, Bucket b) {
    int dmdPriority = p.getDemandPriority(b) + 1;
    double asp = p.getASP(b.getBucketID());
    if (EngineConfig.getInstance().isMaxOnTimeDelivery()) {
      setObjElement(varName,
                    3000.0 / dmdPriority + p.getASP(b.getBucketID()) +
                    Math.random() * 0.0000001);
    }
    else if (EngineConfig.getInstance().isMaxProfit()) {
      setObjElement(varName,
                    3000.0 / dmdPriority + p.getASP(b.getBucketID()) +
                    Math.random() * 0.0000001);
    }
  }

  public void reset() {
    _definedVars = new Hashtable();
  }

}

⌨️ 快捷键说明

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