Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
DALSim
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Thibaut DEMARE
DALSim
Commits
cdac9050
Commit
cdac9050
authored
6 years ago
by
ThibautDemare
Browse files
Options
Downloads
Patches
Plain Diff
Compute the share par transportation mode when goods leave terminals
parent
15e7bbe6
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
models/Experiments.gaml
+252
-0
252 additions, 0 deletions
models/Experiments.gaml
models/Main.gaml
+3
-0
3 additions, 0 deletions
models/Main.gaml
models/Observer.gaml
+98
-19
98 additions, 19 deletions
models/Observer.gaml
models/RegionObserver.gaml
+19
-0
19 additions, 0 deletions
models/RegionObserver.gaml
with
372 additions
and
19 deletions
models/Experiments.gaml
+
252
−
0
View file @
cdac9050
...
...
@@ -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
This diff is collapsed.
Click to expand it.
models/Main.gaml
+
3
−
0
View file @
cdac9050
...
...
@@ -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;
...
...
This diff is collapsed.
Click to expand it.
models/Observer.gaml
+
98
−
19
View file @
cdac9050
...
...
@@ -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;
}
...
...
This diff is collapsed.
Click to expand it.
models/RegionObserver.gaml
+
19
−
0
View file @
cdac9050
...
...
@@ -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;
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment