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

📄 equipmentcapability.java

📁 今天为网友提供的是JAVA源码
💻 JAVA
字号:
package com.power.pipeengine.DispatchReportMap;/** * <p>Title: PIPE Engine</p> * <p>Description: Global Planning Optimization Engine</p> * <p>Copyright: Copyright (c) 2002</p> * <p>Company: Paraster, Inc.</p> * @author unascribed * @version 1.0 */import com.power.pipeengine.InputData.*;import com.power.pipeengine.DispatchReport.*;import java.util.*;public class EquipmentCapability {    private String equipmentID;    private double[] capInBuckets;    private double[] usedCapInBuckets = new double[DataModel.getInstance().getCalendar().getTotalNumOfBuckets()];    private Vector timeWindows = new Vector();    private int assignedToEmployee = -100;    public EquipmentCapability( String anID ) {        equipmentID = anID;        Calendar cal = Calendar.getInstance();        Date first = PeriodDateMap.getInstance().getFirstBucketDate();        Date last = PeriodDateMap.getInstance().getLastBucketDate();        cal.setTime( first );        cal.set( Calendar.HOUR_OF_DAY, (int) WorkingHours.getInstance().getAMStartTime() );        first = cal.getTime();        cal.setTime( last );        cal.set( Calendar.HOUR_OF_DAY, 23 );        last = cal.getTime();        insertAWindow( first, first );        insertAWindow( last, last );    }    public String getEquipmentID() {        return equipmentID;    }    public int getAssignedEmployee() {      return assignedToEmployee;    }    public void setAssignedEmployee( int anID ) {      assignedToEmployee = anID;    }    public void turnOffBucket( int bucketID ) {        capInBuckets[bucketID-1] = 0;    }    public double mayAssignToSchedule( StartsSchedule aSchedule ) {      if( assignedToEmployee >= 0 ) {        if( aSchedule.getEmployee() != assignedToEmployee ) return -1;      }        int pid = aSchedule.getProcessID();        double requiredHours = aSchedule.getDurationInMinutes() / 60.0;         double capInNextTwoBuckets = capInBuckets[aSchedule.getBucketID()-1];        if( aSchedule.getBucketID() < capInBuckets.length ) {            capInNextTwoBuckets += capInBuckets[aSchedule.getBucketID()];        }        if( usedCapInBuckets[aSchedule.getBucketID()-1] * 60 >            aSchedule.getActualStartTime() ) {            return -1;        }        //if lunch or dinner time, consider exra capacity        double wastedCap = aSchedule.getActualStartTime() / 60.0 -            usedCapInBuckets[aSchedule.getBucketID()-1];        capInNextTwoBuckets -= wastedCap;        if( ( requiredHours <= capInNextTwoBuckets ) ) {            return wastedCap;        }        return -1;    }    public void assignToSchedule( StartsSchedule aSchedule ) {        int pid = aSchedule.getProcessID();        boolean useNextBucket = false;        double requiredHours = aSchedule.getDurationInMinutes() / 60.0;        double wastedCap = aSchedule.getActualStartTime()/60.0 - usedCapInBuckets[aSchedule.getBucketID()-1];        if( wastedCap < 0 ) wastedCap = 0;        if( requiredHours + wastedCap > capInBuckets[aSchedule.getBucketID()-1] ) {            useNextBucket = true;        }        int bucketID = aSchedule.getBucketID();        if( useNextBucket == false ) {            //usedCapInBuckets[aSchedule.getBucketID()-1] += requiredHours;            usedCapInBuckets[aSchedule.getBucketID()-1] = requiredHours + aSchedule.getActualStartTime()/60.0;            capInBuckets[aSchedule.getBucketID()-1] -= ( requiredHours + wastedCap );        } else {            double advancedHours = requiredHours - capInBuckets[aSchedule.getBucketID()-1] + wastedCap;            usedCapInBuckets[aSchedule.getBucketID()-1] += (wastedCap + capInBuckets[aSchedule.getBucketID()-1]);            capInBuckets[aSchedule.getBucketID()-1] = 0;            usedCapInBuckets[aSchedule.getBucketID()] += advancedHours;            capInBuckets[aSchedule.getBucketID()] -= advancedHours;        }        aSchedule.setEquipment( equipmentID );        insertAWindow( aSchedule.getStartTime(), aSchedule.getEndTime() );        assignedToEmployee = aSchedule.getEmployee();    }    public void setCapInBuckets( double[] aDblArray ) {        capInBuckets = aDblArray;    }    public void insertAWindow( Date from, Date to ) {        TimeWindow tw1 = new TimeWindow( from, to );        for( int i=0; i<timeWindows.size(); i++ ) {            TimeWindow tw2 = (TimeWindow) timeWindows.elementAt( i );            if( from.before( tw2.getFromTime() ) ) {                timeWindows.insertElementAt( tw1, i );                return;            }        }        timeWindows.add( tw1 );    }    public boolean ableToInsertWindow( Date from, Date to ) {        for( int i=0; i<timeWindows.size(); i++ ) {            TimeWindow tw1 = (TimeWindow) timeWindows.elementAt( i );            TimeWindow tw2 = null;            if( i+1 < timeWindows.size() ) {                tw2 = (TimeWindow) timeWindows.elementAt( i+1 );            } else {                return false;            }            if( !tw1.getToTime().after( from ) && !tw2.getFromTime().before( to ) ) {                return true;            }        }        return false;    }    public void print() {        System.out.println( "Equipment ID = " + equipmentID );        for(int i=0; i<timeWindows.size(); i++ ) {            TimeWindow tw = (TimeWindow) timeWindows.elementAt( i );            tw.print();        }    }}

⌨️ 快捷键说明

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