📄 mininvconstraint.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.Variable.*;
import com.power.pipeengine.*;
import com.power.lpsolver.LPSolve.*;
public class MinInvConstraint extends Constraint
{
static ResourceBundle res = ResourceBundle.getBundle("com.power.pipeengine.Res",
EngineConfig.getInstance().getLocale() );
private static final MinInvConstraint INSTANCE =
new MinInvConstraint();
// Private constructor supresses
// default public constructor
private MinInvConstraint( ) {
setConstraintType( res.getString("MINIMUM_INVENTORY") );
}
public static MinInvConstraint getInstance( ) {
return INSTANCE;
}
private Vector _constraints = new Vector();
public Vector getConstraints() {
return _constraints;
}
public void buildConstraints() {
super.publishMessage();
PIPECalendar cal = DataModel.getInstance().getCalendar();
Inventories inventories = DataModel.getInstance().getInventories();
MinInventories minInvs = DataModel.getInstance().getMinInventories();
MinInvVariable minInvVar = MinInvVariable.getInstance();
InventoryGroups invGroups = DataModel.getInstance().getInventoryGroups();
MinInvSlackVariable minSlackVar = MinInvSlackVariable.getInstance();
int numBuckets = cal.getTotalNumOfBuckets();
Enumeration allMinInvs = minInvs.getMinInventories().elements();
Model mdl = Model.getInstance();
MemoryManager memMgr = MemoryManager.getInstance();
String varName = null;
while( allMinInvs.hasMoreElements() ) {
MinInventory minInv = (MinInventory) allMinInvs.nextElement();
for( int t=1; t<=numBuckets; t++ ) {
if( minInv.getQuantity( t ) == 0 ) continue;
int grpID = minInv.getGroupID();
InventoryGroup invGrp = invGroups.getInventoryGroup( grpID );
Enumeration products = invGrp.getProducts().elements();
Bucket b = cal.getBucket( t );
String constr = new String(); //hold pne constraint
//add a new constraint to LP Solver
int rowNumber = mdl.getNumberOfRows();
com.power.lpsolver.LPSolve.Constraint con =
new com.power.lpsolver.LPSolve.Constraint( "MI" + rowNumber, rowNumber );
while( products.hasMoreElements() ) {
Product p = (Product) products.nextElement();
Facility f = p.getFacility();
constr += " + " + minInvVar.getVariable( f, p, b );
int colIdx = mdl.getModelVariables().addVariable( minInvVar.getVariable( f, p, b ) );
Element elem = memMgr.getElement();
elem.setProperties( colIdx, 1.0 );
con.addElement( elem );
this.addMPSElem( con, colIdx, elem );
}
Double qty = new Double( minInv.getQuantity( t ) );
//slack variable in case constrained
constr += " + " + minSlackVar.getVariable( grpID, b );
int colIdx = mdl.getModelVariables().addVariable( minSlackVar.getVariable( grpID, b ) );
Element elem = memMgr.getElement();
elem.setProperties( colIdx, 1.0 );
con.addElement( elem );
this.addMPSElem( con, colIdx, elem );
//RHS
constr += " = " + qty.toString();
con.setRHS( qty.doubleValue() );
con.setSign( "=" );
mdl.addConstraint( con );
_constraints.addElement( constr );
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -