diff --git a/model-files/RunModel.bat b/model-files/RunModel.bat index 78e32fb77..e2033167e 100644 --- a/model-files/RunModel.bat +++ b/model-files/RunModel.bat @@ -10,6 +10,7 @@ :: ::~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + :: ------------------------------------------------------------------------------------------------------ :: :: Step 1: Set the necessary path variables @@ -158,12 +159,6 @@ copy INPUT\logsums logsums\ python CTRAMP\scripts\preprocess\RuntimeConfiguration.py if ERRORLEVEL 1 goto done -:: For the "Per-Mile Tolling on Congested Freeways" in the Draft Blueprint -if NOT %PROJECT%==DBP (set UseTollDist=No) -if %PROJECT%==DBP ( - if %UseTollDist%==Yes (python CTRAMP\scripts\preprocess\updateUECsToUseTollDist.py) -) - :: Set the prices in the roadway network (convert csv to dbf first) python CTRAMP\scripts\preprocess\csvToDbf.py hwy\tolls.csv hwy\tolls.dbf IF ERRORLEVEL 1 goto done @@ -385,6 +380,9 @@ del *.prn del *.script.* del *.script +:: run QA/QC for PBA50 +call Run_QAQC + :: Success target and message :success ECHO FINISHED SUCCESSFULLY! diff --git a/model-files/SetUpModel_PBA50.bat b/model-files/SetUpModel_PBA50.bat new file mode 100644 index 000000000..c546f5178 --- /dev/null +++ b/model-files/SetUpModel_PBA50.bat @@ -0,0 +1,243 @@ +:: ------------------------------------------------------------------------------------------------------ +:: +:: Step 1: Specify file locations +:: +:: ------------------------------------------------------------------------------------------------------ + +:: set the location of the model run folder on M; this is where the input and output directories will be copied to +set M_DIR=M:\Application\Model One\RTP2021\Blueprint\2050_TM152_DBP_PlusCrossing_07 + +:: Should strategies be included? AddStrategies=Yes for Project runs; AddStrategies=No for NoProject runs. +set AddStrategies=Yes + +:: set the location of the Travel Model Release +set GITHUB_DIR=\\tsclient\X\travel-model-one-1.5.2.1 + +:: set the location of the networks (make sure the network version, year and variant are correct) +set INPUT_NETWORK=M:\Application\Model One\RTP2021\Blueprint\INPUT_DEVELOPMENT\Networks\BlueprintNetworks_15\net_2050_Blueprint Plus Crossing + +:: set the location of the populationsim and land use inputs (make sure the land use version and year are correct) +set INPUT_POPLU=M:\Application\Model One\RTP2021\Blueprint\INPUT_DEVELOPMENT\PopSyn_n_LandUse\POPLU_v170_01\2050 +set UrbanSimScenario=s23 + +:: set the location of the "input development" directory where other inputs are stored +set INPUT_DEVELOPMENT_DIR=M:\Application\Model One\RTP2021\Blueprint\INPUT_DEVELOPMENT + +:: set the location of the previous run (where warmstart inputs will be copied) +:: the INPUT folder of the previous run will also be used as the base for the compareinputs log +set PREV_RUN_DIR=M:\Application\Model One\RTP2021\Blueprint\2050_TM152_DBP_PlusCrossing_06 + +:: set the name and location of the properties file +:: often the properties file is on master during the active application phase +set PARAMS=\\tsclient\X\travel-model-one-master\config\params_PBA50_Blueprint2050.properties + +:: set the location of the overrides directory (for Blueprint strategies) +set BP_OVERRIDE_DIR=\\tsclient\M\Application\Model One\RTP2021\Blueprint\travel-model-overrides + +:: ------------------------------------------------------------------------------------------------------ +:: +:: Step 2: Set up folder structure and copy CTRAMP +:: +:: ------------------------------------------------------------------------------------------------------ + +SET computer_prefix=%computername:~0,4% + +:: copy over CTRAMP +mkdir CTRAMP\model +mkdir CTRAMP\runtime +mkdir CTRAMP\scripts +mkdir CTRAMP\scripts\metrics +c:\windows\system32\Robocopy.exe /E "%GITHUB_DIR%\model-files\model" CTRAMP\model +c:\windows\system32\Robocopy.exe /E "%GITHUB_DIR%\model-files\runtime" CTRAMP\runtime +c:\windows\system32\Robocopy.exe /E "%GITHUB_DIR%\model-files\scripts" CTRAMP\scripts +c:\windows\system32\Robocopy.exe /E "%GITHUB_DIR%\utilities\RTP\metrics" CTRAMP\scripts\metrics +copy /Y "%GITHUB_DIR%\utilities\monitoring\notify_slack.py" CTRAMP\scripts +copy /Y "%GITHUB_DIR%\model-files\RunIteration.bat" CTRAMP +copy /Y "%GITHUB_DIR%\model-files\RunModel.bat" . +copy /Y "%GITHUB_DIR%\model-files\RunLogsums.bat" . +copy /Y "%GITHUB_DIR%\model-files\RunCoreSummaries.bat" . +copy /Y "%GITHUB_DIR%\utilities\RTP\RunMetrics.bat" . +copy /Y "%GITHUB_DIR%\utilities\RTP\RunScenarioMetrics.bat" . +copy /Y "%GITHUB_DIR%\utilities\RTP\ExtractKeyFiles.bat" . +::copy /Y "%GITHUB_DIR%\utilities\check-setupmodel\Check_SetupModelLog.py" . + +if "%COMPUTER_PREFIX%" == "WIN-" (copy "%GITHUB_DIR%\utilities\monitoring\notify_slack.py" "CTRAMP\scripts\notify_slack.py") +if "%COMPUTER_PREFIX%" == "WIN-" set HOST_IP_ADDRESS=10.0.0.59 + +:: ------------------------------------------------------------------------------------------------------ +:: +:: Step 3: copy over input from INPUT_DEVELOPMENT or the previous run +:: (or sometimes a special location for the properties file) +:: +:: ------------------------------------------------------------------------------------------------------ + +:: networks +c:\windows\system32\Robocopy.exe /E "%INPUT_NETWORK%\hwy" INPUT\hwy +c:\windows\system32\Robocopy.exe /E "%INPUT_NETWORK%\trn" INPUT\trn + +:: popsyn and land use +c:\windows\system32\Robocopy.exe /E "%INPUT_POPLU%\popsyn" INPUT\popsyn +c:\windows\system32\Robocopy.exe /E "%INPUT_POPLU%\landuse" INPUT\landuse + +:: nonres +c:\windows\system32\Robocopy.exe /E "%INPUT_DEVELOPMENT_DIR%\nonres\nonres_00" INPUT\nonres + +:: logsums and metrics +c:\windows\system32\Robocopy.exe /E "%INPUT_DEVELOPMENT_DIR%\logsums_dummies" INPUT\logsums +c:\windows\system32\Robocopy.exe /E "%INPUT_DEVELOPMENT_DIR%\metrics" INPUT\metrics + +:: warmstart (copy from the previous run) +mkdir INPUT\warmstart\main +mkdir INPUT\warmstart\nonres +copy /Y "%PREV_RUN_DIR%\OUTPUT\main\*.tpp" INPUT\warmstart\main +copy /Y "%PREV_RUN_DIR%\OUTPUT\nonres\*.tpp" INPUT\warmstart\nonres +del INPUT\warmstart\nonres\ixDaily2015.tpp +del INPUT\warmstart\nonres\ixDailyx4.tpp + +:: the properties file +copy /Y "%PARAMS%" INPUT\params.properties + +:: ------------------------------------------------------------------------------------------------------ +:: +:: Step 4: Overrides for Blueprint Strategies +:: +:: ------------------------------------------------------------------------------------------------------ +if %AddStrategies%==No goto DoneAddingStrategies +:: ------ +:: Blueprint Regional Transit Fare Policy +:: ------ +:: Same as PPA project 6100_TransitFare_Integration +copy /Y "%BP_OVERRIDE_DIR%\Regional_Transit_Fare_Policy\TransitSkims.job" CTRAMP\scripts\skims + +:: means-based fare discount -- 50% off for Q1 -- are config in the parmas.properties file (see step 1) + +:: ------ +:: Blueprint Vision Zero +:: ------ +:: Start year (freeways): 2030 +:: Start year (local streets): 2025 + +:: Figure out the model year +set MODEL_DIR=%CD% +set PROJECT_DIR=%~p0 +set PROJECT_DIR2=%PROJECT_DIR:~0,-1% +:: get the base dir only +for %%f in (%PROJECT_DIR2%) do set myfolder=%%~nxf +:: the first four characters are model year +set MODEL_YEAR=%myfolder:~0,4% + +set /a MODEL_YEAR_NUM=%MODEL_YEAR% 2>nul + +if %MODEL_YEAR_NUM%==2025 (copy /Y "%BP_OVERRIDE_DIR%\Vision_Zero\SpeedCapacity_1hour_2025.block" "CTRAMP\scripts\block\SpeedCapacity_1hour.block") +if %MODEL_YEAR_NUM% GEQ 2030 (copy /Y "%BP_OVERRIDE_DIR%\Vision_Zero\SpeedCapacity_1hour_2030to2050.block" "CTRAMP\scripts\block\SpeedCapacity_1hour.block") + +:: ------ +:: Blueprint Per-Mile Tolling on Congested Freeways +:: ------ +:: no override needed, as we confirmed that all ODs have free paths +:: see asana task: https://app.asana.com/0/572982923864207/1174201042245385 + +:: toll rate discount -- 50% discount for Q1 and Q2 -- are specified in the properties file (see step 1) + +:: ------ +:: Complete Streets +:: ------ +:: https://app.asana.com/0/403262763383022/1160600926245407 +:: implemented as an UEC override for now; pass the bike constant via params when there is time +copy /Y "%BP_OVERRIDE_DIR%\Complete_Streets_Network\ModeChoice_%MODEL_YEAR_NUM%.xls" CTRAMP\model\ModeChoice.xls +copy /Y "%BP_OVERRIDE_DIR%\Complete_Streets_Network\TripModeChoice_%MODEL_YEAR_NUM%.xls" CTRAMP\model\TripModeChoice.xls + +:DoneAddingStrategies + +:: ------------------------------------------------------------------------------------------------------ +:: +:: Step 5: Patches to Travel Model Release +:: +:: ------------------------------------------------------------------------------------------------------ +:: in case the TM release is behind, this is where we copy the most up-to-date scripts from master +set GITHUB_MASTER=\\tsclient\X\travel-model-one-master + +:: runmodel is behind +:: because I took out the lines related to UseTollDist +copy /Y "%GITHUB_MASTER%\model-files\RunModel.bat" . + +:: some minor updates to trips.rdata for the tnc electrification calculator +copy /y "%GITHUB_MASTER%\model-files\scripts\core_summaries\CoreSummaries.R" CTRAMP\scripts\core_summaries\ + +:: some minor updates to ExtractKeyFiles +copy /Y "%GITHUB_MASTER%\utilities\RTP\ExtractKeyFiles.bat" . + +:: added AV share =30% to auto_ownership UECs +copy /y "%GITHUB_MASTER%\model-files\model\AutoOwnership.xls" CTRAMP\model\AutoOwnership.xls + +:: add run_qaqc.bat +copy /Y "%GITHUB_MASTER%\utilities\RTP\QAQC\Run_QAQC.bat" . + +:: add a process to check setupmodel +copy /Y "%GITHUB_MASTER%\utilities\check-setupmodel\Check_SetupModelLog.py" . + +:: ------------------------------------------------------------------------------------------------------ +:: +:: Step 6: copy information back to the M drive for run management +:: +:: ------------------------------------------------------------------------------------------------------ + +:: copy the INPUT folder back to M for record keeping + +echo %date% +SET mm=%date:~4,2% +SET dd=%date:~7,2% +SET yy=%date:~12,2% +echo %time% +SET hh=%time:~0,2% +SET min=%time:~3,2% +SET ss=%time:~6,2% + +if exist "%M_DIR%\INPUT" ( + :: do not overwrite existing INPUT folders on M + c:\windows\system32\Robocopy.exe /E "INPUT" "%M_DIR%\INPUT_%mm%%dd%%yy%_%hh%%min%%ss%" +) else ( + c:\windows\system32\Robocopy.exe /E "INPUT" "%M_DIR%\INPUT" +) + +Set dir1="%M_DIR%\INPUT" +Set dir2="%PREV_RUN_DIR%\INPUT" +robocopy.exe %dir1% %dir2% /e /l /ns /njs /ndl /fp /log:"%M_DIR%\CompareInputs.txt" + +::---------------------------------------------- +:: add folder name to the command prompt window +::---------------------------------------------- +set MODEL_DIR=%CD% +set PROJECT_DIR=%~p0 +set PROJECT_DIR2=%PROJECT_DIR:~0,-1% +:: get the base dir only +for %%f in (%PROJECT_DIR2%) do set myfolder=%%~nxf + +title %myfolder% + + +:: copy this batch file itself to M +set CopyOfSetupModel="SetUpModel_" %myfolder%".txt" +copy SetUpModel.bat "%M_DIR%\%CopyOfSetupModel%" + +::----------------------------------------------------------------------- +:: create a shortcut of the project directory using a temporary VBScript +::----------------------------------------------------------------------- + +set TEMP_SCRIPT="%CD%\temp_script_to_create_shortcut.vbs" +set PROJECT_DIR=%~p0 +set ALPHABET=%computername:~7,1% + +echo Set oWS = WScript.CreateObject("WScript.Shell") >> %TEMP_SCRIPT% +echo sLinkFile = "%M_DIR%/model_run_on_%computername%.lnk" >> %TEMP_SCRIPT% +echo Set oLink = oWS.CreateShortcut(sLinkFile) >> %TEMP_SCRIPT% +echo oLink.TargetPath = "M:" >> %TEMP_SCRIPT% +echo oLink.TargetPath = "\\%computername%\%PROJECT_DIR%" >> %TEMP_SCRIPT% + +echo oLink.Save >> %TEMP_SCRIPT% + +::C:\Windows\SysWOW64\cscript.exe /nologo %TEMP_SCRIPT% +C:\Windows\SysWOW64\cscript.exe %TEMP_SCRIPT% +del %TEMP_SCRIPT% + +:end \ No newline at end of file diff --git a/model-files/model/AutoOwnership.xls b/model-files/model/AutoOwnership.xls index dd0ef8214..30298bca0 100644 Binary files a/model-files/model/AutoOwnership.xls and b/model-files/model/AutoOwnership.xls differ diff --git a/model-files/scripts/core_summaries/CoreSummaries.R b/model-files/scripts/core_summaries/CoreSummaries.R index d31af8adc..4cc95a3e1 100644 --- a/model-files/scripts/core_summaries/CoreSummaries.R +++ b/model-files/scripts/core_summaries/CoreSummaries.R @@ -410,7 +410,7 @@ add_distance <- function(this_timeperiod, input_trips_or_tours) { (distance_mode == 6) * s3Toll + (distance_mode == 7) * walk + (distance_mode == 8) * bike + - (distance_mode >= 9) * da ) + (distance_mode >= 9) * pmin(da, daToll)) relevant <- relevant %>% @@ -595,7 +595,7 @@ add_active <- function(this_timeperiod, input_trips_or_tours) { indiv_trips <- read.table(file=file.path(MAIN_DIR, paste0("indivTripData_",ITER,".csv")), header=TRUE, sep=",") indiv_trips <- select(indiv_trips, hh_id, person_id, tour_id, orig_taz, dest_taz, - trip_mode, tour_purpose, orig_purpose, dest_purpose, depart_hour, stop_id, tour_category) %>% + trip_mode, tour_purpose, orig_purpose, dest_purpose, depart_hour, stop_id, tour_category, avAvailable, sampleRate) %>% mutate(tour_id = paste0("i",substr(tour_category,1,2),tour_id)) ## Data Reads: Joint Trips and recode a few variables @@ -604,7 +604,7 @@ indiv_trips <- select(indiv_trips, hh_id, person_id, tour_id, orig_taz, dest joint_trips <- tbl_df(read.table(file=file.path(MAIN_DIR, paste0("jointTripData_",ITER,".csv")), header=TRUE, sep=",")) joint_trips <- select(joint_trips, hh_id, tour_id, orig_taz, dest_taz, trip_mode, - num_participants, tour_purpose, orig_purpose, dest_purpose, depart_hour, stop_id, tour_category) %>% + num_participants, tour_purpose, orig_purpose, dest_purpose, depart_hour, stop_id, tour_category, avAvailable, sampleRate) %>% mutate(tour_id = paste0("j",substr(tour_category,1,2),tour_id)) print(paste("Read",prettyNum(nrow(joint_trips),big.mark=","), @@ -715,7 +715,7 @@ if (JUST_MES=="1") { joint_person_trips <- inner_join(joint_trips, joint_tour_persons, by=c("hh_id", "tour_id")) # select out person_num and the person table columns joint_person_trips <- select(joint_person_trips, hh_id, person_id, tour_id, orig_taz, dest_taz, trip_mode, - num_participants, tour_purpose, orig_purpose, dest_purpose, depart_hour, stop_id) + num_participants, tour_purpose, orig_purpose, dest_purpose, depart_hour, stop_id, avAvailable, sampleRate) # cleanup remove(joint_tours,joint_trips,joint_tour_persons) diff --git a/utilities/RTP/ExtractKeyFiles.bat b/utilities/RTP/ExtractKeyFiles.bat index d4f6fb718..affd69b39 100644 --- a/utilities/RTP/ExtractKeyFiles.bat +++ b/utilities/RTP/ExtractKeyFiles.bat @@ -59,8 +59,10 @@ copy main\tripsEV.tpp extractor\main copy main\ShadowPricing_7.csv extractor\main mkdir extractor\nonres -copy nonres\ixDaily2015.tpp extractor\nonres -copy nonres\ixDailyx4.tpp extractor\nonres +copy nonres\ixDaily2015.tpp extractor\nonres +copy nonres\ixDailyx4.tpp extractor\nonres +copy nonres\tripsIX*.tpp extractor\nonres +copy nonres\tripsTrk*.tpp extractor\nonres :: copy skims\hwyskmEA.tpp extractor\emfac\hwyskmEA.tpp :: copy skims\hwyskmAM.tpp extractor\emfac\hwyskmAM.tpp @@ -105,6 +107,11 @@ copy logsums\person_workDCLogsum.csv extractor\logsums copy logsums\mandatoryAccessibilities.csv extractor\logsums copy logsums\nonMandatoryAccessibilities.csv extractor\logsums +mkdir extractor\logsums\ForUrbanSim +copy logsums\mandatoryAccessibilities.csv extractor\logsums\ForUrbanSim\mandatoryAccessibilities_%model_year%_%UrbanSimScenario%.csv +copy logsums\nonMandatoryAccessibilities.csv extractor\logsums\ForUrbanSim\nonMandatoryAccessibilities_%model_year%_%UrbanSimScenario%.csv +copy core_summaries\AccessibilityMarkets.csv extractor\logsums\ForUrbanSim\AccessibilityMarkets_%model_year%_%UrbanSimScenario%.csv + :: Core summaries mkdir extractor\core_summaries copy core_summaries\*.* extractor\core_summaries @@ -123,4 +130,4 @@ if exist metrics\ITHIM ( echo ExtractKeyFiles into extractor for PBAU Complete echo ENDED EXTRACTOR RUN %DATE% %TIME% >> logs\feedback.rpt -:done \ No newline at end of file +:done diff --git a/utilities/RTP/QAQC/Car_ownership_AVHV.r b/utilities/RTP/QAQC/Car_ownership_AVHV.r new file mode 100644 index 000000000..cacda5ba6 --- /dev/null +++ b/utilities/RTP/QAQC/Car_ownership_AVHV.r @@ -0,0 +1,42 @@ +######################################################################################## +# AVs vs HVs ownership summary +######################################################################################## +library(dplyr) + +# Remove all files from the workspace +rm(list = ls()) + +# Read the household data file +Hhld_df <-read.csv(file="householdData_3.csv", header=TRUE, sep=",") + +M_DIR <- Sys.getenv("M_DIR") +M_DIR <- gsub("\\\\","/",M_DIR) # switch slashes around + + +Out_file <-file.path(M_DIR, "OUTPUT", "QAQC", "carown_summary.csv") + +Hhld_df$carown <- paste(Hhld_df$humanVehicles, "HV-", Hhld_df$autonomousVehicles, "AV", sep="") + + +Hhld_df <- Hhld_df %>% + mutate(carown_labels = recode(carown, + "0HV-0AV" = "Alt01 0 car", + "1HV-0AV" = "Alt02 1 car - 1HV", + "0HV-1AV" = "Alt03 1 car - 1AV", + "2HV-0AV" = "Alt04 2 cars - 2HVs", + "0HV-2AV" = "Alt05 2 cars - 2AVs", + "1HV-1AV" = "Alt06 2 cars - 1HV1AV", + "3HV-0AV" = "Alt07 3 cars - 3HVs", + "0HV-3AV" = "Alt08 3 cars - 3AVs", + "2HV-1AV" = "Alt09 3 cars - 2HVs1AV", + "1HV-2AV" = "Alt10 3 cars - 1HV2AVs", + "4HV-0AV" = "Alt11 4 cars - 4HVs")) + + +carown_summary <- Hhld_df %>% + group_by(carown_labels) %>% + summarise(nhhld = n()) + + +# write out the results +write.table(carown_summary, file=(Out_file), sep = ",", row.names=FALSE, col.names=TRUE) diff --git a/utilities/RTP/QAQC/Car_ownership_summary.xlsx b/utilities/RTP/QAQC/Car_ownership_summary.xlsx new file mode 100644 index 000000000..dde8a1bbf Binary files /dev/null and b/utilities/RTP/QAQC/Car_ownership_summary.xlsx differ diff --git a/utilities/RTP/QAQC/MaxSpeeds.py b/utilities/RTP/QAQC/MaxSpeeds.py new file mode 100644 index 000000000..46c64d3da --- /dev/null +++ b/utilities/RTP/QAQC/MaxSpeeds.py @@ -0,0 +1,55 @@ +# Script that calculates maximum congested speeds from avgload5period.csv + +import os +#from dbfread import DBF +import csv +#import copy +import pandas as pd + +import os.path +from os import path + + +# Reads avgload5period.csv +# To do: Check the location of the file and verify it can read it +Cspd_df = pd.read_csv("../extractor/avgload5period.csv", sep=",") + +# Strip whitespace from column headers +Cspd_df.columns = Cspd_df.columns.str.strip() + +# select only columns of interest +Cspd_df = Cspd_df[['cspdEA','cspdAM','cspdMD','cspdPM','cspdEV']] +AMspd_df = Cspd_df[['cspdAM']] + +print(Cspd_df) +print (AMspd_df) + +# Calculate maximum congested speeds for each time period +MaxCSpd = Cspd_df.max() +MaxAMSpd = AMspd_df['cspdAM'].max() + +# Take this out on final version +print MaxCSpd +print MaxAMSpd + +# Output: File with the congested speeds by time period +# To Do: Take out dtype line. Also check the location where to write the file +s = open("Max Speeds.txt","w+") +s.write("\nMaximum Congested speeds for run :\n\n%s" %MaxCSpd) +s.close() + +# ----------------------- +# output AM maximum speed to the QAQC file +# ----------------------- +# constructing DataFrame from a dictionary +MaxSpeed_df = pd.DataFrame({"Max_AM_Speed":[MaxAMSpd]}) + +output_filename = "PBA50_QAQC.csv" +print output_filename +#Test the else +if path.exists(output_filename): + QAQC_df = pd.read_csv(os.path.join(os.getcwd(), "PBA50_QAQC.csv"), index_col=False, sep=",") + QAQC_df = pd.merge(QAQC_df, MaxSpeed_df, left_index=True, right_index=True) + QAQC_df.to_csv(output_filename, header=True, index=False) +else: + MaxSpeed_df.to_csv(output_filename, header=True, index=False) \ No newline at end of file diff --git a/utilities/RTP/QAQC/Mode_share.twb b/utilities/RTP/QAQC/Mode_share.twb new file mode 100644 index 000000000..e9a672995 --- /dev/null +++ b/utilities/RTP/QAQC/Mode_share.twb @@ -0,0 +1,1383 @@ + + + + + + <_.fcp.MarkAnimation.true...MarkAnimation /> + <_.fcp.ObjectModelEncapsulateLegacy.true...ObjectModelEncapsulateLegacy /> + <_.fcp.ObjectModelTableType.true...ObjectModelTableType /> + <_.fcp.SchemaViewerObjectModel.true...SchemaViewerObjectModel /> + + + + + + + + + + + + + + + + <_.fcp.ObjectModelEncapsulateLegacy.false...relation connection='textscan.1qniclh0aso8ni1h40ogb19fvwsi' name='PerTripTravelTime.csv' table='[PerTripTravelTime#csv]' type='table'> + + + + + + + + + + + + <_.fcp.ObjectModelEncapsulateLegacy.true...relation connection='textscan.1qniclh0aso8ni1h40ogb19fvwsi' name='PerTripTravelTime.csv' table='[PerTripTravelTime#csv]' type='table'> + + + + + + + + + + + + + + + 0 + [PerTripTravelTime.csv] + + Count + true + + "UTF-8" + "en_US" + "," + "true" + "en_US" + "" + + + + incQ + 20 + [incQ] + [PerTripTravelTime.csv] + incQ + 0 + integer + Sum + true + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[PerTripTravelTime.csv_673FDF9405A44F238B33E88B5852365F] + + + incQ_label + 129 + [incQ_label] + [PerTripTravelTime.csv] + incQ_label + 1 + string + Count + 1 + 1073741823 + true + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[PerTripTravelTime.csv_673FDF9405A44F238B33E88B5852365F] + + + trip_mode + 20 + [trip_mode] + [PerTripTravelTime.csv] + trip_mode + 2 + integer + Sum + true + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[PerTripTravelTime.csv_673FDF9405A44F238B33E88B5852365F] + + + tour_purpose + 129 + [tour_purpose] + [PerTripTravelTime.csv] + tour_purpose + 3 + string + Count + 1 + 1073741823 + true + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[PerTripTravelTime.csv_673FDF9405A44F238B33E88B5852365F] + + + freq + 20 + [freq] + [PerTripTravelTime.csv] + freq + 4 + integer + Sum + true + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[PerTripTravelTime.csv_673FDF9405A44F238B33E88B5852365F] + + + num_participants + 20 + [num_participants] + [PerTripTravelTime.csv] + num_participants + 5 + integer + Sum + true + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[PerTripTravelTime.csv_673FDF9405A44F238B33E88B5852365F] + + + trvlTime + 5 + [trvlTime] + [PerTripTravelTime.csv] + trvlTime + 6 + real + Sum + true + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[PerTripTravelTime.csv_673FDF9405A44F238B33E88B5852365F] + + + time_fail + 20 + [time_fail] + [PerTripTravelTime.csv] + time_fail + 7 + integer + Sum + true + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[PerTripTravelTime.csv_673FDF9405A44F238B33E88B5852365F] + + + + + + + + <_.fcp.ObjectModelTableType.true...column caption='PerTripTravelTime.csv' datatype='table' name='[__tableau_internal_object_id__].[PerTripTravelTime.csv_673FDF9405A44F238B33E88B5852365F]' role='measure' type='quantitative' /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-graph> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ([federated.0hbp4c10i24vuj1am41z11wndbsr].[none:trip_mode:ok] / [federated.0hbp4c10i24vuj1am41z11wndbsr].[none:Calculation_1803691713120124928:nk]) + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + ([federated.0hbp4c10i24vuj1am41z11wndbsr].[none:trip_mode:ok] / [federated.0hbp4c10i24vuj1am41z11wndbsr].[none:Calculation_1803691713120124928:nk]) + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + [federated.0hbp4c10i24vuj1am41z11wndbsr].[none:Calculation_1803691713120124928:nk] + [federated.0hbp4c10i24vuj1am41z11wndbsr].[none:trip_mode:ok] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [federated.0hbp4c10i24vuj1am41z11wndbsr].[none:Calculation_1803691713120124928:nk] + [federated.0hbp4c10i24vuj1am41z11wndbsr].[none:trip_mode:ok] + + + + + + + + + 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 + + +
diff --git a/utilities/RTP/QAQC/Report_TelecommuteLevel.py b/utilities/RTP/QAQC/Report_TelecommuteLevel.py new file mode 100644 index 000000000..5fc2cfe10 --- /dev/null +++ b/utilities/RTP/QAQC/Report_TelecommuteLevel.py @@ -0,0 +1,65 @@ + +# This script reads cdapResults, filters person type 1, does 1- M/(1-0.142). Output a single value. + + +import pandas as pd + +import os.path +from os import path + +# ----------------------- +# read inputs +# ----------------------- +# read in cdap results +cdapResults_df = pd.read_csv(os.path.join(os.getcwd(), "main", "cdapResults.csv"), index_col=False, sep=",") + +# ----------------------- +# data processing +# ----------------------- +# select full-time workers +ftworkers_df = cdapResults_df.loc[cdapResults_df['PersonType'] == 1] +# count number of rows +total_ftworkers = len(ftworkers_df.index) +# print "total ft workers = " + str(total_ftworkers) + +# select full time workers with the Mandatory pattern +ftworkersM_df = ftworkers_df.loc[ftworkers_df['ActivityString'] == 'M'] +# count number of rows +total_ftworkersM = len(ftworkersM_df.index) +# print "total ft workers with the Mandatory pattern = " + str(total_ftworkersM) + +# calculate the percentage of full-time workers making a mandatory tour, P(going to work) +P_GoingToWork = float(total_ftworkersM) / float(total_ftworkers) +print "percent of ft workers making a mandatory tour = " + str(P_GoingToWork) + +# calculate telecommute level +# see discussion on Asana: +# https://app.asana.com/0/403262763383022/1168279114282314 +# P(going to work) = P(not taking personal time or sick time) x P(not teleworking) +# From 2015 ACS 5-year, P(telecommuting) = 5.8% (see M:\Development\Travel Model One\Calibration\Version 1.5.0\04 Coordinated Daily Activity Pattern\WorkedFromHome.xlsx) +# From the IPA run 2015_TM152_IPA_16, P(going to work) =80.8% +# Solving Ffor P(taking personal time or sick time): +# 80.8% = (1-P(taking personal time or sick time) x (1-5.8%) +# P(taking personal time or sick time) = 1 - (80.8% / (1-5.8%)) = 14.2% + +# Assume P(taking personal time or sick time) remains constant over time +# Solving for P(telecommuting) for the model run +# P(telecommuting) = 1 - (P(going to work) / P(not taking personal time or sick time) +P_Telecommuting = 1 - (P_GoingToWork / (1-0.142)) +print "Telecommuting level = " + str(P_Telecommuting) + +# ----------------------- +# output a single number to the QAQC file +# ----------------------- +# constructing DataFrame from a dictionary +Telecommute_df = pd.DataFrame({"Telecommute_Level":[P_Telecommuting]}) + +output_filename = "QAQC/PBA50_QAQC.csv" +#if os.path.exists(os.path.join(os.getcwd(), "QAQC", "PBA50_QAQC.csv"): +# if path.exists("B:/Projects/2035_TM152_DBP_Plus_08_TelecommuteX2/QAQC/PBA50_QAQC.csv"): +if path.exists(output_filename): + QAQC_df = pd.read_csv(os.path.join(os.getcwd(), "QAQC", "PBA50_QAQC.csv"), index_col=False, sep=",") + QAQC_df = pd.merge(QAQC_df, Telecommute_df, left_index=True, right_index=True) + QAQC_df.to_csv(output_filename, header=True, index=False) +else: + Telecommute_df.to_csv(output_filename, header=True, index=False) diff --git a/utilities/RTP/QAQC/Run_QAQC.bat b/utilities/RTP/QAQC/Run_QAQC.bat new file mode 100644 index 000000000..07bfa66d9 --- /dev/null +++ b/utilities/RTP/QAQC/Run_QAQC.bat @@ -0,0 +1,42 @@ +:: --------------------------------- +:: +:: This batch script helps QAQC of +:: - AV share +:: - Telecommute +:: - Bike mode share (for the Complete Street strategy) +:: - Max congested speed (for the Vision Zero strategy) +:: +:: --------------------------------- + +:: this script assumes that M_DIR is already been set in setupmodel.bat +mkdir "%M_DIR%/OUTPUT/QAQC" + +:: --------------------------------- +:: check household-owned AV share +:: --------------------------------- + +set GITHUB_MASTER=\\mainmodel\MainModelShare\travel-model-one-master + +:: assume this script is being run from the directory with the full model run +mkdir QAQC +copy /y "%GITHUB_MASTER%\utilities\RTP\QAQC\Car_ownership_AVHV.r" QAQC\Car_ownership_AVHV.r + +cd main +call "%R_HOME%\bin\x64\Rscript.exe" ..\QAQC\Car_ownership_AVHV.R +cd .. + +copy /y "%GITHUB_MASTER%\utilities\RTP\QAQC\Car_ownership_summary.xlsx" "%M_DIR%\OUTPUT\QAQC\Car_ownership_summary.xlsx" + +:: --------------------------------- +:: check telecommute +:: --------------------------------- +copy /y "%GITHUB_MASTER%\utilities\RTP\QAQC\Report_TelecommuteLevel.py" QAQC\Report_TelecommuteLevel.py +python QAQC/report_telecommutelevel.py +cd QAQC +copy /y "PBA50_QAQC.csv" "%M_DIR%\OUTPUT\QAQC\PBA50_QAQC.csv" +cd .. + +:: --------------------------------- +:: check bike mode share +:: --------------------------------- +copy /y "%GITHUB_MASTER%\utilities\RTP\QAQC\Mode_share.twb" "%M_DIR%\OUTPUT\QAQC\Mode_share.twb" \ No newline at end of file diff --git a/utilities/RTP/QAQC/SDflow.R b/utilities/RTP/QAQC/SDflow.R new file mode 100644 index 000000000..36d62f428 --- /dev/null +++ b/utilities/RTP/QAQC/SDflow.R @@ -0,0 +1,93 @@ +library(tidyverse) + +# ----------- +# user inputs +# ----------- +run_id <- "2050_TM152_DBP_NoProject_08" +#run_id <- "2050_TM152_DBP_PlusCrossing_08" + +# selected_mode <- 11 # Walk to express bus +selected_mode <- 12 # Walk to BART + +# ----------- +# processing the trip file +# ----------- +# remove existing variables from the r environment +rm(list=ls()) + +PBA50Location <- "M:/Application/Model One/RTP2021/Blueprint/" +trip_file <- file.path(PBA50Location, run_id, "OUTPUT/updated_output", "trips.rdata") +load(trip_file) + +taz_superdistrict_county_csv <- "//mainmodel/MainModelShare/travel-model-one-master/utilities/geographies/taz-superdistrict-county.csv" +taz_superdistrict_county_df <- read.csv(file=taz_superdistrict_county_csv, header=TRUE, sep=",") + +superdistrict_county_csv <- "//mainmodel/MainModelShare/travel-model-one-master/utilities/geographies/superdistrict-county.csv" +superdistrict_county_df <- read.csv(file=superdistrict_county_csv, header=TRUE, sep=",") + + +trips <- trips %>% left_join(taz_superdistrict_county_df, + by=c("orig_taz"="ZONE")) + +trips <- trips %>% left_join(taz_superdistrict_county_df, + by=c("dest_taz"="ZONE")) + +trips <- trips %>% + rename( + SD_orig = SD.x, + COUNTY_orig = COUNTY.x, + SD_NAME_orig = SD_NAME.x, + COUNTY_NAME_orig = COUNTY_NAME.x, + SD_NUM_NAME_orig = SD_NUM_NAME.x, + COUNTY_NUM_NAME_orig = COUNTY_NUM_NAME.x, + SD_dest = SD.y, + COUNTY_dest = COUNTY.y, + SD_NAME_dest = SD_NAME.y, + COUNTY_NAME_dest = COUNTY_NAME.y, + SD_NUM_NAME_dest = SD_NUM_NAME.y, + COUNTY_NUM_NAME_dest = COUNTY_NUM_NAME.y + ) + + +od_SDflow_1mode_commute_df <- trips %>% + group_by(SD_orig, SD_dest) %>% + filter(trip_mode==selected_mode) %>% + filter(tour_purpose=="work_low" | tour_purpose=="work_med" | tour_purpose=="work_high" | tour_purpose=="work_very high" | tour_purpose=="university" | tour_purpose=="school_high" | tour_purpose=="school_grade") %>% + summarise(num_trips = sum(num_participants/sampleRate), + avg_dist = mean(distance)) + +# make sure all SDs are listed +od_SDflow_1mode_commute_df <- od_SDflow_1mode_commute_df %>% full_join(superdistrict_county_df, + by=c("SD_orig"="SD")) + +od_SDflow_1mode_commute_df <- od_SDflow_1mode_commute_df %>% full_join(superdistrict_county_df, + by=c("SD_dest"="SD")) + + +# convert to matrix format +od_SDflowMX_1mode_commute_df <- od_SDflow_1mode_commute_df %>% + group_by(SD_orig, SD_dest) %>% + summarise(var=sum(num_trips))%>% + spread(SD_dest, var) +# %>% +# kable() + +od_DistanceMX_1mode_commute_df <- od_SDflow_1mode_commute_df %>% + group_by(SD_orig, SD_dest) %>% + summarise(var=sum(avg_dist))%>% + spread(SD_dest, var) +# %>% +# kable() + +# replace na with 0 +od_SDflowMX_1mode_commute_df[is.na(od_SDflowMX_1mode_commute_df)] = 0 + +OUTFILE1 <- file.path(PBA50Location, run_id, "OUTPUT/updated_output", paste("od_SDflow_commute_mode", selected_mode, ".csv", sep = "")) +write.csv(od_SDflow_1mode_commute_df, OUTFILE1, row.names = FALSE) + +OUTFILE2 <- file.path(PBA50Location, run_id, "OUTPUT/updated_output", paste("od_SDflowMX_commute_mode", selected_mode, ".csv", sep = "")) +write.csv(od_SDflowMX_1mode_commute_df, OUTFILE2, row.names = FALSE) + +OUTFILE3 <- file.path(PBA50Location, run_id, "OUTPUT/updated_output", paste("od_DistanceMX_commute_mode", selected_mode, ".csv", sep = "")) +write.csv(od_DistanceMX_1mode_commute_df, OUTFILE3, row.names = FALSE) + diff --git a/utilities/RTP/QAQC/cdapResults.twb b/utilities/RTP/QAQC/cdapResults.twb new file mode 100644 index 000000000..a7d92117f --- /dev/null +++ b/utilities/RTP/QAQC/cdapResults.twb @@ -0,0 +1,500 @@ + + + + + + <_.fcp.MarkAnimation.true...MarkAnimation /> + <_.fcp.ObjectModelEncapsulateLegacy.true...ObjectModelEncapsulateLegacy /> + <_.fcp.ObjectModelTableType.true...ObjectModelTableType /> + <_.fcp.SchemaViewerObjectModel.true...SchemaViewerObjectModel /> + + + + + + + + + + + + + + + + <_.fcp.ObjectModelEncapsulateLegacy.false...relation connection='textscan.1neehnt0zwvyyj1dr9vwh1a884ij' name='cdapResults.csv' table='[cdapResults#csv]' type='table'> + + + + + + + + + <_.fcp.ObjectModelEncapsulateLegacy.true...relation connection='textscan.1neehnt0zwvyyj1dr9vwh1a884ij' name='cdapResults.csv' table='[cdapResults#csv]' type='table'> + + + + + + + + + + + + 0 + [cdapResults.csv] + + Count + true + + "UTF-8" + "en_US" + "," + "true" + "en_US" + "" + + + + HHID + 20 + [HHID] + [cdapResults.csv] + HHID + 0 + integer + Sum + true + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[Migrated Data] + + + PersonID + 20 + [PersonID] + [cdapResults.csv] + PersonID + 1 + integer + Sum + true + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[Migrated Data] + + + PersonNum + 20 + [PersonNum] + [cdapResults.csv] + PersonNum + 2 + integer + Sum + true + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[Migrated Data] + + + PersonType + 20 + [PersonType] + [cdapResults.csv] + PersonType + 3 + integer + Sum + true + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[Migrated Data] + + + ActivityString + 129 + [ActivityString] + [cdapResults.csv] + ActivityString + 4 + string + Count + 1 + 1073741823 + true + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[Migrated Data] + + + + + + + + + + + + + <_.fcp.ObjectModelTableType.true...column caption='Migrated Data' datatype='table' name='[__tableau_internal_object_id__].[Migrated Data]' role='measure' type='quantitative' /> + + + + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-graph> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [federated.05052ji0ijdq8k1ah1dh50u812vn].[none:PersonType:ok] + + + + + + + + + + + + + + + + + [federated.05052ji0ijdq8k1ah1dh50u812vn].[none:ActivityString:nk] + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + [federated.05052ji0ijdq8k1ah1dh50u812vn].[none:PersonType:ok] + + + + + + + + + + + + + + + + + [federated.05052ji0ijdq8k1ah1dh50u812vn].[none:ActivityString:nk] + +
+ +
+ + + + + + +