public class GPMLSegment
extends java.lang.Object
implements java.io.Serializable
Modifier and Type | Field and Description |
---|---|
(package private) float |
capacityDropFactor
Capacity drop factor (for two capacity calculation)
|
(package private) float[] |
DEF
Deficit (for off ramp calculation), veh
|
(package private) float |
denyEntry
Number of vehicles deny entry
|
(package private) float |
ED
Expected demand, vph
|
(package private) int |
inAccDecLength_ft
Acceleration or deceleration lane length in feet, used for on ramp or off
ramp segment only
|
(package private) float |
inCapacityDropPercentage
Capacity drop percentage for two capacity
|
(package private) float[] |
inCrossCAF
Cross weaving capacity adjustment factor
|
(package private) GPMLSegment |
inDownSeg
Adjacent downstream segment
|
(package private) float |
inET
Truck passenger car equivalent ET
|
(package private) int |
inGPCrossWeaveLCMin
Cross-weave length (ft)
|
(package private) java.util.ArrayList<java.lang.Integer> |
inGPCrossWeaveVolume
Cross weave volume
|
(package private) boolean |
inGPHasCrossWeave
Whether GP has cross weave effect, only possible when ML is used
|
(package private) int |
inGPMLType
Segment type (General Purpose or Managed Lane)
|
(package private) int |
inIndex
Segment index, for debug only, not used for calculation
|
(package private) int |
inLaneWidth_ft
Lane width in feet
|
(package private) int |
inLateralClearance_ft
Lateral clearance in feet
|
(package private) int |
inLCFR
Minimum number of lane change from freeway to ramp
|
(package private) int |
inLCRF
Minimum number of lane change from ramp to freeway
|
(package private) int |
inLCRR
Minimum number of lane change from ramp to ramp
|
(package private) java.util.ArrayList<java.lang.Integer> |
inMainlineDemand_veh
Mainline demand in vph, only required for the first segment
|
(package private) java.util.ArrayList<java.lang.Integer> |
inMainlineFFS
Mainline free flow speed, mph
|
(package private) float[] |
inMainlineFHV
Heavy vehicle adjustment factor
|
(package private) java.util.ArrayList<java.lang.Integer> |
inMainlineNumLanes
Mainline number of lanes
|
(package private) java.util.ArrayList<java.lang.Float> |
inMainlineTruckSingle
Mainline truck single percentage
|
(package private) java.util.ArrayList<java.lang.Float> |
inMainlineTruckTrailer
Mainline truck trailer percentage
|
(package private) int |
inMLMaxLC
ML max lane change
|
(package private) int |
inMLMinLC
ML min lane change
|
(package private) int |
inMLSeparation
ML separation type
|
(package private) int |
inNWL
Number of lanes weave, can only be 2 or 3
|
(package private) java.util.ArrayList<java.lang.Integer> |
inOffDemand_veh
Off ramp demand in vph
|
(package private) java.util.ArrayList<java.lang.Integer> |
inOffFFS
Off ramp free flow speed, mph
|
(package private) int |
inOffNumLanes
Off ramp number of lanes
|
(package private) int |
inOffSide
Off ramp side
|
(package private) java.util.ArrayList<java.lang.Float> |
inOFRTruckSingle
Off-ramp truck single percentage
|
(package private) java.util.ArrayList<java.lang.Float> |
inOFRTruckTrailer
Off-ramp truck trailer percentage
|
(package private) java.util.ArrayList<java.lang.Integer> |
inOnDemand_veh
On ramp demand in vph
|
(package private) java.util.ArrayList<java.lang.Integer> |
inOnFFS
On ramp free flow speed, mph
|
(package private) int |
inOnNumLanes
On ramp number of lanes
|
(package private) int |
inOnQueueCapacity
On ramp maximum queue capacity (veh/lane)
|
(package private) java.util.ArrayList<java.lang.Float> |
inONRTruckSingle
On-ramp truck single percentage
|
(package private) java.util.ArrayList<java.lang.Float> |
inONRTruckTrailer
On-ramp truck trailer percentage
|
(package private) int |
inOnSide
On ramp side
|
(package private) GPMLSegment |
inParallelSeg
Parallel GP/ML segment
|
(package private) java.util.ArrayList<java.lang.Integer> |
inRRDemand_veh
Ramp to ramp demand in vph
|
(package private) int |
inSegLength_ft
Segment length in feet
|
(package private) int |
inShort_ft
Short length in feet, used for weave segment only
|
(package private) int |
inTerrain
Terrain type
|
(package private) int |
inType
Segment type (Basic, On Ramp, Off Ramp, Weaving, or Overlapping)
|
(package private) java.util.ArrayList<java.lang.Float> |
inUCAF
User capacity adjustment factor (calibration)
|
(package private) java.util.ArrayList<java.lang.Float> |
inUDAF
User destination demand adjustment factor (calibration)
|
(package private) java.util.ArrayList<java.lang.Float> |
inUDPCAF
User driver population capacity adjustment factor
|
(package private) java.util.ArrayList<java.lang.Float> |
inUDPSAF
User driver population free flow speed adjustment factor
|
(package private) java.util.ArrayList<java.lang.Float> |
inUOAF
User origin demand adjustment factor (calibration)
|
(package private) GPMLSegment |
inUpSeg
Adjacent upstream segment
|
(package private) java.util.ArrayList<java.lang.Float> |
inUSAF
User free flow speed adjustment factor (calibration)
|
(package private) float |
KB
Background density veh/mi
|
(package private) float |
KC
Ideal density at capacity, veh/mi/ln
|
(package private) float |
KJ
Facility-wide jam density, veh/mi/ln
|
(package private) float[] |
KQ
Queue density, veh/mi
|
(package private) float[] |
MF
Mainline flow, veh
|
(package private) float[] |
MI
Mainline input, veh
|
(package private) float[] |
MO1
Mainline output 1 (based capacity and previous MO2 and MO3), veh
|
(package private) float[] |
MO2
Mainline output 2 (based on queue density), veh
|
(package private) float[] |
MO3
Mainline output 3 (based on front clear queue and wave travel speed), veh
|
(package private) static int |
NUM_STEPS
Number of steps per analysis period
|
(package private) float[] |
NV
Number of vehicles, veh
|
(package private) float[] |
OFRF
Off ramp flow, veh
|
(package private) float[] |
ONRF
On ramp flow, veh
|
(package private) float[] |
ONRO
On ramp output, veh
|
(package private) float[] |
ONRQ
On ramp queue, veh
|
(package private) int |
P
Number of periods
|
(package private) float[] |
Q
Mainline queue length in ft (at end of each period)
|
(package private) float[] |
scenAllDensity_veh
Overall density for each segment, in veh/mi/ln
|
(package private) float[] |
scenDenyQ
Deny entry queue (veh)
|
(package private) float[] |
scenIADensity_pc
Influence area density for ONR or OFR segment, in pc/mi/ln
|
(package private) boolean[] |
scenIsFrontClearingQueues
Whether is front clearing queue
|
(package private) float[] |
scenMainlineCapacity_veh
Mainline capacity in vph
|
(package private) float[] |
scenMainlineDemand_veh
Mainline demand in vph, only required for the first segment
|
(package private) float[] |
scenMainlineFFS
Mainline free flow speed, mph
|
(package private) int[] |
scenMainlineNumLanes
Mainline number of lanes
|
(package private) float[] |
scenMainlineVolume_veh
Mainline volume served in vph
|
(package private) float |
scenMaxDC
Max DC for this segment over all periods in one scenario
|
(package private) float |
scenMaxVC
Max VC for this segment over all periods in one scenario
|
(package private) float[] |
scenOccupancyPercent
Occupancy Percent
|
(package private) float[] |
scenOffCapacity_veh
Off ramp capacity in vph
|
(package private) float[] |
scenOffDemand_veh
Off ramp demand in vph
|
(package private) float[] |
scenOffFFS
Off ramp free flow speed, mph
|
(package private) float[] |
scenOffVolume_veh
Off ramp volume served in vph
|
(package private) float[] |
scenOnCapacity_veh
On ramp capacity in vph
|
(package private) float[] |
scenOnDemand_veh
On ramp demand in vph
|
(package private) float[] |
scenOnFFS
On ramp free flow speed, mph
|
(package private) float[] |
scenONRQ_End_veh
On ramp queue (at end of each period), veh
|
(package private) float[] |
scenONRQ_Max_veh
On ramp maximum queue (at end of each period), veh
|
(package private) float[] |
scenOnVolume_veh
On ramp volume served in vph
|
(package private) float[] |
scenRM_veh
Ramp Metering Rate
|
(package private) float[] |
scenRRDemand_veh
Ramp to ramp demand in vph
|
(package private) float[] |
scenSpeed
Overall speed for each segment, mph
|
(package private) int[] |
scenStepsRampMetered
Number of steps in each period that are metered
|
(package private) float[] |
scenTotalRM
Average Metering Rate in a period
|
(package private) int[] |
scenType
Process segment type
|
(package private) float[] |
scenVC
Volume / capacity ratio
|
(package private) float[] |
scenVHD
VHD delay / interval (hrs)
|
(package private) float[] |
scenVHD_M
VHD_M delay / interval (hrs)
|
(package private) float[] |
scenVHD_R
On ramp delay
|
(package private) float[] |
scenVHT
VHT travel / interval (hrs)
|
(package private) float[] |
scenVMTD
VMTD veh-miles / interval
|
(package private) float[] |
scenVMTV
VMTV veh-miles / interval
|
(package private) float[] |
scenVNW
Non-weave volume pc/h
|
(package private) float[] |
scenVW
Weave volume pc/h
|
private Seed |
seed
Seed instance that contains this segment
|
(package private) java.lang.String |
segmentName
Segment Name
|
private static long |
serialVersionUID
serialVersionUID
|
(package private) float[] |
SF
Segment flow, veh
|
(package private) static int |
T
Number of steps per hour = 60 * 4
|
(package private) float[] |
testOnRampDelay
New method for on ramp delay calculation, veh
|
(package private) float |
totalRampDensity
TRD: total ramp density
|
(package private) int[] |
unadjustedSegDemand
Unadjusted segment demand for each period
|
(package private) float[] |
UV
Unserved vehicles, veh
|
(package private) int |
WTT
Wave travel time (in time step)
|
Constructor and Description |
---|
GPMLSegment(Seed seed)
Constructor of GPSegment
|
GPMLSegment(Seed seed,
int inNumPeriod)
Constructor of GPSegment
|
Modifier and Type | Method and Description |
---|---|
private float |
calCAF(int scen,
int atdm,
int period)
Helper Function for Total Capacity Adjustment Factor
|
private void |
calCapacity(int scen,
int atdm)
Calculate adjusted mainline and ramp capacities
|
private void |
calCrossCAF()
Calculate cross weave CAF
|
private void |
calDC()
Calculate demand over capacity ratio
|
private void |
calDemand_Mainline(int scen,
int atdm,
int period)
Calculate mainline demand
|
private void |
calDemand(int scen,
int atdm)
Calculate adjusted demand based on adjustment factors for one scenario
|
(package private) void |
calExtendedResults()
Extend output results based on output speed and density
|
private void |
calFFS(int scen,
int atdm)
Calculate adjusted free flow speed based on adjustment factors for one
scenario
|
private void |
calHeavyVehAdj()
Calculate heavy vehicle adjustment factors
|
private void |
calInitialRM(int scen,
int atdm)
Calculate initial ramp metering for each period, only GP segments use
ramp metering
|
private void |
calLane(int scen,
int atdm)
Calculate adjusted number of lanes based on adjustment factors for one
scenario
|
private float |
calSAF(int scen,
int atdm,
int period)
Helper Function for Total Speed Adjustment Factor
|
private void |
calSpeedAndDensity(int scen,
int atdm,
int period,
int status)
Calculate speed and density using under saturated method
|
private void |
calTotalRampDensity()
Calculate total ramp density
|
private void |
calType()
Calculate processing segment type for one scenario
|
private void |
calUnadjustedEstDemandAndMainlineTruckPCT()
Calculate unadjusted Segment Demand for all segments downstream of the
initial mainline segment as well as calculate the mainline SUT and TT %
based on mainline/ONR/OFR percentages.
|
private void |
calWeaving(int period)
Calculate weaving volume for one scenario one period
|
private void |
checkFrontClearQueue()
Check front clear queue
|
private void |
checkMainlineQueueLength(int period)
Check whether mainline queue length is less or equal to segment length.
|
(package private) void |
checkOverlap(int period)
Check adjacent upstream overlapping segment speed and density
|
(package private) void |
estimateFFS()
Estimate free flow speed if free flow speed is unknown
|
private float |
funcAccessMainlineCapacity(int scen,
int atdm,
int period)
Calculate adjusted mainline capacity (vph) for access segment
|
private float |
funcAdaptiveRampMeteringALINEA(int scen,
int atdm,
int period,
int step)
Adjust ramp metering rate based on traffic conditions and ramp metering
rate in the previous 15-sec step using ALINEA method.
|
private float |
funcAdaptiveRampMeteringFuzzy(int scen,
int atdm,
int period,
int step,
int inOverMode)
Adjust ramp metering rate based on traffic conditions and ramp metering
rate in the previous 15-sec step using fuzzy method.
|
private float |
funcBasicDensity(int status,
int scen,
int atdm,
int period)
Calculate density for basic segment using under saturated method
|
private float |
funcBasicMainlineCapacity(int scen,
int atdm,
int period)
Calculate adjusted mainline capacity (vph) for basic segment
|
private float |
funcBasicSpeed(int status,
int scen,
int atdm,
int period)
Calculate speed for basic segment using under saturated method
|
private float |
funcDEF(int period,
int step,
int inOverMode)
Calculate DEF for a particular step in a particular period in a
particular scenario
|
(package private) java.lang.String |
funcDemandLOS(int period)
Calculate demand based level of service
|
private float |
funcDemandMainline(int period)
Calculate mainline demand
|
(package private) java.lang.String |
funcDensityLOS(int period)
Calculate density based level of service
|
private float |
funcDummyMF(int period,
int step,
int inOverMode,
boolean updateDenyEntry)
Calculate Dummy MF (for first segment only) for a particular step in a
particular period in a particular scenario
|
private float |
funcED(int period)
Calculate ED for a particular period in a particular scenario
|
private float |
funcIdealCapacity(float freeFlowSpeed)
Calculate ideal mainline capacity (pc/h/ln) based on mainline free flow
speed
|
private float |
funcKB(int scen,
int atdm,
int period)
Calculate KB for a particular period in a particular scenario
|
private float |
funcKQ(int period,
int step,
int inOverMode)
Calculate KQ for a particular step in a particular period in a particular
scenario
|
private float |
funcMaxShort(int period)
Calculate maximum short length for weaving segment in ft
|
private float |
funcMaxSpeed(int period)
Calculate maximum speed based on upstream speed
|
private float |
funcMF(int period,
int step)
Calculate MF for a particular step in a particular period in a particular
scenario
|
private float |
funcMI(int period,
int step,
int inOverMode)
Calculate MI for a particular step in a particular period in a particular
scenario
|
private float |
funcMLBasicMainlineCapacity(int period)
Calculate ML basic mainline capacity
|
private float |
funcMO1(int period,
int step)
Calculate MO1 for a particular step in a particular period in a
particular scenario
|
private float |
funcMO2(int period,
int step,
int inOverMode)
Calculate MO2 for a particular step in a particular period in a
particular scenario
|
private float |
funcMO3(int period,
int step,
int inOverMode)
Calculate MO3 for a particular step in a particular period in a
particular scenario
|
private float |
funcNV(int period,
int step,
int inOverMode)
Calculate NV for a particular step in a particular period in a particular
scenario
|
private float |
funcOff_PFD_6Lane(int status,
int period,
float v_F,
float v_R)
Calculate off-ramp P_FD for a 6 Lane (3 each direction) highway for the
undersaturated method.
|
private float |
funcOff_vR(int status,
int period)
Calculate v_R for off ramp segment using under saturated method
|
private float |
funcOffAllDensity(int status,
int period)
Calculate overall density for off ramp segment using under saturated
method
|
private float |
funcOffFlowRateInLanes1and2(int status,
int period)
Calculate off ramp flow rate in lane 1 and 2 using under saturated method
|
private float |
funcOffIADensity(int status,
int period)
Calculate influenced area density for off ramp segment using under
saturated method
|
private float |
funcOffRampCapacity(int period)
Calculate adjusted off ramp capacity (vph)
|
private float |
funcOffRemainFactor(int status,
int period)
Calculate off ramp remain factor using under saturated method
|
private float |
funcOffSpeed(int status,
int period)
Calculate speed for off ramp segment using under saturated method
|
private float |
funcOFRF(int period,
int step)
Calculate OFRF for a particular step in a particular period in a
particular scenario
|
private float |
funcOn_PFM_6Lane(int status,
int period,
float v_F,
float v_R)
Calculate on-ramp P_FM for a 6 Lane (3 each direction) highway for the
undersaturated method.
|
private float |
funcOn_vR(int status,
int period)
Calculate v_R for on ramp segment using under saturated method
|
private float |
funcOnAllDensity(int status,
int period)
Calculate overall density for on ramp segment using under saturated
method
|
private float |
funcOnFlowRateInLanes1and2(int status,
int period)
Calculate on ramp flow rate in lane 1 and 2 using under saturated method
|
private float |
funcOnIADensity(int status,
int period)
Calculate influenced area density for on ramp segment using under
saturated method
|
private float |
funcOnOff_vF(int status,
int period)
Calculate v_F for on ramp or off ramp segment using under saturated
method
|
private float |
funcOnRampCapacity(int period)
Calculate adjusted on ramp capacity (vph)
|
private float |
funcOnRemainFactor(int status,
int period)
Calculate on ramp remain factor using under saturated method
|
private float |
funcONRF(int scen,
int atdm,
int period,
int step,
int inOverMode)
Calculate ONRF for a particular step in a particular period in a
particular scenario
|
private float |
funcONRI(int period,
int step)
Calculate ONRI for a particular step in a particular period in a
particular scenario
|
private float |
funcONRO(int scen,
int atdm,
int period,
int step,
int inOverMode)
Calculate ONRO for a particular step in a particular period in a
particular scenario
|
private float |
funcOnSpeed(int status,
int period)
Calculate speed for on ramp segment using under saturated method
|
private float |
funcOverlapDensity(int status,
int scen,
int atdm,
int period)
Calculate density for overlapping segment
|
private float |
funcOverlapSpeed(int status,
int scen,
int atdm,
int period)
Calculate speed for overlapping segment
|
private float |
funcRampCapacity(int numOfRampLanes,
float rampFreeFlowSpeed)
Calculate ramp capacity (pc/h) based on ramp free flow speed and number
of ramp lanes
|
private float |
funcRampMetering(int scen,
int atdm,
int period,
int step,
int inOverMode)
Calculate ramp metering for a particular step
|
private float |
funcSF(int step)
Calculate SF for a particular step in a particular period in a particular
scenario
|
private float |
funcUV(int step)
Calculate UV for a particular step in a particular period in a particular
scenario
|
private float |
funcWeaveDensity(int status,
int scen,
int atdm,
int period)
Calculate density for weaving segment using under saturated method
|
private float |
funcWeaveMainlineCapacity(int scen,
int atdm,
int period)
Calculate adjusted mainline capacity (vph) for weaving segment
|
private float |
funcWeaveSpeed(int status,
int scen,
int atdm,
int period)
Calculate speed for weaving segment using under saturated method
|
private int |
funcWTT(int period)
Calculate WTT for a particular period in a particular scenario
|
(package private) float |
getScenActualTime(int period)
Getter for scenario ActualTime
|
(package private) float |
getScenAllDensity_pc(int period)
Getter for scenario AllDensity_pc
|
(package private) float |
getScenDC(int period)
Getter for scenario DC
|
(package private) float |
getScenFFSTime(int period)
Getter for scenario FFSTime
|
(package private) float |
getScenMainlineDelay(int period)
Getter for scenario MainlineDelay
|
(package private) float |
getScenTTI(int period)
Getter for scenario TTI
|
private void |
initInput()
Create memory space for input data
|
(package private) void |
initMemory()
Create memory space for scenarios (preprocess, output, and over
saturated)
|
private boolean |
isFrontClearQueue(int period,
int step)
Check whether it is front clear queue for a particular step in a
particular period in a particular scenario
|
private void |
resetMemory()
Reset memory
|
private void |
resetOversaturated(boolean isFirstTime)
Reset over saturated data for a particular scenario
|
private float |
RM_Fuzzy(double DStream_SPD,
double UStream_SPD,
double DStream_density,
double UStream_density,
double ONR_Queue_Length,
RampMeteringFuzzyData data)
Calculate fuzzy logic adaptive ramp metering
|
(package private) void |
runOversaturated(int scen,
int atdm,
int period,
int step,
int inOverMode)
Run analysis for over saturated cases
|
(package private) void |
runUndersaturated(int scen,
int atdm,
int period,
int inOverMode)
Run under saturated analysis for one scenario one period
|
(package private) void |
scenPreprocess(int scen,
int atdm)
Create adjusted input data for one scenario
|
private static final long serialVersionUID
private Seed seed
int inType
int P
java.lang.String segmentName
GPMLSegment inUpSeg
GPMLSegment inDownSeg
GPMLSegment inParallelSeg
int inGPMLType
float inCapacityDropPercentage
int inIndex
int inSegLength_ft
int inAccDecLength_ft
int inShort_ft
int inLaneWidth_ft
int inLateralClearance_ft
int inTerrain
float inET
int inOnSide
int inOffSide
int inNWL
int inLCRF
int inLCFR
int inLCRR
static final int T
static final int NUM_STEPS
java.util.ArrayList<java.lang.Integer> inMainlineNumLanes
int inOnNumLanes
int inOffNumLanes
int inOnQueueCapacity
java.util.ArrayList<java.lang.Integer> inMainlineDemand_veh
java.util.ArrayList<java.lang.Integer> inOnDemand_veh
java.util.ArrayList<java.lang.Integer> inOffDemand_veh
java.util.ArrayList<java.lang.Integer> inRRDemand_veh
java.util.ArrayList<java.lang.Integer> inMainlineFFS
java.util.ArrayList<java.lang.Float> inMainlineTruckSingle
java.util.ArrayList<java.lang.Float> inMainlineTruckTrailer
java.util.ArrayList<java.lang.Float> inONRTruckSingle
java.util.ArrayList<java.lang.Float> inONRTruckTrailer
java.util.ArrayList<java.lang.Float> inOFRTruckSingle
java.util.ArrayList<java.lang.Float> inOFRTruckTrailer
java.util.ArrayList<java.lang.Integer> inOnFFS
java.util.ArrayList<java.lang.Integer> inOffFFS
java.util.ArrayList<java.lang.Float> inUCAF
java.util.ArrayList<java.lang.Float> inUOAF
java.util.ArrayList<java.lang.Float> inUDAF
java.util.ArrayList<java.lang.Float> inUSAF
java.util.ArrayList<java.lang.Float> inUDPCAF
java.util.ArrayList<java.lang.Float> inUDPSAF
int inMLSeparation
int inMLMinLC
int inMLMaxLC
boolean inGPHasCrossWeave
int inGPCrossWeaveLCMin
java.util.ArrayList<java.lang.Integer> inGPCrossWeaveVolume
transient float totalRampDensity
transient int[] unadjustedSegDemand
transient float[] inMainlineFHV
transient float[] inCrossCAF
transient int[] scenMainlineNumLanes
transient int[] scenType
transient float[] scenMainlineDemand_veh
transient float[] scenOnDemand_veh
transient float[] scenOffDemand_veh
transient float[] scenRRDemand_veh
transient float[] scenRM_veh
transient float[] scenVW
transient float[] scenVNW
transient float[] scenMainlineFFS
transient float[] scenOnFFS
transient float[] scenOffFFS
transient float[] scenMainlineCapacity_veh
transient float[] scenOnCapacity_veh
transient float[] scenOffCapacity_veh
transient float[] scenVC
transient float scenMaxDC
transient float scenMaxVC
transient float[] scenSpeed
transient float[] scenAllDensity_veh
transient float[] scenIADensity_pc
transient float[] scenMainlineVolume_veh
transient float[] scenOccupancyPercent
transient float[] scenOnVolume_veh
transient float[] scenOffVolume_veh
transient boolean[] scenIsFrontClearingQueues
transient float[] scenVHD_R
transient float[] scenVMTD
transient float[] scenVMTV
transient float[] scenVHT
transient float[] scenVHD
transient float[] scenVHD_M
transient float[] scenDenyQ
transient int[] scenStepsRampMetered
transient float[] scenTotalRM
transient float ED
transient float KB
transient int WTT
transient float capacityDropFactor
transient float[] ONRF
transient float[] ONRO
transient float[] OFRF
transient float[] ONRQ
transient float[] testOnRampDelay
transient float[] Q
transient float[] scenONRQ_End_veh
transient float[] scenONRQ_Max_veh
transient float[] UV
transient float[] NV
transient float[] KQ
transient float[] DEF
transient float[] MI
transient float[] MO1
transient float[] MO2
transient float[] MO3
transient float[] MF
transient float[] SF
float KJ
float KC
transient float denyEntry
GPMLSegment(Seed seed, int inNumPeriod)
seed
- seed that contains this segmentinNumPeriod
- number of periodsGPMLSegment(Seed seed)
seed
- seed that contains this segmentprivate void initInput()
final void initMemory()
private float calCAF(int scen, int atdm, int period)
scen
- scenario indexatdm
- atdm indexperiod
- period indexprivate float calSAF(int scen, int atdm, int period)
scen
- scenario indexatdm
- atdm indexperiod
- period indexvoid estimateFFS()
void scenPreprocess(int scen, int atdm)
scen
- scenario index (0 is the default scenario, 1 is the first
generated scenario)atdm
- atdm indexprivate void resetMemory()
private void calInitialRM(int scen, int atdm)
scen
- scenario indexatdm
- ATDM set indexprivate void checkFrontClearQueue()
private void calUnadjustedEstDemandAndMainlineTruckPCT()
private void calHeavyVehAdj()
private void calTotalRampDensity()
private void calDemand(int scen, int atdm)
scen
- scenario index (0 is the default scenario, 1 is the first
generated scenario)atdm
- ATDM set index (start form 0)private void calDemand_Mainline(int scen, int atdm, int period)
scen
- scenario index (0 is the default scenario, 1 is the first
generated scenario)atdm
- ATDM set index (start form 0)period
- period index (start form 0)private float funcDemandMainline(int period)
period
- period index (start form 0)private void calWeaving(int period)
period
- analysis period index (0 is the first period)private void calFFS(int scen, int atdm)
scen
- scenario index (0 is the default scenario, 1 is the first
generated scenario)atdm
- ATDM set index (start form 0)private void calLane(int scen, int atdm)
scen
- scenario index (0 is the default scenario, 1 is the first
generated scenario)atdm
- ATDM set index (start form 0)private void calType()
private float funcMaxShort(int period)
period
- analysis period index (0 is the first period)private void calCapacity(int scen, int atdm)
scen
- scenario index (0 is the default scenario, 1 is the first
generated scenario)atdm
- ATDM set index (start form 0)private void calCrossCAF()
private float funcBasicMainlineCapacity(int scen, int atdm, int period)
scen
- scenario index (0 is the default scenario, 1 is the first
generated scenario)atdm
- ATDM set index (start form 0)period
- analysis period index (0 is the first period)private float funcMLBasicMainlineCapacity(int period)
period
- analysis period index (0 is the first period)private float funcOnRampCapacity(int period)
period
- analysis period index (0 is the first period)private float funcOffRampCapacity(int period)
period
- analysis period index (0 is the first period)private float funcWeaveMainlineCapacity(int scen, int atdm, int period)
scen
- scenario index (0 is the default scenario, 1 is the first
generated scenario)atdm
- ATDM set index (start form 0)period
- analysis period index (0 is the first period)private float funcAccessMainlineCapacity(int scen, int atdm, int period)
scen
- scenario index (0 is the default scenario, 1 is the first
generated scenario)atdm
- ATDM set index (start form 0)period
- analysis period index (0 is the first period)private float funcIdealCapacity(float freeFlowSpeed)
freeFlowSpeed
- mainline free flow speed (mph)private float funcRampCapacity(int numOfRampLanes, float rampFreeFlowSpeed)
numOfRampLanes
- number of ramp lanesrampFreeFlowSpeed
- ramp free flow speedprivate void calDC()
void runUndersaturated(int scen, int atdm, int period, int inOverMode)
scen
- scenario index (0 is the default scenario, 1 is the first
generated scenario)atdm
- ATDM set index (start form 0)period
- analysis period index (0 is the first period)private void calSpeedAndDensity(int scen, int atdm, int period, int status)
scen
- scenario index (0 is the default scenario, 1 is the first
generated scenario)atdm
- ATDM set index (start form 0)period
- analysis period index (0 is the first period)status
- whether under saturated, over saturated, or background
density calculationprivate float funcMaxSpeed(int period)
period
- analysis period index (0 is the first period)private float funcBasicSpeed(int status, int scen, int atdm, int period)
status
- whether under saturated, over saturated, or background
density calculationscen
- scenario index (0 is the default scenario, 1 is the first
generated scenario)atdm
- ATDM set index (start form 0)period
- analysis period index (0 is the first period)private float funcBasicDensity(int status, int scen, int atdm, int period)
status
- whether under saturated, over saturated, or background
density calculationscen
- scenario index (0 is the default scenario, 1 is the first
generated scenario)atdm
- ATDM set index (start form 0)period
- analysis period index (0 is the first period)private float funcOnSpeed(int status, int period)
status
- whether under saturated, over saturated, or background
density calculationperiod
- analysis period index (0 is the first period)private float funcOnFlowRateInLanes1and2(int status, int period)
status
- whether under saturated, over saturated, or background
density calculationperiod
- analysis period index (0 is the first period)private float funcOnRemainFactor(int status, int period)
status
- whether under saturated, over saturated, or background
density calculationperiod
- analysis period index (0 is the first period)private float funcOnOff_vF(int status, int period)
status
- whether under saturated, over saturated, or background
density calculationperiod
- analysis period index (0 is the first period)private float funcOn_vR(int status, int period)
status
- whether under saturated, over saturated, or background
density calculationperiod
- analysis period index (0 is the first period)private float funcOn_PFM_6Lane(int status, int period, float v_F, float v_R)
status
- whether undersaturated, oversaturated, or background
density calculationperiod
- analysis period index (0 is the fist period)v_F
- Total flow rate on freeway immediate upstream of teh on-ramp
(merge) influence area (pc/h)v_R
- total on-ramp flow (pc/h)private float funcOnAllDensity(int status, int period)
status
- whether under saturated, over saturated, or background
density calculationperiod
- analysis period index (0 is the first period)private float funcOnIADensity(int status, int period)
status
- whether under saturated, over saturated, or background
density calculationperiod
- analysis period index (0 is the first period)private float funcOffSpeed(int status, int period)
status
- whether under saturated, over saturated, or background
density calculationperiod
- analysis period index (0 is the first period)private float funcOffAllDensity(int status, int period)
status
- whether under saturated, over saturated, or background
density calculationperiod
- analysis period index (0 is the first period)private float funcOffIADensity(int status, int period)
status
- whether under saturated, over saturated, or background
density calculationperiod
- analysis period index (0 is the first period)private float funcOffFlowRateInLanes1and2(int status, int period)
status
- whether under saturated, over saturated, or background
density calculationperiod
- analysis period index (0 is the first period)private float funcOffRemainFactor(int status, int period)
status
- whether under saturated, over saturated, or background
density calculationperiod
- analysis period index (0 is the first period)private float funcOff_vR(int status, int period)
status
- whether under saturated, over saturated, or background
density calculationperiod
- analysis period index (0 is the first period)private float funcOff_PFD_6Lane(int status, int period, float v_F, float v_R)
status
- whether undersaturated, oversaturated, or background
density calculationperiod
- analysis period index (0 is the fist period)v_F
- Total flow rate on freeway immediate upstream of teh on-ramp
(merge) influence area (pc/h)v_R
- total off-ramp flow (pc/h)private float funcWeaveSpeed(int status, int scen, int atdm, int period)
status
- whether under saturated, over saturated, or background
density calculationscen
- scenario index (0 is the default scenario, 1 is the first
generated scenario)atdm
- ATDM set index (start form 0)period
- analysis period index (0 is the first period)private float funcWeaveDensity(int status, int scen, int atdm, int period)
status
- whether under saturated, over saturated, or background
density calculationscen
- scenario index (0 is the default scenario, 1 is the first
generated scenario)atdm
- ATDM set index (start form 0)period
- analysis period index (0 is the first period)private float funcOverlapSpeed(int status, int scen, int atdm, int period)
status
- whether under saturated, over saturated, or background
density calculationscen
- scenario index (0 is the default scenario, 1 is the first
generated scenario)atdm
- ATDM set index (start form 0)period
- analysis period index (0 is the first period)private float funcOverlapDensity(int status, int scen, int atdm, int period)
status
- whether under saturated, over saturated, or background
density calculationscen
- scenario index (0 is the default scenario, 1 is the first
generated scenario)atdm
- ATDM set index (start form 0)period
- analysis period index (0 is the first period)void checkOverlap(int period)
period
- analysis period index (0 is the first period)void runOversaturated(int scen, int atdm, int period, int step, int inOverMode)
scen
- scenario index (0 is the default scenario, 1 is the first
generated scenario)atdm
- ATDM set index (start form 0)period
- analysis period index (0 is the first analysis period)step
- time step index (0 is the first step)private void resetOversaturated(boolean isFirstTime)
isFirstTime
- whether it is first time enter over saturated methodprivate float funcED(int period)
period
- analysis period index (0 is the first analysis period)private float funcKB(int scen, int atdm, int period)
scen
- scenario index (0 is the default scenario, 1 is the first
generated scenario)atdm
- ATDM set index (start form 0)period
- analysis period index (0 is the first analysis period)private int funcWTT(int period)
period
- analysis period index (0 is the first analysis period)private void checkMainlineQueueLength(int period)
period
- analysis period index (0 is the first analysis period)private float funcMI(int period, int step, int inOverMode)
period
- analysis period index (0 is the first analysis period)step
- time step index (0 is the first step)private float funcDummyMF(int period, int step, int inOverMode, boolean updateDenyEntry)
period
- analysis period index (0 is the first analysis period)step
- time step index (0 is the first step)private float funcMO1(int period, int step)
period
- analysis period index (0 is the first analysis period)step
- time step index (0 is the first step)private float funcKQ(int period, int step, int inOverMode)
period
- analysis period index (0 is the first analysis period)step
- time step index (0 is the first step)private float funcMO2(int period, int step, int inOverMode)
period
- analysis period index (0 is the first analysis period)step
- time step index (0 is the first step)private float funcMO3(int period, int step, int inOverMode)
period
- analysis period index (0 is the first analysis period)step
- time step index (0 is the first step)private boolean isFrontClearQueue(int period, int step)
period
- analysis period index (0 is the first analysis period)step
- time step index (0 is the first step)private float funcMF(int period, int step)
period
- analysis period index (0 is the first analysis period)step
- time step index (0 is the first step)private float funcONRI(int period, int step)
period
- analysis period index (0 is the first analysis period)step
- time step index (0 is the first step)private float funcONRO(int scen, int atdm, int period, int step, int inOverMode)
scen
- scenario indexatdm
- ATDM indexperiod
- analysis period index (0 is the first analysis period)step
- time step index (0 is the first step)private float funcONRF(int scen, int atdm, int period, int step, int inOverMode)
scen
- scenario indexatdm
- ATDM indexperiod
- analysis period index (0 is the first analysis period)step
- time step index (0 is the first step)private float funcDEF(int period, int step, int inOverMode)
period
- analysis period index (0 is the first analysis period)step
- time step index (0 is the first step)private float funcOFRF(int period, int step)
period
- analysis period index (0 is the first analysis period)step
- time step index (0 is the first step)private float funcSF(int step)
step
- time step index (0 is the first step)private float funcNV(int period, int step, int inOverMode)
period
- analysis period index (0 is the first analysis period)step
- time step index (0 is the first step)private float funcUV(int step)
step
- time step index (0 is the first step)void calExtendedResults()
java.lang.String funcDensityLOS(int period)
period
- analysis period index (0 is the first period)java.lang.String funcDemandLOS(int period)
period
- analysis period index (0 is the first period)float getScenDC(int period)
period
- analysis period index (0 is the first period)float getScenActualTime(int period)
period
- analysis period index (0 is the first period)float getScenFFSTime(int period)
period
- analysis period index (0 is the first period)float getScenMainlineDelay(int period)
period
- analysis period index (0 is the first period)float getScenTTI(int period)
period
- analysis period index (0 is the first period)float getScenAllDensity_pc(int period)
period
- analysis period index (0 is the first period)private float funcRampMetering(int scen, int atdm, int period, int step, int inOverMode)
scen
- scenario indexatdm
- ATDM indexperiod
- period indexstep
- step indexinOverMode
- number of steps in over saturated modeprivate float funcAdaptiveRampMeteringALINEA(int scen, int atdm, int period, int step)
scen
- scenario indexatdm
- atdm indexperiod
- analysis period indexstep
- step indexprivate float funcAdaptiveRampMeteringFuzzy(int scen, int atdm, int period, int step, int inOverMode)
scen
- scenario indexatdm
- atdm indexperiod
- analysis period indexstep
- step indexinOverMode
- number of steps in over saturated modeprivate float RM_Fuzzy(double DStream_SPD, double UStream_SPD, double DStream_density, double UStream_density, double ONR_Queue_Length, RampMeteringFuzzyData data)
DStream_SPD
- Down stream segment speed (pc/mi/ln)UStream_SPD
- Up stream segment speed (pc/mi/ln)DStream_density
- Down stream segment density (pc/mi/ln)UStream_density
- Up stream segment density (pc/mi/ln)ONR_Queue_Length
- on ramp queue length, equals number of unserved
vehicles in each time stepdata
- parameters used for fuzzy logic adaptive ramp metering
calculation