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

📄 receivingvariable.java

📁 著名IT公司ILog的APS高级排产优化引擎
💻 JAVA
字号:
package com.power.pipeengine.Variable;

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

public class ReceivingVariable
    extends Variable {
  private static final ReceivingVariable INSTANCE =
      new ReceivingVariable();

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

  public static ReceivingVariable getInstance() {
    return INSTANCE;
  }

  public String getVariable(Facility orig, Facility dest, Product p, Bucket b) {
    String var = getDefinedVar(orig, dest, p, b);

    if (null == var) {
      var = new String("RV" +
                       "F" + orig.getVariableCode() +
                       "F" + dest.getVariableCode() +
                       "P" + p.getVariableCode() +
                       "T" + b.getVariableCode());
      addDefinedVar(orig, dest, p, b, var);
    }

    if (p.hasDemand(b) &&
        EngineConfig.getInstance().isMaxProfit()) {
      super.setObjElement(var, -p.getASP(b.getBucketID()));
    }

    return var;
  }

  public Bucket getShippingStartBucket(Shipment s, Bucket b) {
    double shipTime = s.getShippingTime();
    long oneDayInMilSec = 24 * 60 * 60 * 1000;
    long midPointOfBucket = b.getStartDate().getTime() +
        (long) (oneDayInMilSec * b.getNumCalDays() / 2);
    long timeOffset = (long) shipTime * oneDayInMilSec;
    Date shipStartDate = new Date(midPointOfBucket - timeOffset);

    Vector allBuckets = DataModel.getInstance().getCalendar().getBuckets();

    for (int i = 0; i < allBuckets.size(); i++) {
      Bucket bucket = (Bucket) allBuckets.elementAt(i);
      if (bucket.containsDate(shipStartDate)) {
        //System.out.println( "shipping start bucket" );
        //bucket.print();
        return bucket;
      }
    }

    return null;
  }

  private Hashtable _definedVars = new Hashtable();
  private String getDefinedVar(Facility from, Facility to, Product p, Bucket b) {
    Hashtable toHash = (Hashtable) _definedVars.get(from.getVariableCode());
    if (toHash == null)
      return null;

    Hashtable prodHash = (Hashtable) toHash.get(to.getVariableCode());
    if (prodHash == null)
      return null;

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

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

  private void addDefinedVar(Facility from, Facility to, Product p, Bucket b,
                             String varName) {
    Hashtable toHash = (Hashtable) _definedVars.get(from.getVariableCode());
    if (toHash == null) {
      toHash = new Hashtable();
      _definedVars.put(from.getVariableCode(), toHash);
    }

    Hashtable prodHash = (Hashtable) toHash.get(to.getVariableCode());
    if (prodHash == null) {
      prodHash = new Hashtable();
      toHash.put(to.getVariableCode(), prodHash);
    }

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

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

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

}

⌨️ 快捷键说明

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