📄 shipoutvariable.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 ShipOutVariable
extends Variable {
private static final ShipOutVariable INSTANCE =
new ShipOutVariable();
// Private constructor supresses
// default public constructor
private ShipOutVariable() {
}
public static ShipOutVariable 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("SH" +
"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)) {
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 + -