Skip to content
Snippets Groups Projects
Commit cdac9050 authored by ThibautDemare's avatar ThibautDemare
Browse files

Compute the share par transportation mode when goods leave terminals

parent 15e7bbe6
Branches
Tags
No related merge requests found
......@@ -674,5 +674,257 @@ experiment 'Every output' type: gui {
data "Traffic evolution on the Canal Seine Nord" value: trafficValueCSN color: divergingCol2 ;
}
}/**/
display 'Share of vehicles leaving terminals per mode of transport - Region Basse-Normandie' refresh:every(1) {
chart "Share of vehicles leaving terminals per mode of transport - Region Basse-Normandie" type: series {
RegionObserver sr <- nil;
ask RegionObserver {
if(self.name = "Basse-Normandie"){
sr <- self;
}
}
if(sr!=nil){
data "Share of road" value: sr.shareLeavingRoadVehicleRO * 100.0 color: divergingCol5 ;
data "Share of river" value: sr.shareLeavingRiverVehicleRO * 100.0 color: divergingCol6 ;
data "Share of maritime" value: sr.shareLeavingMaritimeVehicleRO * 100.0 color: divergingCol7 ;
}
else { // At step 0, RegionObserver are not initialized, so, sr = nil
data "Share of road" value: 0 color: divergingCol5 ;
data "Share of river" value: 0 color: divergingCol6 ;
data "Share of maritime" value: 0 color: divergingCol7 ;
}
}
}/**/
display 'Share of vehicles leaving terminals per mode of transport - Region Centre' refresh:every(1) {
chart "Share of vehicles leaving terminals per mode of transport - Region Centre" type: series {
RegionObserver sr <- nil;
ask RegionObserver {
if(self.name = "Centre"){
sr <- self;
}
}
if(sr!=nil){
data "Share of road" value: sr.shareLeavingRoadVehicleRO * 100.0 color: divergingCol5 ;
data "Share of river" value: sr.shareLeavingRiverVehicleRO * 100.0 color: divergingCol6 ;
data "Share of maritime" value: sr.shareLeavingMaritimeVehicleRO * 100.0 color: divergingCol7 ;
}
else { // At step 0, RegionObserver are not initialized, so, sr = nil
data "Share of road" value: 0 color: divergingCol5 ;
data "Share of river" value: 0 color: divergingCol6 ;
data "Share of maritime" value: 0 color: divergingCol7 ;
}
}
}/**/
display 'Share of vehicles leaving terminals per mode of transport - Region Haute-Normandie' refresh:every(1) {
chart "Share of vehicles leaving terminals per mode of transport - Region Haute-Normandie" type: series {
RegionObserver sr <- nil;
ask RegionObserver {
if(self.name = "Haute-Normandie"){
sr <- self;
}
}
if(sr!=nil){
data "Share of road" value: sr.shareLeavingRoadVehicleRO * 100.0 color: divergingCol5 ;
data "Share of river" value: sr.shareLeavingRiverVehicleRO * 100.0 color: divergingCol6 ;
data "Share of maritime" value: sr.shareLeavingMaritimeVehicleRO * 100.0 color: divergingCol7 ;
}
else { // At step 0, RegionObserver are not initialized, so, sr = nil
data "Share of road" value: 0 color: divergingCol5 ;
data "Share of river" value: 0 color: divergingCol6 ;
data "Share of maritime" value: 0 color: divergingCol7 ;
}
}
}/**/
display 'Share of vehicles leaving terminals per mode of transport - Region Ile-de-France' refresh:every(1) {
chart "Share of vehicles leaving terminals per mode of transport - Region Ile-de-France" type: series {
RegionObserver sr <- nil;
ask RegionObserver {
if(self.name = "Ile-de-France"){
sr <- self;
}
}
if(sr!=nil){
data "Share of road" value: sr.shareLeavingRoadVehicleRO * 100.0 color: divergingCol5 ;
data "Share of river" value: sr.shareLeavingRiverVehicleRO * 100.0 color: divergingCol6 ;
data "Share of maritime" value: sr.shareLeavingMaritimeVehicleRO * 100.0 color: divergingCol7 ;
}
else { // At step 0, RegionObserver are not initialized, so, sr = nil
data "Share of road" value: 0 color: divergingCol5 ;
data "Share of river" value: 0 color: divergingCol6 ;
data "Share of maritime" value: 0 color: divergingCol7 ;
}
}
}/**/
display 'Share of vehicles leaving terminals per mode of transport - Region Picardie' refresh:every(1) {
chart "Share of vehicles leaving terminals per mode of transport - Region Picardie" type: series {
RegionObserver sr <- nil;
ask RegionObserver {
if(self.name = "Picardie"){
sr <- self;
}
}
if(sr!=nil){
data "Share of road" value: sr.shareLeavingRoadVehicleRO * 100.0 color: divergingCol5 ;
data "Share of river" value: sr.shareLeavingRiverVehicleRO * 100.0 color: divergingCol6 ;
data "Share of maritime" value: sr.shareLeavingMaritimeVehicleRO * 100.0 color: divergingCol7 ;
}
else { // At step 0, RegionObserver are not initialized, so, sr = nil
data "Share of road" value: 0 color: divergingCol5 ;
data "Share of river" value: 0 color: divergingCol6 ;
data "Share of maritime" value: 0 color: divergingCol7 ;
}
}
}/**/
display 'Share of vehicles leaving terminals per mode of transport - Region Antwerp' refresh:every(1) {
chart "Share of vehicles leaving terminals per mode of transport - Region Antwerp" type: series {
RegionObserver sr <- nil;
ask RegionObserver {
if(self.name = "Antwerpen"){
sr <- self;
}
}
if(sr!=nil){
data "Share of road" value: sr.shareLeavingRoadVehicleRO * 100.0 color: divergingCol5 ;
data "Share of river" value: sr.shareLeavingRiverVehicleRO * 100.0 color: divergingCol6 ;
data "Share of maritime" value: sr.shareLeavingMaritimeVehicleRO * 100.0 color: divergingCol7 ;
}
else { // At step 0, RegionObserver are not initialized, so, sr = nil
data "Share of road" value: 0 color: divergingCol5 ;
data "Share of river" value: 0 color: divergingCol6 ;
data "Share of maritime" value: 0 color: divergingCol7 ;
}
}
}/**/
display 'Share of volume leaving terminals per mode of transport - Region Basse-Normandie' refresh:every(1) {
chart "Share of volume leaving terminals per mode of transport - Region Basse-Normandie" type: series {
RegionObserver sr <- nil;
ask RegionObserver {
if(self.name = "Basse-Normandie"){
sr <- self;
}
}
if(sr!=nil){
data "Share of road" value: sr.shareLeavingRoadQuantitiesRO * 100.0 color: divergingCol5 ;
data "Share of river" value: sr.shareLeavingRiverQuantitiesRO * 100.0 color: divergingCol6 ;
data "Share of maritime" value: sr.shareLeavingMaritimeQuantitiesRO * 100.0 color: divergingCol7 ;
}
else { // At step 0, RegionObserver are not initialized, so, sr = nil
data "Share of road" value: 0 color: divergingCol5 ;
data "Share of river" value: 0 color: divergingCol6 ;
data "Share of maritime" value: 0 color: divergingCol7 ;
}
}
}/**/
display 'Share of volume leaving terminals per mode of transport - Region Centre' refresh:every(1) {
chart "Share of volume leaving terminals per mode of transport - Region Centre" type: series {
RegionObserver sr <- nil;
ask RegionObserver {
if(self.name = "Centre"){
sr <- self;
}
}
if(sr!=nil){
data "Share of road" value: sr.shareLeavingRoadQuantitiesRO * 100.0 color: divergingCol5 ;
data "Share of river" value: sr.shareLeavingRiverQuantitiesRO * 100.0 color: divergingCol6 ;
data "Share of maritime" value: sr.shareLeavingMaritimeQuantitiesRO * 100.0 color: divergingCol7 ;
}
else { // At step 0, RegionObserver are not initialized, so, sr = nil
data "Share of road" value: 0 color: divergingCol5 ;
data "Share of river" value: 0 color: divergingCol6 ;
data "Share of maritime" value: 0 color: divergingCol7 ;
}
}
}/**/
display 'Share of volume leaving terminals per mode of transport - Region Haute-Normandie' refresh:every(1) {
chart "Share of volume leaving terminals per mode of transport - Region Haute-Normandie" type: series {
RegionObserver sr <- nil;
ask RegionObserver {
if(self.name = "Haute-Normandie"){
sr <- self;
}
}
if(sr!=nil){
data "Share of road" value: sr.shareLeavingRoadQuantitiesRO * 100.0 color: divergingCol5 ;
data "Share of river" value: sr.shareLeavingRiverQuantitiesRO * 100.0 color: divergingCol6 ;
data "Share of maritime" value: sr.shareLeavingMaritimeQuantitiesRO * 100.0 color: divergingCol7 ;
}
else { // At step 0, RegionObserver are not initialized, so, sr = nil
data "Share of road" value: 0 color: divergingCol5 ;
data "Share of river" value: 0 color: divergingCol6 ;
data "Share of maritime" value: 0 color: divergingCol7 ;
}
}
}/**/
display 'Share of volume leaving terminals per mode of transport - Region Ile-de-France' refresh:every(1) {
chart "Share of volume leaving terminals per mode of transport - Region Ile-de-France" type: series {
RegionObserver sr <- nil;
ask RegionObserver {
if(self.name = "Ile-de-France"){
sr <- self;
}
}
if(sr!=nil){
data "Share of road" value: sr.shareLeavingRoadQuantitiesRO * 100.0 color: divergingCol5 ;
data "Share of river" value: sr.shareLeavingRiverQuantitiesRO * 100.0 color: divergingCol6 ;
data "Share of maritime" value: sr.shareLeavingMaritimeQuantitiesRO * 100.0 color: divergingCol7 ;
}
else { // At step 0, RegionObserver are not initialized, so, sr = nil
data "Share of road" value: 0 color: divergingCol5 ;
data "Share of river" value: 0 color: divergingCol6 ;
data "Share of maritime" value: 0 color: divergingCol7 ;
}
}
}/**/
display 'Share of volume leaving terminals per mode of transport - Region Picardie' refresh:every(1) {
chart "Share of volume leaving terminals per mode of transport - Region Picardie" type: series {
RegionObserver sr <- nil;
ask RegionObserver {
if(self.name = "Picardie"){
sr <- self;
}
}
if(sr!=nil){
data "Share of road" value: sr.shareLeavingRoadQuantitiesRO * 100.0 color: divergingCol5 ;
data "Share of river" value: sr.shareLeavingRiverQuantitiesRO * 100.0 color: divergingCol6 ;
data "Share of maritime" value: sr.shareLeavingMaritimeQuantitiesRO * 100.0 color: divergingCol7 ;
}
else { // At step 0, RegionObserver are not initialized, so, sr = nil
data "Share of road" value: 0 color: divergingCol5 ;
data "Share of river" value: 0 color: divergingCol6 ;
data "Share of maritime" value: 0 color: divergingCol7 ;
}
}
}/**/
display 'Share of volume leaving terminals per mode of transport - Region Antwerp' refresh:every(1) {
chart "Share of volume leaving terminals per mode of transport - Region Antwerp" type: series {
RegionObserver sr <- nil;
ask RegionObserver {
if(self.name = "Antwerpen"){
sr <- self;
}
}
if(sr!=nil){
data "Share of road" value: sr.shareLeavingRoadQuantitiesRO * 100.0 color: divergingCol5 ;
data "Share of river" value: sr.shareLeavingRiverQuantitiesRO * 100.0 color: divergingCol6 ;
data "Share of maritime" value: sr.shareLeavingMaritimeQuantitiesRO * 100.0 color: divergingCol7 ;
}
else { // At step 0, RegionObserver are not initialized, so, sr = nil
data "Share of road" value: 0 color: divergingCol5 ;
data "Share of river" value: 0 color: divergingCol6 ;
data "Share of maritime" value: 0 color: divergingCol7 ;
}
}
}/**/
}
}
\ No newline at end of file
......@@ -252,6 +252,9 @@ global {
ask ((FinalConsignee as list)) inside self {
myself.fcs <+ self;
}
ask ((MaritimeRiverTerminal as list) + ((MaritimeRiverTerminal as list) as list) + (MaritimeTerminal as list)) inside self {
myself.terminals <+ self;
}
}
// We associate a provider to each LSPs according to the distance and the attractiveness
// LHAttractiveness <- 1.0;
......
......@@ -265,6 +265,37 @@ global {
sumMaritimeQuantities <- 0.0;
ask RegionObserver {
ask myself {
do updateROBuildingModeShare(myself);
do updateROTerminalModeShare(myself);
}
}
if(sumVehicle > 0) {
shareRoadVehicle <- sumRoadVehicle / sumVehicle;
shareRiverVehicle <- sumRiverVehicle / sumVehicle;
shareMaritimeVehicle <- sumMaritimeVehicle / sumVehicle;
}
else {
shareRoadVehicle <- 0.0;
shareRiverVehicle <- 0.0;
shareMaritimeVehicle <- 0.0;
}
if(sumQuantities > 0) {
shareRoadQuantities <- sumRoadQuantities / sumQuantities;
shareRiverQuantities <- sumRiverQuantities / sumQuantities;
shareMaritimeQuantities <- sumMaritimeQuantities / sumQuantities;
}
else {
shareRoadQuantities <- 0;
shareRiverQuantities <- 0;
shareMaritimeQuantities <- 0;
}
}
action updateROBuildingModeShare(RegionObserver ro) {
ask ro {
sumVehicleRO <- 0.0;
sumRoadVehicleRO <- 0.0;
sumRiverVehicleRO <- 0.0;
......@@ -344,27 +375,69 @@ global {
shareMaritimeQuantitiesRO <- 0.0;
}
}
}
if(sumVehicle > 0) {
shareRoadVehicle <- sumRoadVehicle / sumVehicle;
shareRiverVehicle <- sumRiverVehicle / sumVehicle;
shareMaritimeVehicle <- sumMaritimeVehicle / sumVehicle;
}
else {
shareRoadVehicle <- 0.0;
shareRiverVehicle <- 0.0;
shareMaritimeVehicle <- 0.0;
}
if(sumQuantities > 0) {
shareRoadQuantities <- sumRoadQuantities / sumQuantities;
shareRiverQuantities <- sumRiverQuantities / sumQuantities;
shareMaritimeQuantities <- sumMaritimeQuantities / sumQuantities;
}
else {
shareRoadQuantities <- 0;
shareRiverQuantities <- 0;
shareMaritimeQuantities <- 0;
action updateROTerminalModeShare(RegionObserver ro) {
ask ro {
sumLeavingVehicleRO <- 0.0;
sumLeavingRoadVehicleRO <- 0.0;
sumLeavingRiverVehicleRO <- 0.0;
sumLeavingMaritimeVehicleRO <- 0.0;
sumLeavingQuantitiesRO <- 0.0;
sumLeavingRoadQuantitiesRO <- 0.0;
sumLeavingRiverQuantitiesRO <- 0.0;
sumLeavingMaritimeQuantitiesRO <- 0.0;
int j <- 0;
loop while: j < length(terminals) {
Terminal t <- terminals[j];
sumLeavingVehicleRO <- sumLeavingVehicleRO + length(t.leavingVehicles_maritime) + length(t.leavingVehicles_road) + length(t.leavingVehicles_river);
sumLeavingRoadVehicleRO <- sumLeavingRoadVehicleRO + length(t.leavingVehicles_road);
sumLeavingRiverVehicleRO <- sumLeavingRiverVehicleRO + length(t.leavingVehicles_river);
sumLeavingMaritimeVehicleRO <- sumLeavingMaritimeVehicleRO + length(t.leavingVehicles_maritime);
ask t.leavingVehicles_maritime {
myself.sumLeavingQuantitiesRO <- myself.sumLeavingQuantitiesRO + self.currentTransportedVolume;
myself.sumLeavingMaritimeQuantitiesRO <- myself.sumLeavingMaritimeQuantitiesRO + self.currentTransportedVolume;
}
ask t.leavingVehicles_road {
myself.sumLeavingQuantitiesRO <- myself.sumLeavingQuantitiesRO + self.currentTransportedVolume;
myself.sumLeavingRoadQuantitiesRO <- myself.sumLeavingRoadQuantitiesRO + self.currentTransportedVolume;
}
ask t.leavingVehicles_river {
myself.sumLeavingQuantitiesRO <- myself.sumLeavingQuantitiesRO + self.currentTransportedVolume;
myself.sumLeavingRiverQuantitiesRO <- myself.sumLeavingRiverQuantitiesRO + self.currentTransportedVolume;
}
j <- j + 1;
}
if(sumLeavingVehicleRO > 0) {
shareLeavingRoadVehicleRO <- sumLeavingRoadVehicleRO / sumLeavingVehicleRO;
shareLeavingRiverVehicleRO <- sumLeavingRiverVehicleRO / sumLeavingVehicleRO;
shareLeavingMaritimeVehicleRO <- sumLeavingMaritimeVehicleRO / sumLeavingVehicleRO;
}
else {
shareLeavingRoadVehicleRO <- 0.0;
shareLeavingRiverVehicleRO <- 0.0;
shareLeavingMaritimeVehicleRO <- 0.0;
}
if(sumLeavingQuantitiesRO > 0) {
shareLeavingRoadQuantitiesRO <- sumLeavingRoadQuantitiesRO / sumLeavingQuantitiesRO;
shareLeavingRiverQuantitiesRO <- sumLeavingRiverQuantitiesRO / sumLeavingQuantitiesRO;
shareLeavingMaritimeQuantitiesRO <- sumLeavingMaritimeQuantitiesRO / sumLeavingQuantitiesRO;
}
else {
shareLeavingRoadQuantitiesRO <- 0.0;
shareLeavingRiverQuantitiesRO <- 0.0;
shareLeavingMaritimeQuantitiesRO <- 0.0;
}
}
}
......@@ -686,6 +759,12 @@ global {
save "" + ((time/3600.0) as int) + ";" + sr.sumRoadQuantitiesRO + ";" + sr.sumRiverQuantitiesRO + ";" + sr.sumMaritimeQuantitiesRO
to: CSVFolderPath + date_simu_starts + "_share_transport_mode_quantities_" + n + params + ".csv" type: text rewrite: false;
notfound <- false;
save "" + ((time/3600.0) as int) + ";" + sr.sumLeavingRoadVehicleRO + ";" + sr.sumLeavingRiverVehicleRO + ";" + sr.sumLeavingMaritimeVehicleRO
to: CSVFolderPath + date_simu_starts + "_share_leaving_vehicles_per_transport_mode_" + n + params + ".csv" type: text rewrite: false;
save "" + ((time/3600.0) as int) + ";" + sr.sumLeavingRoadQuantitiesRO + ";" + sr.sumLeavingRiverQuantitiesRO + ";" + sr.sumLeavingMaritimeQuantitiesRO
to: CSVFolderPath + date_simu_starts + "_share_leaving_quantities_pet_transport_mode_" + n + params + ".csv" type: text rewrite: false;
notfound <- false;
}
i <- i + 1;
}
......
......@@ -7,6 +7,7 @@ species RegionObserver {
string name;
list<Building> buildings <- [];
list<FinalConsignee> fcs <- [];
list<Terminal> terminals <- [];
// Share by number of vehicle
float sumRoadVehicleRO <- 0.0;
......@@ -26,6 +27,24 @@ species RegionObserver {
float shareMaritimeQuantitiesRO <- 0.0;
float sumQuantitiesRO;
// Share by number of vehicle leaving terminals
float sumLeavingRoadVehicleRO <- 0.0;
float shareLeavingRoadVehicleRO <- 0.0;
float sumLeavingRiverVehicleRO <- 0.0;
float shareLeavingRiverVehicleRO <- 0.0;
float sumLeavingMaritimeVehicleRO <- 0.0;
float shareLeavingMaritimeVehicleRO <- 0.0;
float sumLeavingVehicleRO;
// Share by quantity of goods leaving terminals
float sumLeavingRoadQuantitiesRO <- 0.0;
float shareLeavingRoadQuantitiesRO <- 0.0;
float sumLeavingRiverQuantitiesRO <- 0.0;
float shareLeavingRiverQuantitiesRO <- 0.0;
float sumLeavingMaritimeQuantitiesRO <- 0.0;
float shareLeavingMaritimeQuantitiesRO <- 0.0;
float sumLeavingQuantitiesRO;
// Share of FC by origin port
int nbAntwerp <- 0;
int nbHavre <- 0;
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment