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

📄 backordertwovariable.java

📁 著名IT公司ILog的APS高级排产优化引擎
💻 JAVA
字号:
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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -