Skip to content

Contents

Optimization Overview

By default, T3CO uses pymoo to minimize TCO while meeting constraints on required performance metrics (range, acceleration, grade).

Text Only
Objective (minimized):
TCO, PHEV_MINIMIZE_FUEL_USE_OBJECTIVE

Constraints (met):
RANGE, ACCEL, GRADE

In general, all knobs that apply to each powertrain will be active.

A blank in either min or max of the knob will disable that knob. (use value from vehicle input) A blank in eng_eff_imp_curve_sel, aero_drag_imp_curve_sel, and ltwt_imp_curve will turn those off. (set to cda imp and ltwt redux to zeros, and leave fuel converter peak efficiency unchanged)

Text Only
# Decision variables / "knobs":
fs_kwh     (liquid fuel tank or hydrogen tank)
fc_max_kw (engine or fuel cell size kw) 
ess_max_kwh  (battery size kwh)
mc_max_kw (motor size kw)
CdA_perc_imp (aerodynamic drag coefficient)
fc_peak_eff (engine peak efficiency - adjusts the entire engine efficiency curve. Power on x axis, y axis is efficiency)
wt_delta_perc (light weighting percent off of baseline vehicle mass)

BEV: {wt_delta_perc, CdA_perc_imp, ess_max_kwh, mc_max_kw}
HEV: {wt_delta_perc, CdA_perc_imp, fc_peak_eff, ess_max_kwh, mc_max_kw, fc_max_kw, fs_kwh}
CONV: {wt_delta_perc, CdA_perc_imp, fc_peak_eff, fc_max_kw, fs_kwh}
FCEV: {wt_delta_perc, CdA_perc_imp, fc_peak_eff, ess_max_kwh, mc_max_kw, fc_max_kw, fs_kwh}

All applicable constraint targets for each powertrain

Text Only
BEV: RANGE, ACCEL, GRADE, TCO
HEV: ACCEL, GRADE, TCO
CONV: ACCEL, GRADE, TCO
FCEV: RANGE, ACCEL, GRADE, TCO ??? < verify

Optimization from Sweep Module

One way to activate optimization, and the general code flow, is to use sweep.py. The optimization algorithms available are enumerated in the moo module.

An example use, employing both NSGA2 and PatternSearch in an ensemble optimization approach:

Text Only
    python sweep.py  -algorithms "['NSGA2', 'PatternSearch']" -dir_mark "multi-algo-test" -dst_dir C:\Users\users\Documents\testruns\multialgo-test3 -selections "range(0,140)"

Optimization Inputs

example means of specifying targets in scenario file

target_range_mi min_speed_at_6pct_grade_in_5min_mph min_speed_at_1p25pct_grade_in_5min_mph max_time_0_to_60mph_at_gvwr_s max_time_0_to_30mph_at_gvwr_s
750 30 65 80 20
750 30 65 80 20
750 30 65 80 20

example means of specifying improvement cost curves in scenario file

lw_imp_curve_sel eng_eff_imp_curve_sel aero_drag_imp_curve_sel
MDHD_xyz MDHD_large_noprogram_2025 MDHD_abcdef

See: EngineEffImprovementCostCurve.csv

where small medium large engine sizes refers to 6.7 L, <250 kW 11 L 15 L 250-375 kW according to the LD MDHD Benefits Analysis Assumptions FY2021 spreadsheet

L hp kW
class 4,5 all applications 7 200 149
class 6,7 all applications 7 270 201
class 8 urban 11 350 261
class 8 regional & multipurpose 11 or 15 350 or 455 261 or 339
class 7 day cabs 11 350 261
class 8 day and sleeper cabs 15 455 339

In the scenario file: specify the following variables with the appropriate improvement cost curve, with the available options being in: AeroDragImprovementCostCurve

The improvement cost curve files include optimizer knob bounds specified for CdA and engine efficiency (dependent on vehicle type and scenario and year, based on the Technology Manager inputs and Alicia Birky), and lightweighting (allowed to lightweight over full curve).

For the other decision variables / knobs, the scenario file will need to specify reasonable (i.e. physically feasible and sensible) optimizer knob bounds for: knob_min_ess_kwh, knob_min_motor_kw, knob_min_fc_kw, knob_max_ess_kwh, knob_max_motor_kw, knob_max_fc_kw (code will use the appropriate combinations of fc/motor/ess for each powertrain)

example of engine cost curves input, referred to via scenario file selection in eng_eff_imp_curve_sel column

name MDHD_large_noprogram_2020 MDHD_large_noprogram_2025
eng_cost [0,0.35,6,13.25,14.15,30.7,39.8] [0,0.35,7.35,25.65,32.45]
eng_pctpt [0.45,0.49,0.52,0.52,0.53,0.53,0.59] [0.45,0.49,0.53,0.53,0.59]
fc_peak_eff_knob_max 0.481405 0.492
fc_peak_eff_knob_min 0.45 0.45

Drive Cycles for Optimization

design cycle will be a composite of the 3 standard EPA drive cycles

initial/default weights

rural urban transient
86 9 5

These are the EPA weights for Sleeper cabs. From EPA_RIA_Inputs, we will input appropriate cycle weights for each size class.

rural = EPA_Ph2_rural_interstate_65mph.csv urban = EPA_Ph2_urban_highway_55mph.csv transient = EPA_Ph2_transient.csv

vehicle input file example for drive_cycle

selection scenario_name drive_cycle
1 Class 8 Sleeper cab (Diesel, 2021, program success) [(EPA_Ph2_rural_interstate_65mph.csv, .86), (EPA_Ph2_urban_highway_55mph.csv, .09), (EPA_Ph2_transient.csv, .05)]
2 Class 8 Sleeper cab (Diesel, 2027, program success) [(EPA_Ph2_rural_interstate_65mph.csv, .86), (EPA_Ph2_urban_highway_55mph.csv, .09), (EPA_Ph2_transient.csv, .05)]

Conventional Considerations

BEV Considerations

HEV/FCEV Considerations

PHEV Considerations

motor_power_override_kw_fc_demand_on_pct

During PHEV optimization, an adjustment for PHEVs that is not made for any other powertrain types to the value of kw_demand_fc_on for the vehicle. kw_demand_fc_on is a vehicle file input and a type of hyrbid vehicle controls parameter. This parameter is the kW threshold of power demand from the drive cycle at which the fuel converter is activated to meet trace. In order to have the kW threshold float along with the sizing of the motor during optimization, T3CO sets the value of kw_demand_fc_on based on a set percentage of the motor size, motor_power_override_kw_fc_demand_on_pct. This percentage is specified in the T3CO scenario file.

If this percentage is not specified in the T3CO scenario file, then kw_demand_fc_on is not adjusted and remains the static value from the vehicle input file. motor_power_override_kw_fc_demand_on_pct overrides kw_demand_fc_on. If neither are provided then T3CO will error out.

This adjustment happens in t3co.run_scenario.set_max_motor_kw(vehicle, new_kw_value) when the optimization loop calls set_max_motor_kw

Text Only
if vehicle.veh_pt_type == PHEV:
    vehicle.mc_max_kw = optimization_function(TCO, grade and acceleration performance)
    kw_demand_fc_on = motor_power_override_kw_fc_demand_on_pct * vehicle.mc_max_kw