Given a version number
MAJOR part tracks the GTR phase implemented.
The following matrix shows these correspondences:
Un-precise GTR phase-1a (diffs explained below)
GTR phase-1a, (roughly valid till ~2016
GTR phase 2 [TDB]
g_max0does not include corrections for the
g1-->g2 n_minrule, not points with insufficient power (Annex 1-8.4).
(!) Driveability-rules are missing - for their implementation, the values for calculating “initial-gear” must be trusted first, or else no validation is possible.
Some extra sanity checks apply e.g. check if
p_ratedis “close enough” to
p_wot_max, while others maybe missing.
The program structure is convoluted because it is assumed that its functions will be called automatically by an automated framework based on data given & asked (see TODOs below).
Update cmd-line; add UI front-ends.
Use a model-explorer to autocomplete excel-cells.
Automatically calculate masses from H & L vehicles.
datamodel: validate in 2 steps: jsonschema, populate missing values & validate; drop yield-error method, locality of errors is lost on debug.
datamodel: Enhance model-preprocessing by interleaving “octapus” merging stacked-models between validation stages.
datamodel: finalize data-schema (renaming columns and adding
namefields in major blocks).
model/core: Accept units on all quantities.
core: Move calculations as class-methods to provide for overriding certain parts of the algorithm.
core: execute part of the calculation-graph based on the data given & asked.
Almost all of the names of the datamodel and formulae can be remapped,
For instance, it is possible to run the tool on data containing
n_idle (which is the default), without renaming the input data.
(The original entry is located in ../README.rst, line 25.)
Move grid WOTs code in own module
(The original entry is located in ../README.rst, line 55.)
validate_nims_t_cold_end() properly in validations pipeline.
(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/wltp/checkouts/latest/wltp/cycler.py:docstring of wltp.cycler.CycleBuilder.validate_nims_t_cold_end, line 3.)
Reenacted development after Matlab & C# version were delivered, changes too many to list here concisely.
FEAT: Autograph with Graphtik all but (old) cycler.
FEAT: V_cap & compensate cycle distance!
FEAT(dtree): generate dtree after TCs have run
FIX(DEPS): upd for Pandas-1.0.0 API
UPD(ACCDB): NEW SOURCES 15092019, 20092019
UPD(MATLAB): SOURCES 21_11_2019, 2020_5_27.
FEAT(mat.ipynb): +notebook for all_cases() with octave; notebook executing Octave with Pandas IO
REFACT(NBs): JupyText-pair Rmd–>py-percent
FIX(PYTEST): PIN Deps due to pytest-sphinx API changes;
FEAT(TRAVIS): tested on PY3.8, allow fail PY3.6 (e.g. annotations).
FIX(TRAVIS+pytest) ver-conflict in PY<=3.7
ENH(TCs,NBs): PermaTest 24% of Vehs (without –vehnums)
REFACT(TCs): DocTest with pytest-sphinx plugin.
FEAT(MDL): AutoDEFAULTs on schema validation; support LABELS in schema items.
REFACT(mdl) read WLTC-Schemas from static files.
FIX(CYCLES) last-part offset was +1 MORE now respecting lengths in all parts – CHECKSUMS Changed: last-parts of A0. Improve all phasings problem with class1 samples, and explain specific limits & notation choice.
v_dsc => V_dsc;
v_cycle => V_cycle;
SM => f_safety_margin;
gear_ratios => n2v_ratios.
REFACT(WLTC) store Lengths (not Breaks) in classes (like Matlab does).
FIX(site): Sphinx terms are now case-sensitive.
ENH(doc, build, site): Versions, RelDates & Badges; use
git describe; install with
FEAT(DOC+SITE+mdl) +sphinx-jsonschema to render IOs.
fix(site): RTD build.
DOC: COPYRIGHT * –> 2020
FIX(BINDER): use conda-env for graphviz & Octave native.
Drop support for Python 2.7 & <3.6, due to
f"string:, among others… The supported Pythons covers 84% of 2018 Python-3 installations (71% of Pythons in total)
FEAT: NOTEBOOKS comparing with latest AccDB. Possible to launch a live demo of this repository in mybinder.org.
Revive tests & TravisCI with pytest (drop nosetest), move all TCs out of main-sources.
Depend on pandalone which has updated jsonschema-v3 validator (draft4–>draft7).
Start grouping functionalities in separate modules (e.g.
cycle_run --> cycle.
BREAK: renamed module
wltp.model --> wltp.datamodel.
FIX: CLASS1 has now +1 PART(low) at the end, as by the recent spec, and overlapping phases fixed.
break: V-traces is renamed from
cycle --> v_cycle.
break: cycle-part limits are plain lists-of-limits (not list-of-pairs).
break: flatten model, merging
paramsproperties up to root.
break: split up
drop: don’t add a sample WOT in base_model if not given.
break: Inverse safety margin from 0.9 –> 0.1, and stop supporting ngear array (had been left like that since the phase 1a).
feat: add helper API funcs to get WLTC class data (e.g.
v_cycle, limits, etc).
Drop Slope, cannot work with downscaling.
FEAT: VMAX & NMAX calculations:
v_maxmatch accdb, but 6 cases missmatch
g_vmax(out of 125 cases).
many minor mismatches on
All VMAX match accdb, but 6 expected cases missmatch
g_vmax(out of 125 cases).
UPD: DOWNSCALING to recent formulas & constants, and document them. Still scaled (not recursive), none can reproduce exactly MsAccess.
PANDA-ized calculations (from numpy-arrays + rogue indices). Much better and shorter code.
Rounding according to GTR; +notebook comparing rounding behavior of Python vs Matlab vs C# vs VBA(pre-canned).
CRCs & identification function for the 3 possible phasings: V, VA0, VA1
Build & dev-dependencies enhancements.
fix: update to pandas-0.25.0 (July 2019).
Test on Windows at appveyor CI.
- Relax some conditions on inputs:
Just warn on Pwot-normalized > 1 or > n_idle or < 1.2 x n_rated (BUT not extrapolate)
allow float as
sphinx_rtd_themedependency - provided by default these days.
drop pip-installin of
xlwingsattrocity if missing.
Fix py36 “nested regex” warning on
jsonschema <3to fix validation, was also
>2.5, so now maximum
Minor documentation fixes.
VSCode files & dev plugins.
Quick’n Dirty release to remove
matplotlib from dependencies.
--gui``and ``--excelrunwere preventing cmd-line launches, the
-Moption did not work due to bad argument type-parsing.
drop easygui dependency.
co2mpasdocker-image does not load Qt and other heavy graphical stuff.
fix(deps): pandas-v0.20.1 dropped PandasError classs - See https://github.com/pydata/pandas-datareader/issues/305
fix(main): regression in
v0.1.0-alpha.0, main did not import due to not fully deleted tkui launch code.
style(pep8): del spaces from python files.
./dib/bumpver.pyscript from post-
fix(build, #3): Dependency xlwings broke builds on Linux in downstream packages.
feat(core): modify acceleration rule
3s-->2sto assimilate more to phase-1b.
feat(ui): drop tkUI code and Pillow dependency.
DELETE Wltp-DB files to light-weight wheels.
Same algo as
alpha.3 but with corrected engine-speed for idle.
It is used for reports and simulation run by JRC to build the CO2MPAS model,
but still not driveable due to downshifting to 1st-gear when stopping to standstill.
core, model: Possible to define different
core: Add function to identify gear-ratios from experimental engine-runs.
excel, tests: Add ExcelRunner TCs.
This is practically the 1st public releases, reworked in many parts, much better documented, continuously tested and build using TravisCI, with on-the-fly generated diagrams as metrics, BUT the arithmetic results produced are still identical to v0.0.7, so that the test-cases and metrics still describe that version, for future comparison.
Use CONDA for running on TravisCI.
docs and metrics improvements.
ui: Added Excel frontend.
ui: Added desktop-UI proof-of-concept (
metrics: Add diagrams auto-generated from test-metrics into generated site (at “Getting Involved” section).
- Model changes:
/cycle_run: If present, (some of) its columns override the calculation.
Added Excel front-end.
Added Metrics section in documents whith on-the-fly generated diagrams comparing and tracking the behavior of the algorithm.
Now the Eclipse’s PyDev-project files are included only as templates; copy them and remove the
eclipseprefix before importing project into Eclipse/Liclipse.
Backported also to Python-2.7.
model, core: Calculate default resistance-coefficients from a regression-curve (the one found in AccDB).
model, core: Possible to overide WLTP-Class, Target-V & Slope, Gears if present in the
model: Add NEDC cycle data, for facilitating comparisons.
tests: Include sample-vehicles along with the distribution.
tests: Speed-up tests by caching files to read and compare.
docs: Considerable improvements, validate code in comments and docs with doctest.
docs: Provide a http-link to the list of IPython front-ends in the project’s wiki.
build: Use TravisCI as integration server, Coveralls.io as test-coverage service-providers.
build: Stopped .EXE distribution; need a proper python environment.
Although it has already been used in various exercises internally in JRC, it never graduated out of Alpha state.
Rename project to ‘wltp’.
Switch license from AGPL –> EUPL (the same license assumed retrospectively for older version)
Add wltp_db files.
Unify instances & schemas in
Possible to Build as standalone
- Preparations for PyPI/github distribution.
Rename project to “wltp”.
Prepare Sphinx documentation for http://readthedocs.org.
Update project-coordinates (authors, etc)
Make it build as standalone
Possible to transplant base-gears and then apply on them driveability-rules.
Embed Model –> Experiment to simplify client-code.
Changes in the data-schema for facilitating conditional runs.
More reverse-engineered comparisons with AccDB.
Many driveability-improvements found by trial-n-error comparing with AccDB.
Changes in the data-schema for facilitating storing of tabular-data.
Use Euro6 polynomial full_load_curve from Fontaras.
Make the plottings of comparisons of sample-vehicle with AccDB interactively report driveability-rules.
Also report GEARS_ORIG, RPM_NORM, P_AVAIL, RPM, GEARS_ORIG, RPM_NORM results.
Starting to compare with AccDB - FOUND DISCREPANCIES IMPLTYING ERROR IN BASE CALCS.
Test-enhancements and code for comparing with older runs to track algo behavior.
Also report RPMS, P_REQ, DIRVEABILITY results.
Make v_max optionally calculated from max_gear / gear_ratios.
BUGFIX: in P_AVAIL 100% percents were mixed [0, 1] ratios!
goodVehiclea function to avoid mutation side-effects.
BUGFIX: add forgotten division on p_required Accel/3.6.
BUGFIX: velocity-profile mistakenly rounded to integers!
BUGFIX: v_max calculation based on n_rated (not 1.2 * n_rated).
FIXME: get default_load_curve floats from AccDB.
FIXME: what to to with INVALID-GEARS?
- -Driveability rules not-implemented:
missing some conditions for rule-f.
No preparation calculations (eg. vehicle test-mass).
Still unchecked for correctness of results.
- -Pending Experiment tasks:
FIXME: Apply rule(e) also for any initial/final gear (not just for i-1).
FIXME: move V–0 into own gear.
FIXME: move V–0 into own gear.
FIXME: NOVATIVE rule: “Clutching gear-2 only when Decelerating.”.
FIXME: What to do if no gear foudn for the combination of Power/Revs??
NOTE: “interpratation” of specs for Gear-2
NOTE: Rule(A) not needed inside x2 loop.
NOTE: rule(b2): Applying it only on non-flats may leave gear for less than 3sec!
NOTE: Rule(c) should be the last rule to run, outside x2 loop.
NOTE: Rule(f): What if extra conditions unsatisfied? Allow shifting for 1 sec only??
TODO: Construct a matrix of n_min_drive for all gears, including exceptions for gears 1 & 2.
TODO: Prepend row for idle-gear in N_GEARS
TODO: Rule(f) implement further constraints.
TODO: Simplify V_real calc by avoiding multiply all.
-Unchecked for correctness.
Project with python-packages and test-cases.
Selects appropriate classes.
Detects and applies downscale.
Interpreted and implemented the nonsensical specs concerning
n_minengine-revolutions for gear-2 (Annex 2-3.2, p71).
-Not implemented yet driveability rules.
-Does not output real_velocity yet - inly gears.
why is it checking the next sample after the gear-shift if it is still 2?:
If rstbe!g_max = 1 And rstce!g_max = 2 And rstde!g_max = 2 And rstae!ndv_2 * rstce!v < 1.15 * rstae!idling_speed Then
Is this written in the GTR?
Don’t these kind of checks belong to driveability-rules??
Regarding the -0.1389
n_min_upthreshold in Annex 2-2.k, i cannot find its use in the accdb?
Regarding the exact boundaries of the “up” phase, is it based on the same logic as for accel/decel/cruise phases of Annex 2-4, correct? Specifically, does it also end the last sample (including it)?
11.5.2. VMax in F new vehicle.form.vbs:¶
Is this the
v_maxused for class 3a/b decision?
L3358-L3360: is this rounding needed because of accumulation of rounding errors? (since this n-value is derived from rounded v-values)
While searching for
v_max, the GTR asks to reach down to
Why accdb almost always reaches down to
Why is it reaching sometimes down to ng-3, and others down to ng-2?
Is it possible that a lower gear can have lower
v_maxand next lower to have
v_maxhigh again? NO
Is there a 3-geared car with v_max@gear-1? NO
So would a method that starts scanning from top and stops on the first
v_maxvalue that is lower than the previous (and get the prevous) work?
There are 5 cases where both top gears can reach the same
v_max/ Accdb seems to take the lower one, but the GTR suggest the opposite
vehicle-82 has f_dsc 0.010 (=threshold) and still gets downscaled, while the GTR write downscale only if that threshold excheeded; why?
p_avail: case 48 seems like ASM has been used in the 1st 4 values, but all ASM values are 0. Why?:
n Pwot p_avail_expected Pavai ASM ratio 1330 33.719761 30.347785 26.975809 0.0 1.125000 1500 40.840704 36.756634 32.672564 0.0 1.125000 1800 71.628313 64.465481 57.302650 0.0 1.125000 1900 75.607663 68.046897 64.266514 0.0 1.058824 3000 119.380521 107.442469 107.442469 0.0 1.000000 4000 159.174028 143.256625 143.256625 0.0 1.000000 5000 198.967535 179.070781 179.070781 0.0 1.000000 5700 226.822990 204.140691 204.140691 0.0 1.000000 5800 228.000000 205.200000 205.200000 0.0 1.000000 6000 228.000000 205.200000 205.200000 0.0 1.000000 6200 228.000000 205.200000 205.200000 0.0 1.000000 6400 221.168123 199.051311 199.051311 0.0 1.000000 6600 213.980159 192.582143 192.582143 0.0 1.000000 6800 207.931546 187.138391 187.138391 0.0 1.000000
veh041 seems to calculate
n_max2) based on class2 and not from class1, where it belongs:
v_class1_max(64.4) * n2v_4(90.3) = 5815.31 v_class2_max(123.1) * n2v_4(90.3) = 11115.93 # value in accdb
How is that possible?
cruisecalculated on the “japanese” acceleration trace
a2? What is this 0.278 as threshold value they are using? (i.e. A gearshift_table cruise.query.txt#L3)?
Are the following interpretations for the phases in Annex 2-4 correct?:'v': [0,0,3,3,5,8,8,8,6,4,5,6,6,5,0,0] 'accel': [0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0] 'cruise': [0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0] 'decel': [0,0,0,0,0,0,0,1,1,1,0,0,1,1,1,0] 'up': [0,0,1,1,1,1,1,1,0,1,1,1,1,0,0,0] 'initaccel': [1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0] 'stopdecel': [0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0]
So actually there cannot exist a 2-sample phase, correct?