Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main' into kaibranch
Browse files Browse the repository at this point in the history
# Conflicts:
#	src/main/java/org/tub/vsp/bvwp/computation/NkvCalculator.java
#	src/main/java/org/tub/vsp/bvwp/data/Headers.java
#	src/main/java/org/tub/vsp/bvwp/data/container/analysis/StreetAnalysisDataContainer.java
#	src/main/java/org/tub/vsp/bvwp/data/container/base/street/StreetPhysicalEffectDataContainer.java
#	src/main/java/org/tub/vsp/bvwp/data/mapper/physicalEffect/StreetPhysicalEffectMapper.java
#	src/main/java/org/tub/vsp/bvwp/io/StreetCsvWriter.java
#	src/main/java/org/tub/vsp/bvwp/users/kmt/FiguresKMT.java
#	src/main/java/org/tub/vsp/bvwp/users/kmt/RunLocalCsvScrapingKMT.java
#	src/test/java/org/tub/vsp/bvwp/data/mapper/physicalEffect/StreetPhysicalEffectMapperTest.java
  • Loading branch information
kt86 committed Nov 20, 2024
2 parents 4ae59be + c0c05eb commit 357e434
Show file tree
Hide file tree
Showing 11 changed files with 191 additions and 74 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,24 +10,32 @@ name: Java CI with Maven

on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
branches-ignore:
- 'master' # no need to run after merging to master
- 'main' # no need to run after merging to main; main is the "new" master
pull_request:

jobs:
build:
build_and_test:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: '21'
distribution: 'temurin'
- name: Build with Maven
run: mvn -B package --file pom.xml
- name: Checkout git repo
uses: actions/checkout@v4

- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'zulu'
cache: maven

- name: Build module (with dependencies)
run: mvn -B package --file pom.xml -DskipTests -Dsource.skip

- name: Test module
run: mvn verify --batch-mode -Dmaven.test.redirectTestOutputToFile -Dmatsim.preferLocalDtds=true --fail-at-end -Dsource.skip

# Optional: Uploads the full dependency graph to GitHub to improve the quality of Dependabot alerts this repository can receive
- name: Update dependency graph
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ public record Modifications(double co2Price, double mehrFzkm, double investmentC
public static final double co2PriceBVWP = 145.;
public static final double co2Price796 = 796.;
// (895 Eu_2021/t neuer BMDV-Wert. Evtl. Ausstoss 2040 statt 2030, aber das macht ja nichts. Rückgerechnet nach 2021 ergibt das 796.)
public static final double co2Price700 = 642.; //Braucht KMT noch für EWGT paper, daher nun wieder drin,
// (700 sind die Klimakosten von in 2030 erzeugten CO2-Emissionen, zum Preisstand 2020. Rückgerechnet nach 2012 führt das zu 642.)
public static final double co2Price2000 = 2000 * INFLATION_Factor2020to2012;
// (2000 als Annahme für die Klimakosten von in 2030 erzeugten CO2-Emissionen, zum Preisstand 2020. Rückgerechnet nach 2012)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ private static Double calculateNkv(Modifications modifications, StreetBaseDataCo

private static Optional<Amounts> amountsFromStreetBaseData(StreetBaseDataContainer streetBaseDataContainer) {

StreetPhysicalEffectDataContainer.PEffect tt = streetBaseDataContainer.getPhysicalEffect().getTravelTimes();
StreetPhysicalEffectDataContainer.PEffect tt = streetBaseDataContainer.getPhysicalEffect().getPTravelTimes();

StreetPhysicalEffectDataContainer.PEffect pVehicleKilometers = streetBaseDataContainer.getPhysicalEffect().getPVehicleKilometers();

Expand Down
32 changes: 24 additions & 8 deletions src/main/java/org/tub/vsp/bvwp/data/Headers.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,22 +13,25 @@ public final class Headers{
* = {@link #ADDTL_PKWKM_EL03} - {@link #ADDTL_PKWKM_ORIG}
*/
public static final String ADDTL_PKWKM = "zusätzliche Pkw-km";
public static final String ADDTL_LKWKM = "zusätzliche Lkw-km";
public static final String ADDTL_PKWKM_EL03_DIFF = "addtl_pkwkm_el03_diff";
/**
* Der "induzierte" (Mehr-)Verkehr laut PRINS.
*/
public static final String ADDTL_PKWKM_INDUZ_ORIG = "addtl_pkwkm_induz";
/**
* Mehrverkehr auf Pkw, den das Projekt erzeugt, laut unserer eigenen Abschätzung. Wird immer mal mit anderen Elastizitäten gerechnet, so
* dass sich die Werte immer mal ändern.
*/
public static final String ADDTL_PKWKM_EL03 = ADDTL_PKWKM + " aus Elastizität 0,3";
public static final String ADDTL_PKWKM_EL03_DIFF = "addtl_pkwkm_el03_diff";
public static final String ADDTL_PKWKM_FROM_TTIME = ADDTL_PKWKM + " aus Reisezeitgewinnen";
public static final String ADDTL_PKWKM_FROM_TTIME_DIFF = "addtl_pkwkm_from_ttime_diff";
/**
* Der "induzierte" (Mehr-)Verkehr laut PRINS.
*/
public static final String ADDTL_PKWKM_INDUZ_ORIG = "addtl_pkwkm_induz";
/**
* Mehrverkehr auf Pkw, den das Projekt erzeugt, laut PRINS.
*/
public static final String ADDTL_PKWKM_ORIG = ADDTL_PKWKM + " in PRINS";
//Güterverkehr
public static final String ADDTL_LKWKM_ORIG = ADDTL_LKWKM + " in PRINS";
/**
* So etwas wie "Neubau", "Knotenpunkt(projekt)", Erweiterung auf 6 oder 8 Spuren.
*
Expand Down Expand Up @@ -99,20 +102,27 @@ public final class Headers{
public static final String LINK = "URL";
public static final String NKV_CARBON700_EMOB_INVCOST80 = "NKV mit Inv.Kosten+/CO2-Preis+ & EMob";
public static final String NKV_CARBON700_CAPPED5 = HeadersKN.NKV_CARBON700 + "_capped5";


/**
* NKV bei erhöhtem CO2-Preis (welchem?).
* KMT: NKV bei erhöhten Investitionskosten (welchen?) in Kombination mit erhöhtem CO2-Preis von 2000 Euro.
*/
public static final String NKV_CO2_2000_EN = "BCR_co2_2000"; //2000 Euro/t -> muss dann noch nach 2012 umgerechnet werden
public static final String NKV_CO2_2000_INVCOST150_EN = "BCR_co2_2000_invcost150"; //50% höhere Investmentcosts
public static final String NKV_CO2_2000_INVCOST200_EN = "BCR_co2_2000_invcost200"; //doppelte Investmentcosts
public static final String NKV_CO2_2000_INVCOSTTUD_EN = "BCR_co2_2000_invcostTud"; // Projektspezifische erhöhte Investitionskosten (siehe TUD-Liste)

/**
* NKV bei erhöhten Investitionskosten (welchen?) in Kombination mit erhöhtem CO2-Preis.
* KMT: NKV bei erhöhten Investitionskosten (welchen?) in Kombination mit erhöhtem CO2-Preis von 700 Euro.
*/
public static final String NKV_CO2_2000_INVCOSTTUD_EN = "BCR_co2_2000_invcostTud"; // Projektspezifische erhöhte Investitionskosten (siehe TUD-Liste)
public static final String NKV_CO2_700_EN = "BCR_co2_700"; //700 Euro/t lt UBA für 2030 (Preisstand 2020) -> muss dann noch nach 2012 umgerechnet werden
public static final String NKV_CO2_700_INVCOST150_EN = "BCR_co2_700_invcost150"; //50% höhere Investmentcosts
public static final String NKV_CO2_700_INVCOST200_EN = "BCR_co2_700_invcost200"; //doppelte Investmentcosts
public static final String NKV_CO2_700_INVCOSTTUD_EN = "BCR_co2_700_invcostTud"; // Projektspezifische erhöhte Investitionskosten (siehe TUD-Liste)


public static final String NKV_CO2_796 = "BKV_co2_796";

/**
* Neues NKV bei erhöhter Abschätzung für Mehrverkehr.
*/
Expand Down Expand Up @@ -159,6 +169,12 @@ public final class Headers{
public static final String NKV_NO_CHANGE_EN = "BCR";
public static final String NProCo2_ELTTIME_CARBON2000_EMOB_INVCOSTTUD = "Nutzen_pro_CO2 mit Inv.Kosten+/Str.mehrverk.+/CO2-Preis++ & EMob";
public static final String NProCo2_ORIG = "Nutzen_pro_CO2 lt. BVWP'30";
/**
* Originales NKV.
*/
public static final String NKV_ORIG = "NKV BVWP 2030";
public static final String NKV_ORIG_EN = "BCR_original";

public static final String PROJECT_NAME = "Projektname";
public static final String VERKEHRSBELASTUNG_PLANFALL = "DTV_Planfall";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import org.tub.vsp.bvwp.computation.ComputationKN;
import org.tub.vsp.bvwp.computation.Modifications;
import org.tub.vsp.bvwp.computation.NkvCalculator;
import org.tub.vsp.bvwp.data.Headers;
import org.tub.vsp.bvwp.data.container.base.street.StreetBaseDataContainer;

import java.util.ArrayList;
Expand Down Expand Up @@ -95,15 +96,13 @@ private void addComputations() {

NkvCalculator nkvCalculator = new NkvCalculator( streetBaseData );

entries.put( NKV_ORIG, nkvCalculator.calculateNkv( NO_CHANGE ) );
// if ( true ){
// return;
// }
entries.put(Headers.NKV_ORIG, nkvCalculator.calculateNkv( NO_CHANGE ) );
entries.put(Headers.NKV_ORIG_EN, nkvCalculator.calculateNkv(NO_CHANGE));
entries.put( Headers.NKV_CO2_796, nkvCalculator.calculateNkv( new Modifications( co2Price796, 0., 1, 1, 1. ) ) );

// entries.put(Headers.NKV_CO2, nkvCalculator.calculateNkv( new Modifications( co2Price796, 0., 1, 1, 1. ) ) );
entries.put( NKV_CO2_700_EN, nkvCalculator.calculateNkv( new Modifications( co2Price796, 0., 1, 1, 1. ) ) );
entries.put( NKV_CO2_2000_EN, nkvCalculator.calculateNkv( new Modifications( co2Price2000, 0, 1, 1, 1. ) ) );
entries.put( NKV_EL03, nkvCalculator.calculateNkv( new Modifications( co2PriceBVWP, addtlFzkmBeyondPrinsEl03, 1, 1, 1. ) ) );
entries.put(Headers.NKV_CO2_700_EN, nkvCalculator.calculateNkv( new Modifications( co2Price700, 0., 1, 1, 1. ) ) );
entries.put(Headers.NKV_CO2_2000_EN, nkvCalculator.calculateNkv( new Modifications( co2Price2000, 0, 1, 1, 1. ) ) );
entries.put(Headers.NKV_EL03, nkvCalculator.calculateNkv( new Modifications( co2PriceBVWP, addtlFzkmBeyondPrinsEl03, 1, 1, 1. ) ) );
// entries.put(Headers.NKV_EL03_CARBON215_INVCOSTTUD, nkvCalculator.calculateNkv( new Modifications( co2Price215, addtlFzkmBeyondPrinsEl03, constructionCostFactor ) ) );
// entries.put(Headers.NKV_EL03_CARBON700ptpr0_INVCOSTTUD, nkvCalculator.calculateNkv( new Modifications( discountCorr*co2Price700, addtlFzkmBeyondPrinsEl03, constructionCostFactor ) ) );
// entries.put(Headers.NKV_EL03_CARBON700ptpr0, nkvCalculator.calculateNkv( new Modifications( discountCorr*co2Price700, addtlFzkmBeyondPrinsEl03, 1. ) ) );
Expand All @@ -129,13 +128,13 @@ private void addComputations() {
//
entries.put( ADDTL_PKWKM_EL03, addtlFzkmFromElasticity03 );
// entries.put(Headers.CO2_COST_ORIG, Math.max( 1., nkvCalculator.calculateCost_CO2( NO_CHANGE, streetBaseData ) ) );
// entries.put(Headers.CO2_COST_EL03, Math.max( 1., nkvCalculator.calculateCo2_t( new Modifications( co2PriceBVWP, addtlFzkmBeyondPrinsEl03, 1 ) ) ) );
entries.put(Headers.CO2_COST_EL03, Math.max( 1., nkvCalculator.calculateCo2_t( new Modifications( co2PriceBVWP, addtlFzkmBeyondPrinsEl03, 1,1,1 ) ) ) );
// ("max(1,...)" so that they become visible on logplot. find other solution!

// entries.put( INVCOST_TUD, this.constructionCostTud );

double AVERAGE_SPEED_OF_ADDITIONAL_TRAVEL = 50; // km/h
double addtlFzkmFromTtime = - streetBaseData.getPhysicalEffect().getVehicleHours().overall() * AVERAGE_SPEED_OF_ADDITIONAL_TRAVEL;
double addtlFzkmFromTtime = - streetBaseData.getPhysicalEffect().getPTravelTimes().overall() * AVERAGE_SPEED_OF_ADDITIONAL_TRAVEL;
entries.put( ADDTL_PKWKM_FROM_TTIME, addtlFzkmFromTtime );

// Beiträge einzeln:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@

public class StreetPhysicalEffectDataContainer {
private StreetEmissionsDataContainer emissionsDataContainer;
private PEffect travelTimes;
private PEffect pVehicleKilometers;
private PEffect vehicleHours;
private Double lVehicleKilometers;
private PEffect pVehicleHours; //Personenverkehr
private PEffect pVehicleKilometers; //Personenverkehr
private PEffect lVehicleHours; //Güterverkehr (Lkw)
private Double lVehicleKilometers; //Güterverkehr (Lkw)

public StreetEmissionsDataContainer getEmissionsDataContainer() {
return emissionsDataContainer;
Expand All @@ -24,12 +24,12 @@ public StreetPhysicalEffectDataContainer setEmissionsDataContainer(StreetEmissio
return this;
}

public PEffect getTravelTimes() {
return travelTimes;
public PEffect getPTravelTimes() {
return pVehicleHours;
}

public void setTravelTimes( PEffect travelTimes ) {
this.travelTimes = travelTimes;
public void setPVehicleHours(PEffect pVehicleHours) {
this.pVehicleHours = pVehicleHours;
}

public PEffect getPVehicleKilometers() {
Expand Down Expand Up @@ -61,7 +61,7 @@ public boolean equals(Object o) {
if (!Objects.equals(emissionsDataContainer, that.emissionsDataContainer)) {
return false;
}
if (!Objects.equals(travelTimes, that.travelTimes)) {
if (!Objects.equals(pVehicleHours, that.pVehicleHours)) {
return false;
}
return Objects.equals( pVehicleKilometers, that.pVehicleKilometers );
Expand All @@ -70,15 +70,15 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
int result = emissionsDataContainer != null ? emissionsDataContainer.hashCode() : 0;
result = 31 * result + (travelTimes != null ? travelTimes.hashCode() : 0);
result = 31 * result + (pVehicleHours != null ? pVehicleHours.hashCode() : 0);
result = 31 * result + (pVehicleKilometers != null ? pVehicleKilometers.hashCode() : 0);
return result;
}
public void setVehicleHours( PEffect vehicleHours ){
this.vehicleHours = vehicleHours;
public void setlVehicleHours(PEffect lVehicleHours){
this.lVehicleHours = lVehicleHours;
}
public PEffect getVehicleHours(){
return vehicleHours;
public PEffect getlVehicleHours(){
return lVehicleHours;
}

public record PEffect(Double overall, Double induced, Double shifted) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@ public static StreetPhysicalEffectDataContainer mapDocument(Document document) {
}

JSoupUtils.getFirstRowIndexWithText( table.get(), "Veränderung der Fahrzeugeinsatzzeiten im PV" )
.ifPresent( i -> physicalEffectDataContainer.setVehicleHours( extractEffect( table.get(), i ) ) );
.ifPresent( i -> physicalEffectDataContainer.setlVehicleHours( extractEffect( table.get(), i ) ) );

JSoupUtils.getFirstRowIndexWithText(table.get(), "Veränderung der Reisezeit im PV")
.ifPresent(i -> physicalEffectDataContainer.setTravelTimes(extractEffect(table.get(), i)));
.ifPresent(i -> physicalEffectDataContainer.setPVehicleHours(extractEffect(table.get(), i)));

JSoupUtils.getFirstRowIndexWithText(table.get(), "Veränderung der Betriebsleistung im Personenverkehr")
.ifPresent(i -> physicalEffectDataContainer.setPVehicleKilometers(extractEffect(table.get(), i ) ) );
Expand Down
4 changes: 3 additions & 1 deletion src/main/java/org/tub/vsp/bvwp/io/StreetCsvWriter.java
Original file line number Diff line number Diff line change
Expand Up @@ -137,8 +137,9 @@ private static List<Object> getCsvRecord(StreetAnalysisDataContainer analysisDat
record.add(Headers.DAUER_BAU, baseDataContainer.getCostBenefitAnalysis().getDurations().construction());
record.add(Headers.DAUER_BETRIEB, baseDataContainer.getCostBenefitAnalysis().getDurations().operation());

record.add(Headers.ADDTL_PKWKM_ORIG, baseDataContainer.getPhysicalEffect().getPVehicleKilometers().overall() );
record.add(Headers.ADDTL_PKWKM_ORIG, baseDataContainer.getPhysicalEffect().getPVehicleKilometers().overall());
record.add(Headers.ADDTL_PKWKM_INDUZ_ORIG, Optional.ofNullable(baseDataContainer.getPhysicalEffect().getPVehicleKilometers().induced() ).orElse(0. ) );
record.add(Headers.ADDTL_LKWKM_ORIG, Optional.ofNullable(baseDataContainer.getPhysicalEffect().getLVehicleKilometers() ).orElse(0. ) );

record.add(Headers.B_PER_KM, baseDataContainer.getCostBenefitAnalysis().getNbOperations().overall());

Expand Down Expand Up @@ -230,6 +231,7 @@ private static List<String> getHeaders(List<StreetAnalysisDataContainer> analysi
headers.addDoubleColumn( Headers.ADDTL_PKWKM_ORIG );
headers.addDoubleColumn(Headers.ADDTL_PKWKM_INDUZ_ORIG );
// headers.addDoubleColumn( Headers.PKWKM_INDUZ_NEU ); // added by automagic
headers.addDoubleColumn( Headers.ADDTL_LKWKM_ORIG );
headers.addDoubleColumn(Headers.B_FZKM);

headers.addDoubleColumn(Headers.CO_2_EQUIVALENTS_EMISSIONS);
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/org/tub/vsp/bvwp/users/kmt/FiguresKMT.java
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ static Figure createFigureCostByPriority(int plotWidth, Table table, String xNam

static Figure createFigureNkvByPriority(Axis xAxis, int plotWidth, Table table, String xName) {
Figure figure2;
String yName = HeadersKN.NKV_ORIG;
String yName = Headers.NKV_ORIG_EN;
// String y3Name = Headers.NKV_CO2_680_EN;
String y2Name = Headers.NKV_EL03_CARBON215_INVCOSTTUD;

Expand Down Expand Up @@ -127,7 +127,7 @@ static Figure createFigureNkvByPriority(Axis xAxis, int plotWidth, Table table,

static Figure createFigureNkv(Axis xAxis, int plotWidth, Table table, String xName) {
Figure figure2;
String yName = HeadersKN.NKV_ORIG;
String yName = Headers.NKV_ORIG_EN;
String y3Name = Headers.NKV_CO2_700_EN;
// String y2Name = Headers.NKV_INDUZ_CO2;

Expand Down
Loading

0 comments on commit 357e434

Please sign in to comment.