diff --git a/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/em_input.csv b/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/em_input.csv new file mode 100644 index 0000000000..b6a794fe65 --- /dev/null +++ b/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/em_input.csv @@ -0,0 +1,4 @@ +uuid;control_strategy;parent_em;id;operates_from;operates_until;operator +c3a7e9f5-b492-4c85-af2d-1e93f6a25443;self_optimization;;EM_HH_Bus_25;;; +f9dc7ce6-658c-4101-a12f-d58bb889286b;self_optimization;;EM_HH_Bus_81;;; +957938b7-0476-4fab-a1b3-6ce8615857b3;self_optimization;;EM_HH_Bus_110;;; diff --git a/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/ext_entity_mapping.csv b/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/ext_entity_mapping.csv new file mode 100644 index 0000000000..58ec9dcd0f --- /dev/null +++ b/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/ext_entity_mapping.csv @@ -0,0 +1,7 @@ +uuid,id,columnScheme,dataType +f9dc7ce6-658c-4101-a12f-d58bb889286b,EM_HH_Bus_81,p,result_participant +957938b7-0476-4fab-a1b3-6ce8615857b3,EM_HH_Bus_110,p,result_participant +c3a7e9f5-b492-4c85-af2d-1e93f6a25443,EM_HH_Bus_25,p,result_participant +f9dc7ce6-658c-4101-a12f-d58bb889286b,EM_HH_Bus_81/Schedule,p,input +957938b7-0476-4fab-a1b3-6ce8615857b3,EM_HH_Bus_110/Schedule,p,input +c3a7e9f5-b492-4c85-af2d-1e93f6a25443,EM_HH_Bus_25/Schedule,p,input \ No newline at end of file diff --git a/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/line_input.csv b/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/line_input.csv new file mode 100644 index 0000000000..f4ff92fbba --- /dev/null +++ b/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/line_input.csv @@ -0,0 +1,110 @@ +uuid;geo_position;id;length;node_a;node_b;olm_characteristic;operates_from;operates_until;operator;parallel_devices;type +bdbbb247-57b7-473b-9411-53fcf35032db;"{""type"":""LineString"",""coordinates"":[[11.8213,53.426],[11.8213,53.4257]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 27;0.0161277;093160c4-6482-4c58-b952-217c615e3ada;9cdb3115-cc00-4d61-bc33-442e8f30fb63;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +c48eeb2c-6858-4f96-9a90-20641cc0903d;"{""type"":""LineString"",""coordinates"":[[11.8214,53.4229],[11.8213,53.4225]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 35;0.0150703;002a4495-96e4-49c9-abbe-8fccb3e9c83e;b909fb45-b6ee-427f-afd7-e8a0ec7274c6;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +97e498ae-a4f7-4485-a703-b8c00d0a5e8a;"{""type"":""LineString"",""coordinates"":[[11.8198,53.4221],[11.8201,53.4225]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 8;0.0228449;b565ae3b-68f9-4bca-816d-9b0fc1c6b13f;a7725293-05fc-447f-bc12-38b689b0a956;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +f907f152-7bfe-4a17-a63f-adda500f6f0e;"{""type"":""LineString"",""coordinates"":[[11.8166,53.4241],[11.8184,53.4293]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 107;0.04;4749ab2b-4d96-4100-8081-73e77c797d6b;ea4a6507-e504-4542-be5f-1019719b2257;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +6bf14400-8f6c-41ef-b6a4-9e861a3ad08f;"{""type"":""LineString"",""coordinates"":[[11.8166,53.4241],[11.822,53.4294]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 3;0.030304;4749ab2b-4d96-4100-8081-73e77c797d6b;c5b6bfaf-1621-40a7-9c53-02cfb59c04d9;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +18b92b71-320d-4294-a47e-6715f1594755;"{""type"":""LineString"",""coordinates"":[[11.8196,53.4243],[11.8196,53.4247]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 102;0.0251089;f4da61e4-7600-4cd1-95b6-c70b56c049fc;e7908208-77b4-4059-806e-4857262992fc;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +4128307f-3e00-4da9-b629-b696b72165a4;"{""type"":""LineString"",""coordinates"":[[11.815,53.4289],[11.815,53.4293]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 28;0.0377768;8e809cf6-7e05-437c-89a6-f6ca135a403b;35748e60-3be8-4930-8a61-209fd5df1bec;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +92876b53-6bbc-48ff-ba5f-5f5c08313e4d;"{""type"":""LineString"",""coordinates"":[[11.815,53.4277],[11.815,53.4272]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 111;0.031;3e6be3ac-2b51-4080-b815-391313612fc7;78815cf6-70db-432c-96e6-87fe8cf67eee;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +4b557d0c-9992-48b1-b45e-26cccc01db03;"{""type"":""LineString"",""coordinates"":[[11.8191,53.4235],[11.8191,53.4231]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 90;0.00167204;f2724954-34d3-4ddf-b6b0-7a1531639990;2efac9b1-fb0d-4e08-bfac-501798826deb;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +0652d3e0-8c7c-4be2-9a41-00534aa9774b;"{""type"":""LineString"",""coordinates"":[[11.8191,53.4212],[11.8191,53.4209]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 94;0.00182131;02e63e81-2e62-4ef6-8fdb-0b0905a437b6;fd4bebb8-40ca-4eed-92c0-cdd10b86ac20;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +782d8c4c-accb-424b-91ae-9af1b5d4b1af;"{""type"":""LineString"",""coordinates"":[[11.8201,53.4225],[11.8201,53.4229]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 79;0.0338129;a7725293-05fc-447f-bc12-38b689b0a956;83da8d60-405a-45f7-9bb9-9d35607b7927;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +b7cac7a5-f528-45bd-8ced-a16234979e13;"{""type"":""LineString"",""coordinates"":[[11.8191,53.4239],[11.8191,53.4235]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 89;0.0111411;b5c1e826-63fd-4b0c-bec0-0c758389ef58;f2724954-34d3-4ddf-b6b0-7a1531639990;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +7ac1a715-e141-429a-8cfe-ff2badd41074;"{""type"":""LineString"",""coordinates"":[[11.8166,53.4257],[11.8174,53.4262]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 65;0.019;8726dc29-621e-4455-a541-cd88d7da457f;814f784b-687f-4dd5-8a91-c7772c916d46;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +77ae4f1e-9ecb-4dda-a5f2-ce7ae3f9bbec;"{""type"":""LineString"",""coordinates"":[[11.8213,53.4264],[11.8213,53.426]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 23;0.00488535;18b4157b-0e47-4c5a-adb8-ccae47372336;093160c4-6482-4c58-b952-217c615e3ada;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +6aaa54d9-d7b7-4adc-a85a-335cdf1393d6;"{""type"":""LineString"",""coordinates"":[[11.8162,53.4284],[11.8169,53.4289]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 40;0.036;6b2881ce-3965-4f5e-98a3-74eb47b0a7ca;a882e666-82d1-4ba6-87df-fc702fe06187;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +c85c107e-82c0-4002-acfa-d7000512a2ad;"{""type"":""LineString"",""coordinates"":[[11.8213,53.4274],[11.8213,53.4271]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 20;0.0182765;2b3d7fb8-0583-4d47-97b1-3b5f232fd462;7b81b518-00e0-4ff1-b4cf-876903958d7a;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +2ef5f888-4341-4eee-b505-ae07a9a60c8d;"{""type"":""LineString"",""coordinates"":[[11.8201,53.4236],[11.8201,53.4239]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 55;0.0259846;f713593a-3fd3-410a-ac08-74202d4f5798;80962bd3-a10f-4ed2-ba6a-3e802189939c;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +139ea4f9-9b7f-4825-8919-537a94ff4794;"{""type"":""LineString"",""coordinates"":[[11.8175,53.4277],[11.8174,53.4281]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 59;0.00160952;7f692039-eef6-45f6-9e30-b5983f6750a5;3f6c26dd-842b-4dee-b71f-4aa32e2654ff;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +68853808-8b09-4ff2-9c92-88ed1d78c639;"{""type"":""LineString"",""coordinates"":[[11.8213,53.4236],[11.8213,53.4232]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 33;0.0217875;3464496c-7dd4-41e9-ae0a-99ade0b51572;a966644c-37d5-4400-9fa0-725fd88586a8;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +91bec60c-2951-420c-a35e-2633119ee450;"{""type"":""LineString"",""coordinates"":[[11.8162,53.4277],[11.8162,53.4281]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 30;0.00820054;2d33314e-31db-4ad4-a898-2be5d56a896d;555cd075-0fe4-4a65-b027-f45cffa960d9;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +35ba0827-e27e-496e-b735-c778f3b03019;"{""type"":""LineString"",""coordinates"":[[11.8166,53.4241],[11.8213,53.4293]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 18;0.0139169;4749ab2b-4d96-4100-8081-73e77c797d6b;844c0b9c-058a-4228-a8c4-bf2defff6958;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +60efd159-72d6-4546-b245-8b8fc120a9f8;"{""type"":""LineString"",""coordinates"":[[11.817,53.4293],[11.8166,53.4241]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 26;0.098;85751c9b-3e5e-468a-9dc7-43775b0d4a6f;4749ab2b-4d96-4100-8081-73e77c797d6b;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +212b62aa-73c2-47af-95ec-00cad8d4a4f4;"{""type"":""LineString"",""coordinates"":[[11.8213,53.4222],[11.8214,53.4218]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 38;0.00992653;589bf32a-b361-4536-ae96-6d56d184eedb;3b86661a-187d-4aa6-bf37-2014789afc08;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +7e61def1-8414-40b3-8775-fad9124f4369;"{""type"":""LineString"",""coordinates"":[[11.8213,53.4282],[11.8213,53.4277]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 16;0.0164234;09285b78-9c18-4af7-9c7a-942cc868016f;3a557b4e-06b8-4f29-929f-81d95c42c897;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +f9b4c7dc-c199-4691-8c6d-1faf438cf336;"{""type"":""LineString"",""coordinates"":[[11.8221,53.429],[11.8221,53.4286]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 5;0.0143698;9644f198-e801-4545-87ee-a24e2a8039bd;6ee7ea93-ea9c-40cb-b79a-1c5f287c97a5;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +eebc456e-d11b-4b19-9100-cc1d8e91f926;"{""type"":""LineString"",""coordinates"":[[11.8166,53.4245],[11.8166,53.4249]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 71;0.00648856;7efabb8d-ba17-4487-96d9-5744b1fedf8a;7c35a794-f569-4a9c-acb0-d03647610086;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +8f4c4009-e1ed-4985-8095-729aa5dc8cdd;"{""type"":""LineString"",""coordinates"":[[11.8198,53.4192],[11.8198,53.4195]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 85;0.00737032;594d101c-3a05-45e3-a061-9189f3e848b7;af2b07ce-1a96-4b50-9e21-badf29eed519;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +20db47c8-d154-4ab2-ad65-caa4a37466d2;"{""type"":""LineString"",""coordinates"":[[11.8175,53.4257],[11.8174,53.4262]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 68;0.037;5f153bf6-4f25-41f1-8545-18fe6323bc49;814f784b-687f-4dd5-8a91-c7772c916d46;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +7d838003-cd6e-42fd-b75a-eaa354c3993b;"{""type"":""LineString"",""coordinates"":[[11.8191,53.4216],[11.8191,53.4212]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 93;0.0043578;8f53645e-1f28-4eb1-807f-eb2a473f9d4c;02e63e81-2e62-4ef6-8fdb-0b0905a437b6;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +a92013e1-78b7-4447-a505-f25fffbf56f2;"{""type"":""LineString"",""coordinates"":[[11.8174,53.4262],[11.8175,53.4265]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 48;0.0118531;814f784b-687f-4dd5-8a91-c7772c916d46;94fe96b1-f36a-4edd-a107-4ff0376f1066;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +690f8f61-5cc7-448e-8971-a516f784bf11;"{""type"":""LineString"",""coordinates"":[[11.8196,53.4293],[11.8166,53.4241]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 106;0.0131451;20ad9754-e966-4ad1-9541-f968c207f3df;4749ab2b-4d96-4100-8081-73e77c797d6b;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +6a00d582-32b1-4581-bdd1-a638ca279597;"{""type"":""LineString"",""coordinates"":[[11.815,53.4272],[11.815,53.4269]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 112;0.028;78815cf6-70db-432c-96e6-87fe8cf67eee;ab8c8f6c-e7a2-4b81-a0d7-5f13789267a2;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +1d5877c1-31cd-4ee8-b0dd-667fa4fffb8a;"{""type"":""LineString"",""coordinates"":[[11.8213,53.4277],[11.8213,53.4274]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 17;0.00286133;3a557b4e-06b8-4f29-929f-81d95c42c897;2b3d7fb8-0583-4d47-97b1-3b5f232fd462;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +a15cd6a4-4b22-434f-be9b-ad2abe6e538c;"{""type"":""LineString"",""coordinates"":[[11.815,53.4289],[11.815,53.4285]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 108;0.033;8e809cf6-7e05-437c-89a6-f6ca135a403b;88cf719a-92df-4dfd-9a83-f84330e28fe0;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +2bd81511-4f19-4374-8ac5-96c2b19eda64;"{""type"":""LineString"",""coordinates"":[[11.8191,53.4223],[11.8191,53.422]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 52;0.00980013;c7e48384-5699-4a38-a887-7e15a9145202;c6dac3ab-f44f-4b87-800c-0f4da64673f1;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +beee40ad-aca3-490f-87d5-a6dfc4bb76e3;"{""type"":""LineString"",""coordinates"":[[11.815,53.4293],[11.8166,53.4241]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 39;0.09;35748e60-3be8-4930-8a61-209fd5df1bec;4749ab2b-4d96-4100-8081-73e77c797d6b;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +96b06f87-7905-4d12-99d8-1ed330050659;"{""type"":""LineString"",""coordinates"":[[11.8198,53.4203],[11.8197,53.4207]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 12;0.00473835;5596da2f-ca32-4ad3-81da-1ffa17cd3d7b;839ff0f4-93db-42ec-a928-bbc448b6cf5c;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +e66890ef-ec02-407f-a5bb-ce32128e7490;"{""type"":""LineString"",""coordinates"":[[11.8162,53.4281],[11.8162,53.4284]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 41;0.00828244;555cd075-0fe4-4a65-b027-f45cffa960d9;6b2881ce-3965-4f5e-98a3-74eb47b0a7ca;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +015b0337-98bd-40d4-97d3-13a0d1da88ee;"{""type"":""LineString"",""coordinates"":[[11.8213,53.425],[11.8214,53.4246]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 84;0.0489789;58b551b6-83bd-4f1c-8d9c-8c9a7f638c0b;a9288e77-2919-4db6-89eb-9737bd07f111;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +f9e6b2f1-f8fb-4763-a1d0-36d06170fea0;"{""type"":""LineString"",""coordinates"":[[11.8213,53.429],[11.8213,53.4286]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 98;0.0144283;16091b6d-f1ea-4a07-9ad4-30d595aba68d;1403edf9-e47c-4705-8563-83bcd639482e;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +f270d6b5-7c94-4397-8ab0-7c39c888d726;"{""type"":""LineString"",""coordinates"":[[11.8175,53.4265],[11.8175,53.427]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 58;0.0036937;94fe96b1-f36a-4edd-a107-4ff0376f1066;80b8d1f8-7e83-421d-a95a-c193fc35f4f7;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +af8c65aa-cfd6-434a-8512-2d80106a2f2c;"{""type"":""LineString"",""coordinates"":[[11.8195,53.426],[11.8195,53.4264]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 31;0.00626899;9f1baf4e-12e1-41d1-8efc-81cfc78f1957;b8e95bf0-3ba8-4d53-a0bf-a3720fb785fb;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +fe28e831-6405-4dfe-987b-d688367694f1;"{""type"":""LineString"",""coordinates"":[[11.8196,53.4247],[11.8195,53.425]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 104;0.00221503;e7908208-77b4-4059-806e-4857262992fc;29516ae3-6676-4797-99c1-1f0a32b989d8;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +eac56d69-5500-4261-9690-adb16c867485;"{""type"":""LineString"",""coordinates"":[[11.8191,53.4231],[11.8191,53.4227]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 92;0.0149219;2efac9b1-fb0d-4e08-bfac-501798826deb;15a86f7d-fb73-49a4-af6a-25b14122378d;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +183f3976-48ca-42b2-9af9-7998436fac5b;"{""type"":""LineString"",""coordinates"":[[11.8196,53.4289],[11.8196,53.4293]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 105;0.00721947;47246a84-ad0e-4d04-9d98-1c9cd5d363c1;20ad9754-e966-4ad1-9541-f968c207f3df;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +7feef458-03f3-4d23-b3a2-e6f1035398c4;"{""type"":""LineString"",""coordinates"":[[11.8213,53.4243],[11.8213,53.4239]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 29;0.0204277;3fcb94e3-7781-4d83-9030-d9853822e78e;d0bfabdb-0e83-423b-a20a-ab9197c4284e;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +592cd979-16c9-43d8-a311-8ac938aa5d03;"{""type"":""LineString"",""coordinates"":[[11.8174,53.4262],[11.8182,53.4257]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 47;0.0181601;814f784b-687f-4dd5-8a91-c7772c916d46;c86d6361-4159-4787-b5f4-e41dcaa95195;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +684146e5-3b58-43b4-9589-45325ab1c0bc;"{""type"":""LineString"",""coordinates"":[[11.8213,53.4257],[11.8213,53.4253]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 24;0.0102233;9cdb3115-cc00-4d61-bc33-442e8f30fb63;a432b8ce-0462-478b-83e7-3107cd2e909c;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +d9f9ee76-b016-4588-ac6d-46681894ada7;"{""type"":""LineString"",""coordinates"":[[11.8198,53.4188],[11.8198,53.4192]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 74;0.00421724;952c6b04-0d02-4ea2-a6cc-bb44fbbe4e52;594d101c-3a05-45e3-a061-9189f3e848b7;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +1f7e9cae-460e-47db-8cb8-da5d9f695fd8;"{""type"":""LineString"",""coordinates"":[[11.8197,53.4207],[11.8198,53.4211]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 13;0.00987733;839ff0f4-93db-42ec-a928-bbc448b6cf5c;27b84da5-478e-4a05-8fe7-a9f800db5eff;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +f3a592d0-0fd7-42ea-b928-f39473b419aa;"{""type"":""LineString"",""coordinates"":[[11.8214,53.4246],[11.8213,53.4243]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 10;0.0344866;a9288e77-2919-4db6-89eb-9737bd07f111;3fcb94e3-7781-4d83-9030-d9853822e78e;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +f505bff9-0803-415f-a765-9da981ff6024;"{""type"":""LineString"",""coordinates"":[[11.8195,53.4264],[11.8195,53.4268]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 43;0.00839819;b8e95bf0-3ba8-4d53-a0bf-a3720fb785fb;34031e92-3444-47d5-94ae-cceeb5d96bb2;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +c6501262-2e05-462b-8872-445d2aa1cab8;"{""type"":""LineString"",""coordinates"":[[11.8195,53.4272],[11.8195,53.4275]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 99;0.0157523;120eaa58-a500-4ae2-a86a-56a40b931ec1;9d136a6b-5fdc-44ed-a5ed-599a55281024;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +caac4b4b-4871-4e20-994c-6517931546cb;"{""type"":""LineString"",""coordinates"":[[11.8201,53.4229],[11.8201,53.4232]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 91;0.0220129;83da8d60-405a-45f7-9bb9-9d35607b7927;24b63115-12eb-4e77-b9ef-ca474fed960f;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +e9721561-53c0-45cc-a8ed-28861ef9dc66;"{""type"":""LineString"",""coordinates"":[[11.8198,53.4216],[11.8198,53.4221]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 7;0.0333523;883edf38-9a18-4f61-981a-691aaf436cc7;b565ae3b-68f9-4bca-816d-9b0fc1c6b13f;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +ab143df6-d050-47b6-911a-93e462d928ac;"{""type"":""LineString"",""coordinates"":[[11.8173,53.4234],[11.8166,53.4238]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 73;0.0287121;e68a088d-cf1a-40b7-9b1a-e0933352f4e6;4129e079-6712-4275-911c-36729d698c42;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +ab7ab785-36ba-4da1-b176-a7c636cb1372;"{""type"":""LineString"",""coordinates"":[[11.8213,53.4267],[11.8213,53.4264]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 22;0.0102382;dc54bd8a-b7d8-4e99-adb0-d6ee5084241c;18b4157b-0e47-4c5a-adb8-ccae47372336;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +1ae90a03-52a3-40ef-8e06-4ba01888aa5c;"{""type"":""LineString"",""coordinates"":[[11.816,53.4222],[11.816,53.4227]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 44;0.00743191;62d603c3-f306-40b3-a665-ba9892d226f0;3faac527-0ff3-44a7-9e4f-24a41940da90;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +20be9235-f4db-4753-9fa1-223c8519fcd3;"{""type"":""LineString"",""coordinates"":[[11.8175,53.4253],[11.8175,53.4257]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 66;0.00791441;73e7a7e8-2154-46ea-9727-a4916af3570c;5f153bf6-4f25-41f1-8545-18fe6323bc49;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +558e1545-a944-419a-9153-83caa09e1a3c;"{""type"":""LineString"",""coordinates"":[[11.8162,53.4273],[11.8162,53.4277]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 42;0.00357726;0d6ef8f6-0ba1-4fa7-8e63-e55cee12b165;2d33314e-31db-4ad4-a898-2be5d56a896d;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +38d60cf7-6099-4bc0-a616-0f0b66c70c9a;"{""type"":""LineString"",""coordinates"":[[11.8201,53.4232],[11.8201,53.4236]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 67;0.0179092;24b63115-12eb-4e77-b9ef-ca474fed960f;f713593a-3fd3-410a-ac08-74202d4f5798;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +e74dbbe9-948f-4056-8134-fd1d9d39e773;"{""type"":""LineString"",""coordinates"":[[11.8196,53.4253],[11.8196,53.4257]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 86;0.0190003;03b2aa45-84f6-48c0-9dab-427e046a5672;79e19265-08e8-407f-ae95-2f78e344d3a4;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +24c0dc1c-2e99-46ed-a52b-5a7aae7c9afb;"{""type"":""LineString"",""coordinates"":[[11.8166,53.4249],[11.8166,53.4253]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 72;0.00189914;7c35a794-f569-4a9c-acb0-d03647610086;50cac08e-bf24-4526-9466-53ca5edccd15;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +41a72cb2-f037-4196-a248-2b18a578db50;"{""type"":""LineString"",""coordinates"":[[11.816,53.421],[11.816,53.4214]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 78;0.00156586;98c14f60-e196-4f12-903b-8485f1eacb16;ca0b9e34-ddc8-405e-86a4-ab939626c4a2;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +e2919117-f70a-4b32-a5ab-f077fe0a84ef;"{""type"":""LineString"",""coordinates"":[[11.8166,53.4253],[11.8166,53.4257]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 70;0.00263875;50cac08e-bf24-4526-9466-53ca5edccd15;8726dc29-621e-4455-a541-cd88d7da457f;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +7d3ee5e1-1749-4e43-afeb-4ccf5f431312;"{""type"":""LineString"",""coordinates"":[[11.8196,53.4282],[11.8196,53.4286]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 103;0.011354;a3ed5af5-1fcb-4fce-af0f-708d3d604124;31e6e197-719d-4aaf-8ca5-ab9e7549390e;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +cbba4a6b-27d1-4724-a193-134af220a57d;"{""type"":""LineString"",""coordinates"":[[11.8182,53.4257],[11.8182,53.4254]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 49;0.018118;c86d6361-4159-4787-b5f4-e41dcaa95195;c6c20ab1-16fb-4f82-8017-273022da8bb0;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +b84fad90-182c-4ac1-b77d-394f39024ffc;"{""type"":""LineString"",""coordinates"":[[11.8196,53.4286],[11.8196,53.4289]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 19;0.0115943;31e6e197-719d-4aaf-8ca5-ab9e7549390e;47246a84-ad0e-4d04-9d98-1c9cd5d363c1;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +6c87a571-9d8b-4df9-bd86-cde7954bee28;"{""type"":""LineString"",""coordinates"":[[11.8213,53.4271],[11.8213,53.4267]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 21;0.00282037;7b81b518-00e0-4ff1-b4cf-876903958d7a;dc54bd8a-b7d8-4e99-adb0-d6ee5084241c;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +536ef1a2-b988-4474-a5d4-1254598c4716;"{""type"":""LineString"",""coordinates"":[[11.8191,53.4227],[11.8191,53.4223]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 82;0.00544392;15a86f7d-fb73-49a4-af6a-25b14122378d;c7e48384-5699-4a38-a887-7e15a9145202;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +c0c99b3a-1c61-47b8-931d-571d9494d98f;"{""type"":""LineString"",""coordinates"":[[11.8166,53.4241],[11.8166,53.4245]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 51;0.0182324;5682ac05-7336-4ebc-a5d1-3b69c79fb3b1;7efabb8d-ba17-4487-96d9-5744b1fedf8a;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +d3366635-447e-4d45-b839-7a7561f869a3;"{""type"":""LineString"",""coordinates"":[[11.822,53.4294],[11.8221,53.429]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 4;0.0141339;c5b6bfaf-1621-40a7-9c53-02cfb59c04d9;9644f198-e801-4545-87ee-a24e2a8039bd;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +932dd0d7-2051-4a3a-a0e3-489210d3b763;"{""type"":""LineString"",""coordinates"":[[11.8169,53.4289],[11.817,53.4293]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 57;0.0219657;a882e666-82d1-4ba6-87df-fc702fe06187;85751c9b-3e5e-468a-9dc7-43775b0d4a6f;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +e718d253-34ea-4c00-a653-80ac0af2934e;"{""type"":""LineString"",""coordinates"":[[11.8213,53.4293],[11.8213,53.429]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 11;0.00557129;844c0b9c-058a-4228-a8c4-bf2defff6958;16091b6d-f1ea-4a07-9ad4-30d595aba68d;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +3ac954bf-5c1e-428a-9da7-37331f53d8fe;"{""type"":""LineString"",""coordinates"":[[11.8175,53.4248],[11.8175,53.4253]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 69;0.0017759;0d6c3f2b-5296-4ec1-995c-b150e72f035f;73e7a7e8-2154-46ea-9727-a4916af3570c;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +7e9a0440-2a62-4daf-a4ab-e9f14f6cfd77;"{""type"":""LineString"",""coordinates"":[[11.8166,53.4238],[11.8166,53.4234]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 53;0.0337731;4129e079-6712-4275-911c-36729d698c42;57b40047-4f9d-46bb-bf19-c0a86bbd4f5b;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +10a2050e-173b-43a7-91a0-157cee5c900d;"{""type"":""LineString"",""coordinates"":[[11.8196,53.4257],[11.8195,53.426]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 87;0.00654022;79e19265-08e8-407f-ae95-2f78e344d3a4;9f1baf4e-12e1-41d1-8efc-81cfc78f1957;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +0dfd30a5-394e-49ff-95e9-50e73bf2604c;"{""type"":""LineString"",""coordinates"":[[11.8213,53.4232],[11.8214,53.4229]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 34;0.0199334;a966644c-37d5-4400-9fa0-725fd88586a8;002a4495-96e4-49c9-abbe-8fccb3e9c83e;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +847934a0-e2b7-4caf-bb40-2e6af5bcb0ab;"{""type"":""LineString"",""coordinates"":[[11.8166,53.4238],[11.8166,53.4241]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 50;0.0101795;4129e079-6712-4275-911c-36729d698c42;5682ac05-7336-4ebc-a5d1-3b69c79fb3b1;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +2daf9021-eb24-4d0c-bced-00e713a65b3a;"{""type"":""LineString"",""coordinates"":[[11.8213,53.4225],[11.8213,53.4222]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 36;0.010188;b909fb45-b6ee-427f-afd7-e8a0ec7274c6;589bf32a-b361-4536-ae96-6d56d184eedb;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +2f1b02a3-5a58-4723-ab8f-827118a4c611;"{""type"":""LineString"",""coordinates"":[[11.8213,53.4239],[11.8213,53.4236]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 32;0.0188563;d0bfabdb-0e83-423b-a20a-ab9197c4284e;3464496c-7dd4-41e9-ae0a-99ade0b51572;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +a5e9b6b0-2afc-49b0-8aad-705410b823c2;"{""type"":""LineString"",""coordinates"":[[11.815,53.4285],[11.815,53.4281]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 109;0.027;88cf719a-92df-4dfd-9a83-f84330e28fe0;d38d936a-9c05-4bdc-8331-418fef27f492;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +ae82a1c1-9790-44d1-8dab-52d75c7b79ce;"{""type"":""LineString"",""coordinates"":[[11.8213,53.4286],[11.8213,53.4282]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 6;0.0050064;1403edf9-e47c-4705-8563-83bcd639482e;09285b78-9c18-4af7-9c7a-942cc868016f;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +e642eafb-2b6e-4b78-80b8-1ab15db8cfeb;"{""type"":""LineString"",""coordinates"":[[11.8196,53.4278],[11.8196,53.4282]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 101;0.0153312;7dc43c81-9a61-45a0-9745-800a28bf4a9d;a3ed5af5-1fcb-4fce-af0f-708d3d604124;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +41a4c5e5-7b54-46a8-b6b6-d7b5861a251c;"{""type"":""LineString"",""coordinates"":[[11.8198,53.4195],[11.8198,53.4199]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 96;0.0010841;af2b07ce-1a96-4b50-9e21-badf29eed519;215eaa45-82c3-49c7-a60f-4fa13215de05;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +44821cfc-7670-4f28-8941-70e9345cb069;"{""type"":""LineString"",""coordinates"":[[11.8201,53.4225],[11.8203,53.4221]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 15;0.027677;a7725293-05fc-447f-bc12-38b689b0a956;eae8a04c-44f2-4da3-95f6-cae48f85737c;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +d665e8c6-40fb-4608-97fb-99a4cf52560e;"{""type"":""LineString"",""coordinates"":[[11.815,53.4281],[11.815,53.4277]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 110;0.041;d38d936a-9c05-4bdc-8331-418fef27f492;3e6be3ac-2b51-4080-b815-391313612fc7;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +2f37bd36-f356-4d29-81c7-dd9c2fba5e7d;"{""type"":""LineString"",""coordinates"":[[11.8166,53.4234],[11.8166,53.423]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 45;0.00223482;57b40047-4f9d-46bb-bf19-c0a86bbd4f5b;5b73ded9-3ca4-4f18-a2ab-c27b9a3dcf9d;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +bcccf0b5-e0e3-4cc7-82bb-262ebc19415e;"{""type"":""LineString"",""coordinates"":[[11.8169,53.4289],[11.8168,53.4285]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 56;0.039;a882e666-82d1-4ba6-87df-fc702fe06187;c41ebab8-16a0-4a3a-b4af-26073932d462;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +3685f389-6822-4522-a633-74265b67eaee;"{""type"":""LineString"",""coordinates"":[[11.816,53.4227],[11.816,53.423]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 76;0.00185168;3faac527-0ff3-44a7-9e4f-24a41940da90;2575f527-1f4e-45e2-bed2-4a5427f122e0;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +48347702-9e58-49f3-a7de-72024d4b296c;"{""type"":""LineString"",""coordinates"":[[11.8198,53.4199],[11.8198,53.4203]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 2;0.00995493;215eaa45-82c3-49c7-a60f-4fa13215de05;5596da2f-ca32-4ad3-81da-1ffa17cd3d7b;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +ec2a73ea-50ba-4187-b8b0-a5046cf6b632;"{""type"":""LineString"",""coordinates"":[[11.8195,53.425],[11.8196,53.4253]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 83;0.00510961;29516ae3-6676-4797-99c1-1f0a32b989d8;03b2aa45-84f6-48c0-9dab-427e046a5672;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +d1940183-f7bb-42df-b8ff-63ac7aff0b1d;"{""type"":""LineString"",""coordinates"":[[11.8198,53.4211],[11.8198,53.4216]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 9;0.00439896;27b84da5-478e-4a05-8fe7-a9f800db5eff;883edf38-9a18-4f61-981a-691aaf436cc7;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +dd618e3f-9ef9-4e4b-b632-737d79c4d8c3;"{""type"":""LineString"",""coordinates"":[[11.8175,53.427],[11.8174,53.4273]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 62;0.00124645;80b8d1f8-7e83-421d-a95a-c193fc35f4f7;8ace5c2b-584a-4015-990f-6f1e14de4ddb;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +ed80666a-cf86-404a-b3a7-ad49be1cd40c;"{""type"":""LineString"",""coordinates"":[[11.816,53.423],[11.816,53.4234]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 77;0.00232237;2575f527-1f4e-45e2-bed2-4a5427f122e0;5d3bcf55-0520-43ff-8d63-3d0eb421e442;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +444615ed-26f2-45a7-8b5d-213c72e83a4f;"{""type"":""LineString"",""coordinates"":[[11.8201,53.4239],[11.8196,53.4243]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 95;0.0281251;80962bd3-a10f-4ed2-ba6a-3e802189939c;f4da61e4-7600-4cd1-95b6-c70b56c049fc;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +05ebbc17-61bc-4810-ae19-9ee04d7ce8d0;"{""type"":""LineString"",""coordinates"":[[11.8175,53.4285],[11.8169,53.4289]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 54;0.0173762;30b2ce2d-41dd-4d1d-866d-47abd24bfc3e;a882e666-82d1-4ba6-87df-fc702fe06187;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +caf90323-aad2-496e-a0e3-a4ba7c9a481c;"{""type"":""LineString"",""coordinates"":[[11.8174,53.4273],[11.8175,53.4277]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 64;0.00314803;8ace5c2b-584a-4015-990f-6f1e14de4ddb;7f692039-eef6-45f6-9e30-b5983f6750a5;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +60b400db-b048-4bed-be29-8abc18780d10;"{""type"":""LineString"",""coordinates"":[[11.816,53.4206],[11.816,53.421]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 14;0.045296;d6dbb0ae-13c9-438e-93b3-b6c63a0708df;98c14f60-e196-4f12-903b-8485f1eacb16;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +cf13634d-abd2-465d-8839-c95a54af7a80;"{""type"":""LineString"",""coordinates"":[[11.816,53.4214],[11.816,53.4218]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 80;0.0101988;ca0b9e34-ddc8-405e-86a4-ab939626c4a2;43040a39-8b6c-401f-9dfd-82b42aa6dec6;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +30044e09-a0f8-417d-a949-afcfa940f671;"{""type"":""LineString"",""coordinates"":[[11.8213,53.4253],[11.8213,53.425]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 25;0.0124821;a432b8ce-0462-478b-83e7-3107cd2e909c;58b551b6-83bd-4f1c-8d9c-8c9a7f638c0b;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +fe71fe2b-8dd0-4942-b0b5-d241e095b912;"{""type"":""LineString"",""coordinates"":[[11.8195,53.4268],[11.8195,53.4272]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 97;0.0032723;34031e92-3444-47d5-94ae-cceeb5d96bb2;120eaa58-a500-4ae2-a86a-56a40b931ec1;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +66e44163-7091-4f1b-991c-64108e2238f6;"{""type"":""LineString"",""coordinates"":[[11.8196,53.4243],[11.8191,53.4239]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 88;0.0185855;f4da61e4-7600-4cd1-95b6-c70b56c049fc;b5c1e826-63fd-4b0c-bec0-0c758389ef58;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +82bac681-169f-48d8-9842-fd69d3adbfe0;"{""type"":""LineString"",""coordinates"":[[11.816,53.4234],[11.8166,53.4238]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 75;0.0109137;5d3bcf55-0520-43ff-8d63-3d0eb421e442;4129e079-6712-4275-911c-36729d698c42;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +74a5dc42-e689-490f-a611-ae7c3767f01b;"{""type"":""LineString"",""coordinates"":[[11.816,53.4218],[11.816,53.4222]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 81;0.0100396;43040a39-8b6c-401f-9dfd-82b42aa6dec6;62d603c3-f306-40b3-a665-ba9892d226f0;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +0eedb3d0-cedc-4798-b42e-d8e8ef646b82;"{""type"":""LineString"",""coordinates"":[[11.8195,53.4275],[11.8196,53.4278]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 100;0.0129061;9d136a6b-5fdc-44ed-a5ed-599a55281024;7dc43c81-9a61-45a0-9745-800a28bf4a9d;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +b44446fd-2125-4c7b-850e-b0f3d6c8b110;"{""type"":""LineString"",""coordinates"":[[11.8174,53.4281],[11.8175,53.4285]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 61;0.014766;3f6c26dd-842b-4dee-b71f-4aa32e2654ff;30b2ce2d-41dd-4d1d-866d-47abd24bfc3e;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +31c914bc-dd9e-4825-9b4b-b5fc1b971e0d;"{""type"":""LineString"",""coordinates"":[[11.8166,53.423],[11.8166,53.4227]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 46;0.00683612;5b73ded9-3ca4-4f18-a2ab-c27b9a3dcf9d;ad30322c-0c99-4669-8e4b-25265087a66d;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e +e7ac7023-f4e3-460d-8d02-4c9c444d2e18;"{""type"":""LineString"",""coordinates"":[[11.8191,53.422],[11.8191,53.4216]],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Line 63;0.0149947;c6dac3ab-f44f-4b87-800c-0f4da64673f1;8f53645e-1f28-4eb1-807f-eb2a473f9d4c;"olm:{(0.0,1.0)}";;;;1;9a8e9b63-af21-4c1b-8db7-fc2924f9610e diff --git a/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/line_type_input.csv b/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/line_type_input.csv new file mode 100644 index 0000000000..d7786c38cd --- /dev/null +++ b/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/line_type_input.csv @@ -0,0 +1,2 @@ +uuid;b;g;i_max;id;r;v_rated;x +9a8e9b63-af21-4c1b-8db7-fc2924f9610e;273.31899999999996;0.0;357.0;NAYY 4x240SE 0.6/1kV;0.1267;0.4;0.0797965 diff --git a/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/load_input.csv b/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/load_input.csv new file mode 100644 index 0000000000..55e4abf008 --- /dev/null +++ b/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/load_input.csv @@ -0,0 +1,4 @@ +uuid;cos_phi_rated;dsm;e_cons_annual;id;load_profile;node;operates_from;operates_until;operator;q_characteristics;s_rated;em +c3434742-e4f0-49e5-baa7-c1e3045c732c;0.93;false;0.0;LV5.201 Load 64;h0;dc54bd8a-b7d8-4e99-adb0-d6ee5084241c;;;;"cosPhiFixed:{(0.0,0.93)}";0.2;f9dc7ce6-658c-4101-a12f-d58bb889286b +fd2e19b6-d5e3-4776-9456-8787a2160d9d;0.93;false;0.0;LV5.201 Load 74;h0;43040a39-8b6c-401f-9dfd-82b42aa6dec6;;;;"cosPhiFixed:{(0.0,0.93)}";1.1;c3a7e9f5-b492-4c85-af2d-1e93f6a25443 +98c1a2ab-bd09-4c77-a389-d088aed894b1;0.93;false;0.0;LV5.201 Load 102;h0;3e6be3ac-2b51-4080-b815-391313612fc7;;;;"cosPhiFixed:{(0.0,0.93)}";5.3;957938b7-0476-4fab-a1b3-6ce8615857b3 diff --git a/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/node_input.csv b/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/node_input.csv new file mode 100644 index 0000000000..ab9f9335ca --- /dev/null +++ b/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/node_input.csv @@ -0,0 +1,112 @@ +uuid;geo_position;id;operates_from;operates_until;operator;slack;subnet;v_rated;v_target;volt_lvl +16091b6d-f1ea-4a07-9ad4-30d595aba68d;"{""type"":""Point"",""coordinates"":[11.8213,53.429],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 26;;;;false;2;0.4;1.0;Niederspannung +27b84da5-478e-4a05-8fe7-a9f800db5eff;"{""type"":""Point"",""coordinates"":[11.8198,53.4211],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 7;;;;false;2;0.4;1.0;Niederspannung +7f692039-eef6-45f6-9e30-b5983f6750a5;"{""type"":""Point"",""coordinates"":[11.8175,53.4277],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 54;;;;false;2;0.4;1.0;Niederspannung +20ad9754-e966-4ad1-9541-f968c207f3df;"{""type"":""Point"",""coordinates"":[11.8196,53.4293],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 84;;;;false;2;0.4;1.0;Niederspannung +98c14f60-e196-4f12-903b-8485f1eacb16;"{""type"":""Point"",""coordinates"":[11.816,53.421],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 29;;;;false;2;0.4;1.0;Niederspannung +09285b78-9c18-4af7-9c7a-942cc868016f;"{""type"":""Point"",""coordinates"":[11.8213,53.4282],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 58;;;;false;2;0.4;1.0;Niederspannung +0d6ef8f6-0ba1-4fa7-8e63-e55cee12b165;"{""type"":""Point"",""coordinates"":[11.8162,53.4273],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 103;;;;false;2;0.4;1.0;Niederspannung +43040a39-8b6c-401f-9dfd-82b42aa6dec6;"{""type"":""Point"",""coordinates"":[11.816,53.4218],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 25;;;;false;2;0.4;1.0;Niederspannung +dc54bd8a-b7d8-4e99-adb0-d6ee5084241c;"{""type"":""Point"",""coordinates"":[11.8213,53.4267],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 81;;;;false;2;0.4;1.0;Niederspannung +2575f527-1f4e-45e2-bed2-4a5427f122e0;"{""type"":""Point"",""coordinates"":[11.816,53.423],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 3;;;;false;2;0.4;1.0;Niederspannung +30b2ce2d-41dd-4d1d-866d-47abd24bfc3e;"{""type"":""Point"",""coordinates"":[11.8175,53.4285],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 34;;;;false;2;0.4;1.0;Niederspannung +589bf32a-b361-4536-ae96-6d56d184eedb;"{""type"":""Point"",""coordinates"":[11.8213,53.4222],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 101;;;;false;2;0.4;1.0;Niederspannung +555cd075-0fe4-4a65-b027-f45cffa960d9;"{""type"":""Point"",""coordinates"":[11.8162,53.4281],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 31;;;;false;2;0.4;1.0;Niederspannung +62d603c3-f306-40b3-a665-ba9892d226f0;"{""type"":""Point"",""coordinates"":[11.816,53.4222],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 55;;;;false;2;0.4;1.0;Niederspannung +215eaa45-82c3-49c7-a60f-4fa13215de05;"{""type"":""Point"",""coordinates"":[11.8198,53.4199],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 24;;;;false;2;0.4;1.0;Niederspannung +f4da61e4-7600-4cd1-95b6-c70b56c049fc;"{""type"":""Point"",""coordinates"":[11.8196,53.4243],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 76;;;;false;2;0.4;1.0;Niederspannung +73e7a7e8-2154-46ea-9727-a4916af3570c;"{""type"":""Point"",""coordinates"":[11.8175,53.4253],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 18;;;;false;2;0.4;1.0;Niederspannung +85751c9b-3e5e-468a-9dc7-43775b0d4a6f;"{""type"":""Point"",""coordinates"":[11.817,53.4293],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 51;;;;false;2;0.4;1.0;Niederspannung +093160c4-6482-4c58-b952-217c615e3ada;"{""type"":""Point"",""coordinates"":[11.8213,53.426],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 68;;;;false;2;0.4;1.0;Niederspannung +79e19265-08e8-407f-ae95-2f78e344d3a4;"{""type"":""Point"",""coordinates"":[11.8196,53.4257],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 28;;;;false;2;0.4;1.0;Niederspannung +a966644c-37d5-4400-9fa0-725fd88586a8;"{""type"":""Point"",""coordinates"":[11.8213,53.4232],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 59;;;;false;2;0.4;1.0;Niederspannung +952c6b04-0d02-4ea2-a6cc-bb44fbbe4e52;"{""type"":""Point"",""coordinates"":[11.8198,53.4188],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 94;;;;false;2;0.4;1.0;Niederspannung +c6c20ab1-16fb-4f82-8017-273022da8bb0;"{""type"":""Point"",""coordinates"":[11.8182,53.4254],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 62;;;;false;2;0.4;1.0;Niederspannung +e68a088d-cf1a-40b7-9b1a-e0933352f4e6;"{""type"":""Point"",""coordinates"":[11.8173,53.4234],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 67;;;;false;2;0.4;1.0;Niederspannung +8f53645e-1f28-4eb1-807f-eb2a473f9d4c;"{""type"":""Point"",""coordinates"":[11.8191,53.4216],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 86;;;;false;2;0.4;1.0;Niederspannung +0d6c3f2b-5296-4ec1-995c-b150e72f035f;"{""type"":""Point"",""coordinates"":[11.8175,53.4248],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 80;;;;false;2;0.4;1.0;Niederspannung +ea4a6507-e504-4542-be5f-1019719b2257;"{""type"":""Point"",""coordinates"":[11.8184,53.4293],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 111;;;;false;2;0.4;1.0;Niederspannung +9644f198-e801-4545-87ee-a24e2a8039bd;"{""type"":""Point"",""coordinates"":[11.8221,53.429],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 39;;;;false;2;0.4;1.0;Niederspannung +a9288e77-2919-4db6-89eb-9737bd07f111;"{""type"":""Point"",""coordinates"":[11.8214,53.4246],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 63;;;;false;2;0.4;1.0;Niederspannung +d6dbb0ae-13c9-438e-93b3-b6c63a0708df;"{""type"":""Point"",""coordinates"":[11.816,53.4206],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 89;;;;false;2;0.4;1.0;Niederspannung +5596da2f-ca32-4ad3-81da-1ffa17cd3d7b;"{""type"":""Point"",""coordinates"":[11.8198,53.4203],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 102;;;;false;2;0.4;1.0;Niederspannung +ad30322c-0c99-4669-8e4b-25265087a66d;"{""type"":""Point"",""coordinates"":[11.8166,53.4227],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 65;;;;false;2;0.4;1.0;Niederspannung +120eaa58-a500-4ae2-a86a-56a40b931ec1;"{""type"":""Point"",""coordinates"":[11.8195,53.4272],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 57;;;;false;2;0.4;1.0;Niederspannung +29516ae3-6676-4797-99c1-1f0a32b989d8;"{""type"":""Point"",""coordinates"":[11.8195,53.425],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 52;;;;false;2;0.4;1.0;Niederspannung +24b63115-12eb-4e77-b9ef-ca474fed960f;"{""type"":""Point"",""coordinates"":[11.8201,53.4232],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 46;;;;false;2;0.4;1.0;Niederspannung +a7725293-05fc-447f-bc12-38b689b0a956;"{""type"":""Point"",""coordinates"":[11.8201,53.4225],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 72;;;;false;2;0.4;1.0;Niederspannung +3b86661a-187d-4aa6-bf37-2014789afc08;"{""type"":""Point"",""coordinates"":[11.8214,53.4218],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 20;;;;false;2;0.4;1.0;Niederspannung +a3ed5af5-1fcb-4fce-af0f-708d3d604124;"{""type"":""Point"",""coordinates"":[11.8196,53.4282],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 33;;;;false;2;0.4;1.0;Niederspannung +ec8f2c82-a1b2-487c-b573-250859e3b414;"{""type"":""Point"",""coordinates"":[11.8166,53.4241],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";MV2.101 Bus 5;;;;true;1;20.0;1.025;Mittelspannung +5f153bf6-4f25-41f1-8545-18fe6323bc49;"{""type"":""Point"",""coordinates"":[11.8175,53.4257],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 17;;;;false;2;0.4;1.0;Niederspannung +b565ae3b-68f9-4bca-816d-9b0fc1c6b13f;"{""type"":""Point"",""coordinates"":[11.8198,53.4221],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 70;;;;false;2;0.4;1.0;Niederspannung +8e809cf6-7e05-437c-89a6-f6ca135a403b;"{""type"":""Point"",""coordinates"":[11.815,53.4289],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 47;;;;false;2;0.4;1.0;Niederspannung +ca0b9e34-ddc8-405e-86a4-ab939626c4a2;"{""type"":""Point"",""coordinates"":[11.816,53.4214],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 99;;;;false;2;0.4;1.0;Niederspannung +3e6be3ac-2b51-4080-b815-391313612fc7;"{""type"":""Point"",""coordinates"":[11.815,53.4277],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 110;;;;false;2;0.4;1.0;Niederspannung +4749ab2b-4d96-4100-8081-73e77c797d6b;"{""type"":""Point"",""coordinates"":[11.8166,53.4241],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 73;;;;false;2;0.4;1.0;Niederspannung +3f6c26dd-842b-4dee-b71f-4aa32e2654ff;"{""type"":""Point"",""coordinates"":[11.8174,53.4281],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 97;;;;false;2;0.4;1.0;Niederspannung +c6dac3ab-f44f-4b87-800c-0f4da64673f1;"{""type"":""Point"",""coordinates"":[11.8191,53.422],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 10;;;;false;2;0.4;1.0;Niederspannung +eae8a04c-44f2-4da3-95f6-cae48f85737c;"{""type"":""Point"",""coordinates"":[11.8203,53.4221],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 45;;;;false;2;0.4;1.0;Niederspannung +94fe96b1-f36a-4edd-a107-4ff0376f1066;"{""type"":""Point"",""coordinates"":[11.8175,53.4265],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 61;;;;false;2;0.4;1.0;Niederspannung +31e6e197-719d-4aaf-8ca5-ab9e7549390e;"{""type"":""Point"",""coordinates"":[11.8196,53.4286],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 32;;;;false;2;0.4;1.0;Niederspannung +002a4495-96e4-49c9-abbe-8fccb3e9c83e;"{""type"":""Point"",""coordinates"":[11.8214,53.4229],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 90;;;;false;2;0.4;1.0;Niederspannung +c7e48384-5699-4a38-a887-7e15a9145202;"{""type"":""Point"",""coordinates"":[11.8191,53.4223],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 107;;;;false;2;0.4;1.0;Niederspannung +8ace5c2b-584a-4015-990f-6f1e14de4ddb;"{""type"":""Point"",""coordinates"":[11.8174,53.4273],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 27;;;;false;2;0.4;1.0;Niederspannung +c41ebab8-16a0-4a3a-b4af-26073932d462;"{""type"":""Point"",""coordinates"":[11.8168,53.4285],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 35;;;;false;2;0.4;1.0;Niederspannung +ab8c8f6c-e7a2-4b81-a0d7-5f13789267a2;"{""type"":""Point"",""coordinates"":[11.815,53.4269],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 113;;;;false;2;0.4;1.0;Niederspannung +9f1baf4e-12e1-41d1-8efc-81cfc78f1957;"{""type"":""Point"",""coordinates"":[11.8195,53.426],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 71;;;;false;2;0.4;1.0;Niederspannung +02e63e81-2e62-4ef6-8fdb-0b0905a437b6;"{""type"":""Point"",""coordinates"":[11.8191,53.4212],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 12;;;;false;2;0.4;1.0;Niederspannung +2d33314e-31db-4ad4-a898-2be5d56a896d;"{""type"":""Point"",""coordinates"":[11.8162,53.4277],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 48;;;;false;2;0.4;1.0;Niederspannung +b8e95bf0-3ba8-4d53-a0bf-a3720fb785fb;"{""type"":""Point"",""coordinates"":[11.8195,53.4264],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 49;;;;false;2;0.4;1.0;Niederspannung +d0bfabdb-0e83-423b-a20a-ab9197c4284e;"{""type"":""Point"",""coordinates"":[11.8213,53.4239],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 82;;;;false;2;0.4;1.0;Niederspannung +6b2881ce-3965-4f5e-98a3-74eb47b0a7ca;"{""type"":""Point"",""coordinates"":[11.8162,53.4284],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 53;;;;false;2;0.4;1.0;Niederspannung +af2b07ce-1a96-4b50-9e21-badf29eed519;"{""type"":""Point"",""coordinates"":[11.8198,53.4195],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 100;;;;false;2;0.4;1.0;Niederspannung +844c0b9c-058a-4228-a8c4-bf2defff6958;"{""type"":""Point"",""coordinates"":[11.8213,53.4293],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 1;;;;false;2;0.4;1.0;Niederspannung +a432b8ce-0462-478b-83e7-3107cd2e909c;"{""type"":""Point"",""coordinates"":[11.8213,53.4253],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 56;;;;false;2;0.4;1.0;Niederspannung +4129e079-6712-4275-911c-36729d698c42;"{""type"":""Point"",""coordinates"":[11.8166,53.4238],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 77;;;;false;2;0.4;1.0;Niederspannung +883edf38-9a18-4f61-981a-691aaf436cc7;"{""type"":""Point"",""coordinates"":[11.8198,53.4216],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 4;;;;false;2;0.4;1.0;Niederspannung +f2724954-34d3-4ddf-b6b0-7a1531639990;"{""type"":""Point"",""coordinates"":[11.8191,53.4235],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 6;;;;false;2;0.4;1.0;Niederspannung +5d3bcf55-0520-43ff-8d63-3d0eb421e442;"{""type"":""Point"",""coordinates"":[11.816,53.4234],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 91;;;;false;2;0.4;1.0;Niederspannung +3a557b4e-06b8-4f29-929f-81d95c42c897;"{""type"":""Point"",""coordinates"":[11.8213,53.4277],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 42;;;;false;2;0.4;1.0;Niederspannung +7dc43c81-9a61-45a0-9745-800a28bf4a9d;"{""type"":""Point"",""coordinates"":[11.8196,53.4278],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 50;;;;false;2;0.4;1.0;Niederspannung +fd4bebb8-40ca-4eed-92c0-cdd10b86ac20;"{""type"":""Point"",""coordinates"":[11.8191,53.4209],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 60;;;;false;2;0.4;1.0;Niederspannung +3464496c-7dd4-41e9-ae0a-99ade0b51572;"{""type"":""Point"",""coordinates"":[11.8213,53.4236],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 40;;;;false;2;0.4;1.0;Niederspannung +d38d936a-9c05-4bdc-8331-418fef27f492;"{""type"":""Point"",""coordinates"":[11.815,53.4281],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 109;;;;false;2;0.4;1.0;Niederspannung +58b551b6-83bd-4f1c-8d9c-8c9a7f638c0b;"{""type"":""Point"",""coordinates"":[11.8213,53.425],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 38;;;;false;2;0.4;1.0;Niederspannung +b5c1e826-63fd-4b0c-bec0-0c758389ef58;"{""type"":""Point"",""coordinates"":[11.8191,53.4239],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 104;;;;false;2;0.4;1.0;Niederspannung +7c35a794-f569-4a9c-acb0-d03647610086;"{""type"":""Point"",""coordinates"":[11.8166,53.4249],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 98;;;;false;2;0.4;1.0;Niederspannung +78815cf6-70db-432c-96e6-87fe8cf67eee;"{""type"":""Point"",""coordinates"":[11.815,53.4272],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 112;;;;false;2;0.4;1.0;Niederspannung +c5b6bfaf-1621-40a7-9c53-02cfb59c04d9;"{""type"":""Point"",""coordinates"":[11.822,53.4294],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 14;;;;false;2;0.4;1.0;Niederspannung +2b3d7fb8-0583-4d47-97b1-3b5f232fd462;"{""type"":""Point"",""coordinates"":[11.8213,53.4274],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 87;;;;false;2;0.4;1.0;Niederspannung +3fcb94e3-7781-4d83-9030-d9853822e78e;"{""type"":""Point"",""coordinates"":[11.8213,53.4243],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 85;;;;false;2;0.4;1.0;Niederspannung +f713593a-3fd3-410a-ac08-74202d4f5798;"{""type"":""Point"",""coordinates"":[11.8201,53.4236],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 79;;;;false;2;0.4;1.0;Niederspannung +47246a84-ad0e-4d04-9d98-1c9cd5d363c1;"{""type"":""Point"",""coordinates"":[11.8196,53.4289],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 16;;;;false;2;0.4;1.0;Niederspannung +9cdb3115-cc00-4d61-bc33-442e8f30fb63;"{""type"":""Point"",""coordinates"":[11.8213,53.4257],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 83;;;;false;2;0.4;1.0;Niederspannung +839ff0f4-93db-42ec-a928-bbc448b6cf5c;"{""type"":""Point"",""coordinates"":[11.8197,53.4207],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 69;;;;false;2;0.4;1.0;Niederspannung +e7908208-77b4-4059-806e-4857262992fc;"{""type"":""Point"",""coordinates"":[11.8196,53.4247],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 105;;;;false;2;0.4;1.0;Niederspannung +83da8d60-405a-45f7-9bb9-9d35607b7927;"{""type"":""Point"",""coordinates"":[11.8201,53.4229],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 2;;;;false;2;0.4;1.0;Niederspannung +9d136a6b-5fdc-44ed-a5ed-599a55281024;"{""type"":""Point"",""coordinates"":[11.8195,53.4275],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 9;;;;false;2;0.4;1.0;Niederspannung +3faac527-0ff3-44a7-9e4f-24a41940da90;"{""type"":""Point"",""coordinates"":[11.816,53.4227],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 15;;;;false;2;0.4;1.0;Niederspannung +5682ac05-7336-4ebc-a5d1-3b69c79fb3b1;"{""type"":""Point"",""coordinates"":[11.8166,53.4241],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 44;;;;false;2;0.4;1.0;Niederspannung +5b73ded9-3ca4-4f18-a2ab-c27b9a3dcf9d;"{""type"":""Point"",""coordinates"":[11.8166,53.423],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 36;;;;false;2;0.4;1.0;Niederspannung +594d101c-3a05-45e3-a061-9189f3e848b7;"{""type"":""Point"",""coordinates"":[11.8198,53.4192],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 88;;;;false;2;0.4;1.0;Niederspannung +7b81b518-00e0-4ff1-b4cf-876903958d7a;"{""type"":""Point"",""coordinates"":[11.8213,53.4271],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 8;;;;false;2;0.4;1.0;Niederspannung +a882e666-82d1-4ba6-87df-fc702fe06187;"{""type"":""Point"",""coordinates"":[11.8169,53.4289],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 74;;;;false;2;0.4;1.0;Niederspannung +1403edf9-e47c-4705-8563-83bcd639482e;"{""type"":""Point"",""coordinates"":[11.8213,53.4286],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 75;;;;false;2;0.4;1.0;Niederspannung +03b2aa45-84f6-48c0-9dab-427e046a5672;"{""type"":""Point"",""coordinates"":[11.8196,53.4253],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 22;;;;false;2;0.4;1.0;Niederspannung +6ee7ea93-ea9c-40cb-b79a-1c5f287c97a5;"{""type"":""Point"",""coordinates"":[11.8221,53.4286],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 66;;;;false;2;0.4;1.0;Niederspannung +88cf719a-92df-4dfd-9a83-f84330e28fe0;"{""type"":""Point"",""coordinates"":[11.815,53.4285],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 108;;;;false;2;0.4;1.0;Niederspannung +80962bd3-a10f-4ed2-ba6a-3e802189939c;"{""type"":""Point"",""coordinates"":[11.8201,53.4239],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 21;;;;false;2;0.4;1.0;Niederspannung +80b8d1f8-7e83-421d-a95a-c193fc35f4f7;"{""type"":""Point"",""coordinates"":[11.8175,53.427],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 95;;;;false;2;0.4;1.0;Niederspannung +b909fb45-b6ee-427f-afd7-e8a0ec7274c6;"{""type"":""Point"",""coordinates"":[11.8213,53.4225],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 92;;;;false;2;0.4;1.0;Niederspannung +57b40047-4f9d-46bb-bf19-c0a86bbd4f5b;"{""type"":""Point"",""coordinates"":[11.8166,53.4234],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 37;;;;false;2;0.4;1.0;Niederspannung +18b4157b-0e47-4c5a-adb8-ccae47372336;"{""type"":""Point"",""coordinates"":[11.8213,53.4264],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 5;;;;false;2;0.4;1.0;Niederspannung +8726dc29-621e-4455-a541-cd88d7da457f;"{""type"":""Point"",""coordinates"":[11.8166,53.4257],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 96;;;;false;2;0.4;1.0;Niederspannung +814f784b-687f-4dd5-8a91-c7772c916d46;"{""type"":""Point"",""coordinates"":[11.8174,53.4262],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 19;;;;false;2;0.4;1.0;Niederspannung +7efabb8d-ba17-4487-96d9-5744b1fedf8a;"{""type"":""Point"",""coordinates"":[11.8166,53.4245],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 23;;;;false;2;0.4;1.0;Niederspannung +15a86f7d-fb73-49a4-af6a-25b14122378d;"{""type"":""Point"",""coordinates"":[11.8191,53.4227],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 11;;;;false;2;0.4;1.0;Niederspannung +34031e92-3444-47d5-94ae-cceeb5d96bb2;"{""type"":""Point"",""coordinates"":[11.8195,53.4268],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 106;;;;false;2;0.4;1.0;Niederspannung +35748e60-3be8-4930-8a61-209fd5df1bec;"{""type"":""Point"",""coordinates"":[11.815,53.4293],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 30;;;;false;2;0.4;1.0;Niederspannung +50cac08e-bf24-4526-9466-53ca5edccd15;"{""type"":""Point"",""coordinates"":[11.8166,53.4253],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 64;;;;false;2;0.4;1.0;Niederspannung +2efac9b1-fb0d-4e08-bfac-501798826deb;"{""type"":""Point"",""coordinates"":[11.8191,53.4231],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 93;;;;false;2;0.4;1.0;Niederspannung +c86d6361-4159-4787-b5f4-e41dcaa95195;"{""type"":""Point"",""coordinates"":[11.8182,53.4257],""crs"":{""type"":""name"",""properties"":{""name"":""EPSG:4326""}}}";LV5.201 Bus 13;;;;false;2;0.4;1.0;Niederspannung diff --git a/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/pv_input.csv b/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/pv_input.csv new file mode 100644 index 0000000000..b883b51783 --- /dev/null +++ b/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/pv_input.csv @@ -0,0 +1,4 @@ +uuid;albedo;azimuth;cos_phi_rated;elevation_angle;eta_conv;id;k_g;k_t;market_reaction;node;operates_from;operates_until;operator;q_characteristics;s_rated;em +a1eb7fc1-3bee-4b65-a387-ef3046644bf0;0.20000000298023224;4.093344211578369;0.8999999761581421;37.69556427001953;97.0;LV5.201 PV 10;0.8999999761581421;1.0;false;dc54bd8a-b7d8-4e99-adb0-d6ee5084241c;;;;"cosPhiFixed:{(0.0,0.9)}";4.2;f9dc7ce6-658c-4101-a12f-d58bb889286b +de8cfef5-7620-4b9e-9a10-1faebb5a80c0;0.20000000298023224;4.093344211578369;0.8999999761581421;37.69556427001953;97.0;LV5.201 PV 11;0.8999999761581421;1.0;false;3e6be3ac-2b51-4080-b815-391313612fc7;;;;"cosPhiFixed:{(0.0,0.9)}";10.9;957938b7-0476-4fab-a1b3-6ce8615857b3 +2560c371-f420-4c2a-b4e6-e04c11b64c03;0.20000000298023224;0.7802008390426636;0.8999999761581421;40.086585998535156;98.0;LV5.201 PV 15;0.8999999761581421;1.0;false;43040a39-8b6c-401f-9dfd-82b42aa6dec6;;;;"cosPhiFixed:{(0.0,0.9)}";2.9;c3a7e9f5-b492-4c85-af2d-1e93f6a25443 diff --git a/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/storage_input.csv b/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/storage_input.csv new file mode 100644 index 0000000000..60b2df901a --- /dev/null +++ b/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/storage_input.csv @@ -0,0 +1,2 @@ +uuid;id;node;operates_from;operates_until;operator;q_characteristics;type;em +06b58276-8350-40fb-86c0-2414aa4a0452;LV5.201 Storage 64;dc54bd8a-b7d8-4e99-adb0-d6ee5084241c;;;;"cosPhiFixed:{(0.00,0.95)}";95d4c980-d9e1-4813-9f2a-b0942488a570;f9dc7ce6-658c-4101-a12f-d58bb889286b diff --git a/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/storage_type_input.csv b/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/storage_type_input.csv new file mode 100644 index 0000000000..8c6fb1c867 --- /dev/null +++ b/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/storage_type_input.csv @@ -0,0 +1,2 @@ +uuid;active_power_gradient;capex;cos_phi_rated;e_storage;eta;id;opex;p_max;s_rated +95d4c980-d9e1-4813-9f2a-b0942488a570;1.0;0.0;0.96;8.0;93.0;Typ_1;0.65;4.0;4.166666666666667 diff --git a/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/transformer_2_w_input.csv b/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/transformer_2_w_input.csv new file mode 100644 index 0000000000..d1f9f5d13c --- /dev/null +++ b/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/transformer_2_w_input.csv @@ -0,0 +1,2 @@ +uuid;auto_tap;id;node_a;node_b;operates_from;operates_until;operator;parallel_devices;tap_pos;type +adaba416-9b52-45df-9d91-f67d0dd28ecb;false;MV2.101-LV5.201-Trafo 1;ec8f2c82-a1b2-487c-b573-250859e3b414;4749ab2b-4d96-4100-8081-73e77c797d6b;;;;1;0;417407d2-1e74-4f37-9b64-f701f53f8842 diff --git a/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/transformer_2_w_type_input.csv b/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/transformer_2_w_type_input.csv new file mode 100644 index 0000000000..b13848b159 --- /dev/null +++ b/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid/transformer_2_w_type_input.csv @@ -0,0 +1,2 @@ +uuid;b_m;d_phi;d_v;g_m;id;r_sc;s_rated;tap_max;tap_min;tap_neutr;tap_side;v_rated_a;v_rated_b;x_sc +417407d2-1e74-4f37-9b64-f701f53f8842;-36.47380569074435;0.0;2.5;4124.999999999999;0.63 MVA 20/0.4 kV Dyn5 ASEA;6.953892668178382;630.0;2;-2;0;false;20.0;0.4;37.45518044666632 diff --git a/input/samples/simopsimtestgrid_reduced_with_storage/simopsimtestgrid.conf b/input/samples/simopsimtestgrid_reduced_with_storage/simopsimtestgrid.conf new file mode 100644 index 0000000000..5ed8c36fcd --- /dev/null +++ b/input/samples/simopsimtestgrid_reduced_with_storage/simopsimtestgrid.conf @@ -0,0 +1,249 @@ +include "../common/pekko.conf" + +######### +# ATTENTION: Do not change this config file directly but use it as a base for your personal delta config for the +# vn_simona scenario! Delta configs can be created by including the config you want to change +# parameters from via include (e.g. include "input/samples/vn_simona/vn_simona.conf") at the +# beginning of your config file and then just override the parameters you want to change! +######### + +################################################################## +# Simulation Parameters +################################################################## +simona.simulationName = "simopsimtest" + +################################################################## +# Time Parameters +################################################################## +simona.time.startDateTime = "2024-02-27T00:00:00Z" +simona.time.endDateTime = "2024-02-28T00:00:00Z" +simona.time.schedulerReadyCheckWindow = 900 + +################################################################## +# Input Parameters +################################################################## +simona.input.primary.csvParams = { + directoryPath: "simona/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid" + csvSep: ";" + isHierarchic: false +} +simona.input.grid.datasource.id = "csv" +simona.input.grid.datasource.csvParams = { + directoryPath: "simona/input/samples/simopsimtestgrid_reduced_with_storage/fullGrid" + csvSep: ";" + isHierarchic: false +} + +simona.input.weather.datasource = { + scheme = "icon" + sampleParams.use = true + coordinateSource.sampleParams.use = true + maxCoordinateDistance = 50000 +} + +################################################################## +# Output Parameters +################################################################## +simona.output.base.dir = "simona/output/simopsimtestgrid_reduced_with_storage" +simona.output.base.addTimestampToOutputDir = true + +simona.output.sink.csv { + fileFormat = ".csv" + filePrefix = "" + fileSuffix = "" +} + +simona.output.grid = { + notifier = "grid" + nodes = false + lines = false + switches = false + transformers2w = false + transformers3w = false +} +simona.output.participant.defaultConfig = { + notifier = "default" + powerRequestReply = false + simulationResult = true +} +simona.output.participant.individualConfigs = [ + { + notifier = "pv" + powerRequestReply = false + simulationResult = true + }, + { + notifier = "wec" + powerRequestReply = false + simulationResult = false + }, + { + notifier = "evcs" + powerRequestReply = false + simulationResult = false + }, + { + notifier = "bm" + powerRequestReply = false + simulationResult = false + }, + { + notifier = "chp" + powerRequestReply = false + simulationResult = false + }, + { + notifier = "ev" + powerRequestReply = false + simulationResult = false + }, + { + notifier = "hp" + powerRequestReply = false + simulationResult = false + }, + { + notifier = "storage" + powerRequestReply = false + simulationResult = true + }, + { + notifier = "fixedFeedIn" + powerRequestReply = false + simulationResult = false + } +] +simona.output.thermal = { + defaultConfig = { + notifier = "default", + simulationResult = false + } + individualConfigs = [ + { + notifier = "house", + simulationResult = false + } + ] +} + +################################################################## +# Runtime Configuration // todo refactor as this naming is misleading and partly unneeded +################################################################## +simona.runtime.selected_subgrids = [] +simona.runtime.selected_volt_lvls = [] + +simona.runtime.participant.load = { + defaultConfig = { + calculateMissingReactivePowerWithModel = false + uuids = ["default"] + scaling = 1.0 + modelBehaviour = "fix" + reference = "power" + } + individualConfigs = [] +} + +simona.runtime.participant.fixedFeedIn = { + defaultConfig = { + calculateMissingReactivePowerWithModel = false + uuids = ["default"] + scaling = 1.0 + } + individualConfigs = [] +} + +simona.runtime.participant.pv = { + defaultConfig = { + calculateMissingReactivePowerWithModel = false + uuids = ["default"] + scaling = 1.0 + } + individualConfigs = [] +} + +simona.runtime.participant.wec = { + defaultConfig = { + calculateMissingReactivePowerWithModel = false + uuids = ["default"] + scaling = 1.0 + } + individualConfigs = [] +} + +simona.runtime.participant.evcs = { + defaultConfig = { + calculateMissingReactivePowerWithModel = false + uuids = ["default"] + scaling = 1.0 + } + individualConfigs = [] +} + +simona.runtime.participant.hp = { + defaultConfig = { + calculateMissingReactivePowerWithModel = false + uuids = ["default"] + scaling = 1.0 + } + individualConfigs = [] +} + +simona.runtime.participant.storage = { + defaultConfig = { + calculateMissingReactivePowerWithModel = false + uuids = ["default"] + scaling = 1.0 + } + individualConfigs = [] +} + +# # # # # +# ATTENTION: calculateMissingReactivePowerWithModel and scaling is ignored here. +# # # # # +simona.runtime.participant.em = { + defaultConfig = { + calculateMissingReactivePowerWithModel = false + uuids = ["default"] + scaling = 1.0 + } + individualConfigs = [] +} + +################################################################## +# Event Configuration +################################################################## +simona.event.listener = [] + +################################################################## +# Grid Configuration +################################################################## + +simona.gridConfig.refSystems = [ + {sNom = "100 kVA", vNom = "0.4 kV", voltLvls = [{id = "NS", vNom = "0.4 kV"}]}, + {sNom = "60 MVA", vNom = "20 kV", voltLvls = [{id = "MS", vNom = "20 kV"}]}, + {sNom = "600 MVA", vNom = "110 kV", voltLvls = [{id = "HS", vNom = "110 kV"}]}, + {sNom = "1000 MVA", vNom = "380 kV", voltLvls = [{id = "HoeS", vNom = "380 kV"}]} +] + +################################################################## +# Power Flow Configuration +################################################################## +simona.powerflow.maxSweepPowerDeviation = 1E-5 // the maximum allowed deviation in power between two sweeps, before overall convergence is assumed +simona.powerflow.newtonraphson.epsilon = [1E-12] +simona.powerflow.newtonraphson.iterations = 50 +simona.powerflow.resolution = "87300s" +simona.powerflow.stopOnFailure = true + +simona.control.transformer = [ + { + transformers = ["31a2b9bf-e785-4475-aa44-1c34646e8c79"], + measurements = ["923f2d69-3093-4198-86e4-13d2d1c220f8"], + vMin = 0.98, + vMax = 1.02 + }, { + transformers = ["1132dbf4-e8a1-44ae-8415-f42d4497aa1d"], + measurements = ["7686b818-a0ba-465c-8e4e-f7d3c4e171fc"], + vMin = 0.98, + vMax = 1.02 + } +] diff --git a/input/samples/vn_simona_small_with_em/fullGrid/storage_input.csv b/input/samples/vn_simona_small_with_em/fullGrid/storage_input.csv index 35eb72ffac..790f88b930 100644 --- a/input/samples/vn_simona_small_with_em/fullGrid/storage_input.csv +++ b/input/samples/vn_simona_small_with_em/fullGrid/storage_input.csv @@ -1,3 +1,2 @@ uuid,id,node,operates_from,operates_until,operator,q_characteristics,type,em a2a92cfd-3492-465f-9587-e789f4620af8,Speicher_3,33f29587-f63e-45b7-960b-037bda37a3cb,,,,"cosPhiFixed:{(0.0,0.98)}",95d4c980-d9e1-4813-9f2a-b0942488a570,fd1a8de9-722a-4304-8799-e1e976d9979c -c96f0a90-980a-4813-b175-ecc04aded773,Speicher_4,401f37f8-6f2c-4564-bc78-6736cb9cbf8d,,,,"cosPhiFixed:{(0.0,0.98)}",95d4c980-d9e1-4813-9f2a-b0942488a570,ff0b995a-86ff-4f4d-987e-e475a64f2180 diff --git a/input/samples/vn_simona_small_with_em/vn_simona_small_withem.conf b/input/samples/vn_simona_small_with_em/vn_simona_small_withem.conf index 6185ad6e4d..bc2c8b3451 100644 --- a/input/samples/vn_simona_small_with_em/vn_simona_small_withem.conf +++ b/input/samples/vn_simona_small_with_em/vn_simona_small_withem.conf @@ -81,6 +81,11 @@ simona.output.participant.individualConfigs = [ notifier = "evcs" powerRequestReply = false simulationResult = true + }, + { + notifier = "storage" + powerRequestReply = false + simulationResult = true } ] simona.output.thermal = { @@ -158,6 +163,15 @@ simona.runtime.participant.hp = { individualConfigs = [] } +simona.runtime.participant.storage = { + defaultConfig = { + calculateMissingReactivePowerWithModel = false + uuids = ["default"] + scaling = 1.0 + } + individualConfigs = [] +} + # # # # # # ATTENTION: calculateMissingReactivePowerWithModel and scaling is ignored here. # # # # # diff --git a/src/main/scala/edu/ie3/simona/agent/em/EmAgent.scala b/src/main/scala/edu/ie3/simona/agent/em/EmAgent.scala index 465bbd319f..6e85277f50 100644 --- a/src/main/scala/edu/ie3/simona/agent/em/EmAgent.scala +++ b/src/main/scala/edu/ie3/simona/agent/em/EmAgent.scala @@ -8,7 +8,7 @@ package edu.ie3.simona.agent.em import edu.ie3.datamodel.models.input.EmInput import edu.ie3.datamodel.models.result.system.{EmResult, FlexOptionsResult} -import edu.ie3.simona.agent.participant.data.Data.PrimaryData.ApparentPower +import edu.ie3.simona.agent.participant.data.Data.PrimaryData.{ApparentPower, ZERO_POWER} import edu.ie3.simona.agent.participant.statedata.BaseStateData.FlexControlledData import edu.ie3.simona.config.SimonaConfig.EmRuntimeConfig import edu.ie3.simona.event.ResultEvent @@ -17,7 +17,7 @@ import edu.ie3.simona.event.notifier.NotifierConfig import edu.ie3.simona.exceptions.CriticalFailureException import edu.ie3.simona.model.em.{EmModelShell, EmTools} import edu.ie3.simona.ontology.messages.SchedulerMessage.{Completion, ScheduleActivation} -import edu.ie3.simona.ontology.messages.flex.FlexibilityMessage._ +import edu.ie3.simona.ontology.messages.flex.FlexibilityMessage.{IssueFlexControl, _} import edu.ie3.simona.ontology.messages.flex.MinMaxFlexibilityMessage.ProvideMinMaxFlexOptions import edu.ie3.simona.ontology.messages.services.ServiceMessage.ExtEmDataServiceRegistrationMessage import edu.ie3.simona.ontology.messages.services.ServiceMessage.RegistrationResponseMessage.WrappedRegistrationSuccessfulMessage @@ -30,6 +30,7 @@ import org.apache.pekko.actor.typed.scaladsl.{Behaviors, StashBuffer} import org.apache.pekko.actor.typed.{ActorRef, Behavior} import org.apache.pekko.actor.{ActorRef => ClassicRef} import org.apache.pekko.actor.typed.scaladsl.adapter._ +import squants.Power import java.time.ZonedDateTime @@ -72,7 +73,6 @@ object EmAgent { override val tick: Long = msg.tick } - /** Creates the initial [[Behavior]] for an [[EmAgent]] in an inactive state * * @param inputModel @@ -103,12 +103,14 @@ object EmAgent { extEmDataService: Option[ClassicRef] ): Behavior[Request] = Behaviors.setup[Request] { ctx => val flexAdapterEmDataService = ctx.messageAdapter[FlexRequest](Flex) + var extInitTick = Option.empty[Long] if (extEmDataService.isDefined) { extEmDataService.getOrElse(throw new RuntimeException("No Service")) ! ExtEmDataServiceRegistrationMessage( inputModel.getUuid, ctx.self, flexAdapterEmDataService ) + extInitTick = Some(0L) } val constantData = EmData( @@ -135,7 +137,7 @@ object EmAgent { } }, listener, - ExternalEmDataServiceData(extEmDataService, None) + ExternalEmDataServiceData(extEmDataService) ) @@ -151,7 +153,7 @@ object EmAgent { inactive( constantData, modelShell, - EmDataCore.create(simulationStartDate) + EmDataCore.create(simulationStartDate, extInitTick) ) } @@ -171,7 +173,7 @@ object EmAgent { inactive(emData, updatedModelShell, updatedCore) case (ctx, WrappedRegistrationSuccessfulMessage(RegistrationSuccessfulMessage(serviceRef, nextDataTick))) => - ctx.log.info(s"EM Agent ${modelShell.uuid} will use external set points!") + ctx.log.info(s"EM Agent ${ctx.self} will use external set points!") /* val flexAdapter = ctx.messageAdapter[FlexRequest](Flex) val updatedEmData = emData.copy( @@ -215,19 +217,45 @@ object EmAgent { inactive(emData, modelShell, newCore) case (ctx, msg: ActivationRequest) => - ctx.log.debug(s"EM Agent ${modelShell.uuid} got ActivationRequest = $msg") - val flexOptionsCore = core.activate(msg.tick) + ctx.log.debug(s"\u001b[0;34m[${msg.tick}] ${ctx.self}.inactive got ActivationRequest = $msg, dataProvisionMessage = ${core.nextSetPointMessage}, nextSetPointTick = ${core.nextSetPointTick}\u001b[0;0m") msg match { - case Flex(_: RequestFlexOptions) | EmActivation(_) => - ctx.log.debug(s"Activation for tick ${msg.tick}") - val (toActivate, newCore) = flexOptionsCore.takeNewFlexRequests() - toActivate.foreach { - _ ! RequestFlexOptions(msg.tick) + case Flex(_: RequestFlexOptions) | EmActivation(_) => // Activation by another EMAgent or by the scheduler + val flexOptionsCore = core.activate(msg.tick) + + // Check if there will be a new set point for this tick -> We can't start processing flex options before we know what's the set point for this tick + if (core.nextSetPointTick.contains(msg.tick)) { + // We expect a new set point for this tick + core.nextSetPointMessage match { + case Some(setPointMsg) => // We already got a set point, check if the set point is for the right tick + if (setPointMsg.tick == msg.tick) { // yes, it's for the right tick -> we can activate our connected agents and do the normal stuff + val (toActivate, newCore) = flexOptionsCore.handleSetPoint(setPointMsg).takeNewFlexRequests() + ctx.log.debug(s"\u001b[0;34m[${flexOptionsCore.activeTick}] ${ctx.self}.inactive expects and received set point for this tick\n -> activate connected agents $toActivate\n -> send IssuePowerControl to myself with the new set point ${setPointMsg.setPower} \u001b[0;0m") + toActivate.foreach { + _ ! RequestFlexOptions(msg.tick) + } + ctx.self ! Flex(IssuePowerControl(flexOptionsCore.activeTick, setPointMsg.setPower)) + awaitingFlexOptions(emData, modelShell, newCore) + } else { + throw new RuntimeException("Set point for wrong tick arrived!") + } + case _ => // We still have to wait for a set point + val (toActivate, newCore) = flexOptionsCore.takeNewFlexRequests() + ctx.log.debug(s"\u001b[0;34m[${flexOptionsCore.activeTick}] ${ctx.self}.inactive expects set point for this tick, but I have to wait..., toActivate = $toActivate\u001b[0;0m") + toActivate.foreach { + _ ! RequestFlexOptions(msg.tick) + } + awaitingFlexOptions(emData, modelShell, flexOptionsCore) + } + } else { // We don't expect a new set point -> we can do our normal stuff, because we are activated because at least one connected agent should provide flex options + val (toActivate, newCore) = flexOptionsCore.updateSetPoint().takeNewFlexRequests() + ctx.log.debug(s"\u001b[0;34m[${flexOptionsCore.activeTick}] EM Agent ${ctx.self} doesn't expect set point for this tick, toActivate = $toActivate\u001b[0;0m") + toActivate.foreach { + _ ! RequestFlexOptions(msg.tick) + } + awaitingFlexOptions(emData, modelShell, newCore) } - awaitingFlexOptions(emData, modelShell, newCore) - case Flex(_: IssueFlexControl) => // We got sent a flex control message instead of a flex request, // this means that flex options must have not changed since @@ -235,19 +263,19 @@ object EmAgent { // Thus, we just jump to the appropriate place and forward the // control message there + val flexOptionsCore = core.activate(msg.tick) ctx.self ! msg awaitingFlexCtrl(emData, modelShell, flexOptionsCore) - case Flex(dataMsg: ProvideExtEmSetPoint) => - // got set point before activation -> put msg in queue and wait - ctx.log.debug(s"Agent ${ctx.self} got external set point = $dataMsg") - val updatedEmData = emData.copy( - extEmDataServiceData = emData.extEmDataServiceData.copy( - dataProvisionMessage = Some(dataMsg) - ) - ) - inactive(updatedEmData, modelShell, core) + + case Flex(msg: SetPointFlexRequest) => + // We didn't get an activation yet, but a set point arrived -> save message and wait for an activation + ctx.log.debug(s"(${core.getLastActiveTick}) ${ctx.self}.inactive got external set point = $msg before activation -> save message and wait...") + val newCore = core.handleSetPointMessage(msg) + + inactive(emData, modelShell, newCore) } + } /** Behavior of an [[EmAgent]] waiting for flex options to be received in @@ -311,30 +339,9 @@ object EmAgent { case Left(_) => // We're not em-controlled ourselves, // always desire to come as close as possible to 0 kW -> maybe overwrite it if we get a set point - var setPower = zeroKW - var updatedEmData = emData - if (emData.extEmDataServiceData.extEmDataService.isDefined) { // We get external set points - if (emData.extEmDataServiceData.dataProvisionMessage.isEmpty) { // Still waiting for set points... - awaitingFlexOptions( - emData, - modelShell, - updatedCore, - ) - } else { // We got set points - setPower = emData.extEmDataServiceData.dataProvisionMessage.map(setPoint => setPoint.setPower).getOrElse(throw new RuntimeException("Got a wrong set point!")) - ctx.log.debug(s"[UNCONTROLLED] EM Agent ${ctx.self}: Got a external Set Power = $setPower") - updatedEmData = emData.copy( - extEmDataServiceData = emData.extEmDataServiceData.copy( - dataProvisionMessage = None - ) - ) - } - } - ctx.log.debug(s"[UNCONTROLLED] EM Agent ${ctx.self}: Starting determination of flex control with set power = $setPower") + val setPower = updatedCore.currentSetPower.getOrElse(throw new CriticalFailureException("Uncontrolled agent received ProvideFlexOptions without a set point!")) val flexControl = modelShell.determineFlexControl(allFlexOptions, setPower) - ctx.log.debug(s"[UNCONTROLLED] EM Agent ${ctx.self}: Got flexControl = $flexControl") - val (allFlexMsgs, newCore) = updatedCore .handleFlexCtrl(flexControl) @@ -342,11 +349,10 @@ object EmAgent { .complete() allFlexMsgs.foreach { case (actor, msg) => - ctx.log.debug(s"[UNCONTROLLED] EM Agent ${ctx.self}: For actor = $actor send msg = $msg") actor ! msg } - awaitingCompletions(updatedEmData, modelShell, newCore) + awaitingCompletions(emData, modelShell, newCore) } } else { // more flex options expected @@ -356,19 +362,72 @@ object EmAgent { updatedCore, ) } - case (ctx, Flex(dataMsg: ProvideExtEmSetPoint)) => - // got set point before activation -> put msg in queue and wait - ctx.log.debug(s"Agent ${ctx.self} got external set point = $dataMsg") - val updatedEmData = emData.copy( - extEmDataServiceData = emData.extEmDataServiceData.copy( - dataProvisionMessage = Some(dataMsg) - ) - ) - awaitingFlexOptions(updatedEmData, modelShell, flexOptionsCore) + /* We do not need to handle ScheduleFlexRequests here, since active agents can schedule themselves with there completions and inactive agents should be sleeping right now */ + case (ctx, Flex(setPointMsg: SetPointFlexRequest)) => + // We got a set point after Activation -> Check, if setPower changed (yes) we have to calculate new set points for our connected agents (no) activate core and do the updates + ctx.log.debug(s"${flexOptionsCore.activeTick} ${ctx.self}.awaitingFlexOptions got external set point = $setPointMsg") + val updatedCore = flexOptionsCore.handleSetPoint(setPointMsg) + ctx.self ! Flex(IssuePowerControl(flexOptionsCore.activeTick, setPointMsg.setPower)) + awaitingFlexCtrl(emData, modelShell, updatedCore) + + case (ctx, Flex(flexCtrl: IssuePowerControl)) => + ctx.log.debug(s"[${flexOptionsCore.activeTick}] ${ctx.self}.awaitingFlexOptions.IssuePowerControl received IssuePowerControl $flexCtrl") + if (flexOptionsCore.isComplete) { + ctx.log.debug(s"[${flexOptionsCore.activeTick}] ${ctx.self}.awaitingFlexOptions.IssuePowerControl core is already complete") + val allFlexOptions = flexOptionsCore.getFlexOptions + // We're not em-controlled ourselves, + // always desire to come as close as possible to 0 kW -> maybe overwrite it if we get a set point + val setPower = flexCtrl.setPower + + val flexControl = + modelShell.determineFlexControl(allFlexOptions, setPower) + + val (allFlexMsgs, newCore) = flexOptionsCore + .handleFlexCtrl(flexControl) + .fillInMissingIssueCtrl() + .complete() + + if(allFlexMsgs.isEmpty) { + newCore + .maybeComplete() + .map { inactiveCore => + sendCompletionCommunication( + emData, + modelShell, + inactiveCore, + flexOptionsCore.activeTick, + flexOptionsCore.nextSetPointTick + ) + inactive(emData, modelShell, inactiveCore) + } + .getOrElse { + // more flex options expected + awaitingCompletions( + emData, + modelShell, + newCore, + ) + } + } else { + allFlexMsgs.foreach { case (actor, msg) => + actor ! msg + } + + awaitingCompletions(emData, modelShell, newCore) + } + + } else { + ctx.log.debug(s"[${flexOptionsCore.activeTick}] ${ctx.self}.awaitingFlexOptions.IssuePowerControl there are still missing ProvideFlexOptions -> we have to wait...") + awaitingFlexOptions( + emData, + modelShell, + flexOptionsCore, + ) + } } /** Behavior of an [[EmAgent]] waiting for a flex control message to be @@ -381,9 +440,6 @@ object EmAgent { flexOptionsCore: EmDataCore.AwaitingFlexOptions, ): Behavior[Request] = Behaviors.receivePartial { case (ctx, Flex(flexCtrl: IssueFlexControl)) => - ctx.log.debug(s"emData = $emData") - ctx.log.debug(s"modelShell = $modelShell") - ctx.log.debug(s"agent ${ctx.self}: flexCtrl = $flexCtrl") val flexData = emData.parentData.getOrElse( throw new CriticalFailureException(s"EmAgent is not EM-controlled.") ) @@ -415,7 +471,6 @@ object EmAgent { .complete() allFlexMsgs.foreach { case (actor, msg) => - ctx.log.debug(s"Agent ${ctx.self}: For actor = $actor send msg = $msg") actor ! msg } @@ -441,7 +496,8 @@ object EmAgent { emData, modelShell, inactiveCore, - lastActiveTick = updatedCore.activeTick, + updatedCore.activeTick, + updatedCore.nextSetPointTick ) inactive(emData, modelShell, inactiveCore) } @@ -461,6 +517,7 @@ object EmAgent { modelShell: EmModelShell, inactiveCore: EmDataCore.Inactive, lastActiveTick: Long, + nextSetPointTick: Option[Long], ): Unit = { // calc result val result = inactiveCore.getResults @@ -488,11 +545,16 @@ object EmAgent { ) } + val nextActiveTick = EmTools.minOptionTicks( + inactiveCore.nextActiveTick, + nextSetPointTick + ) + emData.parentData.fold( schedulerData => schedulerData.scheduler ! Completion( schedulerData.activationAdapter, - inactiveCore.nextActiveTick, + nextActiveTick, ), _.emAgent ! FlexCtrlCompletion( modelShell.uuid, @@ -535,10 +597,10 @@ object EmAgent { final case class SchedulerData( scheduler: ActorRef[SchedulerMessage], activationAdapter: ActorRef[Activation], + lastFlexOptions: Option[ProvideFlexOptions] = None, ) final case class ExternalEmDataServiceData( - extEmDataService: Option[ClassicRef], - dataProvisionMessage: Option[ProvideExtEmSetPoint] + extEmDataService: Option[ClassicRef] ) } diff --git a/src/main/scala/edu/ie3/simona/agent/em/EmDataCore.scala b/src/main/scala/edu/ie3/simona/agent/em/EmDataCore.scala index 3b46b176ee..5ad3743bf6 100644 --- a/src/main/scala/edu/ie3/simona/agent/em/EmDataCore.scala +++ b/src/main/scala/edu/ie3/simona/agent/em/EmDataCore.scala @@ -12,6 +12,7 @@ import EmAgent.Actor import FlexCorrespondenceStore.WithTime import edu.ie3.simona.ontology.messages.flex.FlexibilityMessage._ import edu.ie3.util.scala.collection.mutable.PriorityMultiBiSet +import edu.ie3.util.scala.quantities.DefaultQuantities.zeroKW import squants.Power import java.time.ZonedDateTime @@ -27,13 +28,16 @@ object EmDataCore { * @param startDate * The start date of the simulation */ - def create(implicit startDate: ZonedDateTime): Inactive = + def create(implicit startDate: ZonedDateTime, extInitTick: Option[Long]): Inactive = Inactive( Map.empty, PriorityMultiBiSet.empty, Set.empty, FlexCorrespondenceStore(), None, + extInitTick, + zeroKW, + None ) /** Data structure holding relevant data and providing methods that handle @@ -59,6 +63,9 @@ object EmDataCore { private val flexWithNext: Set[UUID], private val correspondences: FlexCorrespondenceStore, private val lastActiveTick: Option[Long], + nextSetPointTick: Option[Long], + lastSetPower: Power, + nextSetPointMessage: Option[SetPointFlexRequest] ) { /** Adds a connected agent, given its model UUID and actor reference @@ -109,6 +116,9 @@ object EmDataCore { updatedQueue, correspondences, activeTick = newTick, + nextSetPointTick = nextSetPointTick, + lastSetPower = lastSetPower, + currentSetPower = None, ) } @@ -165,6 +175,13 @@ object EmDataCore { def getResults: Iterable[ApparentPower] = correspondences.store.values.flatMap(_.receivedResult.map(_.get)) + def handleSetPointMessage( + setPointMsg: SetPointFlexRequest + ): Inactive = copy( + nextSetPointMessage = Some(setPointMsg) + ) + + def getLastActiveTick: Option[Long] = lastActiveTick } /** Data structure holding relevant data and providing methods that handle @@ -189,17 +206,22 @@ object EmDataCore { private val correspondences: FlexCorrespondenceStore, private val awaitedFlexOptions: Set[UUID] = Set.empty, activeTick: Long, + nextSetPointTick: Option[Long], + lastSetPower: Power, + currentSetPower: Option[Power] ) { + def getCorrespondences: FlexCorrespondenceStore = correspondences + /** Removes and returns flex requests scheduled for the current tick, which - * can be sent out at the current moment. - * - * @return - * A tuple of a collection of agents scheduled for the current tick, and - * the updated [[AwaitingFlexOptions]] core - * @throws CriticalFailureException - * on critical error - */ + * can be sent out at the current moment. + * + * @return + * A tuple of a collection of agents scheduled for the current tick, and + * the updated [[AwaitingFlexOptions]] core + * @throws CriticalFailureException + * on critical error + */ def takeNewFlexRequests(): (Iterable[Actor], AwaitingFlexOptions) = { val toActivate = activationQueue.getAndRemoveSet(activeTick) val newFlexOptionsCore = @@ -219,16 +241,16 @@ object EmDataCore { } /** Handles the retrieval of flex options sent by some connected agent for - * the currently active tick. - * - * @param flexOptions - * The received flex options - * @return - * The updated [[AwaitingFlexOptions]] core - */ + * the currently active tick. + * + * @param flexOptions + * The received flex options + * @return + * The updated [[AwaitingFlexOptions]] core + */ def handleFlexOptions( - flexOptions: ProvideFlexOptions - ): AwaitingFlexOptions = + flexOptions: ProvideFlexOptions + ): AwaitingFlexOptions = copy( correspondences = correspondences.updateFlexOptions(flexOptions, activeTick), @@ -236,33 +258,35 @@ object EmDataCore { ) /** Checks whether all awaited flex options have been received and we can - * continue by calculating flex control. This method does not change the - * state of the [[AwaitingFlexOptions]] data core. - * @return - * true if all awaited flex options have been received - */ - def isComplete: Boolean = awaitedFlexOptions.isEmpty + * continue by calculating flex control. This method does not change the + * state of the [[AwaitingFlexOptions]] data core. + * + * @return + * true if all awaited flex options have been received + */ + def isComplete: Boolean = awaitedFlexOptions.isEmpty & currentSetPower.isDefined /** Returns all flex options that are currently relevant, which can include - * flex options received at an earlier tick - * @return - * all relevant flex options - */ + * flex options received at an earlier tick + * + * @return + * all relevant flex options + */ def getFlexOptions: Iterable[(UUID, ProvideFlexOptions)] = correspondences.store.flatMap { case (model, correspondence) => correspondence.receivedFlexOptions.map(model -> _.get) } /** Handles and stores the control messages created by this [[EmAgent]] - * - * @param ctrlMsgs - * The control messages created by this EM agent - * @return - * The updated [[AwaitingFlexOptions]] core - */ + * + * @param ctrlMsgs + * The control messages created by this EM agent + * @return + * The updated [[AwaitingFlexOptions]] core + */ def handleFlexCtrl( - ctrlMsgs: Iterable[(UUID, Power)] - ): AwaitingFlexOptions = { + ctrlMsgs: Iterable[(UUID, Power)] + ): AwaitingFlexOptions = { val updatedStore = ctrlMsgs.foldLeft(correspondences) { case (store, (model, power)) => val ctrlMsg = IssuePowerControl(activeTick, power) @@ -272,12 +296,13 @@ object EmDataCore { } /** The model strategy might miss control messages when creating them in - * bulk. This method creates the missing messages, in particular for those - * agents that have been issued a flex request for the current tick and - * those that have received a control messages at an earlier tick. - * @return - * The updated [[AwaitingFlexOptions]] core - */ + * bulk. This method creates the missing messages, in particular for those + * agents that have been issued a flex request for the current tick and + * those that have received a control messages at an earlier tick. + * + * @return + * The updated [[AwaitingFlexOptions]] core + */ def fillInMissingIssueCtrl(): AwaitingFlexOptions = { val updatedStore = correspondences.store .filter { case (_, correspondence) => @@ -296,7 +321,7 @@ object EmDataCore { // at an earlier tick val flexControlCancelled = correspondence.issuedCtrlMsg match { case Some(WithTime(_: IssuePowerControl, tick)) - if tick < activeTick => + if tick < activeTick => true case _ => false } @@ -313,17 +338,17 @@ object EmDataCore { } /** Completes the current state by collecting and returning the control - * messages for the current tick if possible, and otherwise a - * [[CriticalFailureException]] is thrown - * - * @return - * A collection of agent-and-message pairs and an updated - * [[AwaitingCompletions]] core - * @throws CriticalFailureException - * on critical error - */ + * messages for the current tick if possible, and otherwise a + * [[CriticalFailureException]] is thrown + * + * @return + * A collection of agent-and-message pairs and an updated + * [[AwaitingCompletions]] core + * @throws CriticalFailureException + * on critical error + */ def complete() - : (Iterable[(Actor, IssueFlexControl)], AwaitingCompletions) = { + : (Iterable[(Actor, IssueFlexControl)], AwaitingCompletions) = { val modelUuidToMsg = correspondences.store.flatMap { case (modelUuid, correspondence) => @@ -354,10 +379,26 @@ object EmDataCore { participant }.toSet, activeTick = activeTick, + nextSetPointTick = nextSetPointTick, + currentSetPower = currentSetPower.getOrElse(throw new RuntimeException("")) ), ) } + def handleSetPoint( + setPointFlexRequest: SetPointFlexRequest + ): AwaitingFlexOptions = { + copy( + nextSetPointTick = Some(setPointFlexRequest.nextSetPointTick), + currentSetPower = Some(setPointFlexRequest.setPower) + ) + } + + def updateSetPoint(): AwaitingFlexOptions = { + copy( + currentSetPower = Some(lastSetPower) + ) + } } /** Data structure holding relevant data and providing methods that handle @@ -387,6 +428,8 @@ object EmDataCore { private val correspondences: FlexCorrespondenceStore, private val awaitedCompletions: Set[UUID], activeTick: Long, + nextSetPointTick: Option[Long], + currentSetPower: Power ) { /** Tries to handle the completion of some connected agent for the currently @@ -452,9 +495,10 @@ object EmDataCore { flexWithNext, correspondences, Some(activeTick), + nextSetPointTick, + currentSetPower, + None ) } - } - } diff --git a/src/main/scala/edu/ie3/simona/agent/grid/GridAgent.scala b/src/main/scala/edu/ie3/simona/agent/grid/GridAgent.scala index f02d7c36b1..08ef649b5e 100644 --- a/src/main/scala/edu/ie3/simona/agent/grid/GridAgent.scala +++ b/src/main/scala/edu/ie3/simona/agent/grid/GridAgent.scala @@ -210,7 +210,8 @@ object GridAgent extends DBFSAlgorithm { constantData: GridAgentConstantData, buffer: StashBuffer[Request], ): Behavior[Request] = Behaviors.receivePartial { - case (_, WrappedActivation(activation: Activation)) => + case (ctx, WrappedActivation(activation: Activation)) => + ctx.log.info(s"Activation in tick ${activation.tick}") constantData.environmentRefs.scheduler ! Completion( constantData.activationAdapter, Some(activation.tick), diff --git a/src/main/scala/edu/ie3/simona/event/listener/ResultEventListener.scala b/src/main/scala/edu/ie3/simona/event/listener/ResultEventListener.scala index f38e1c7449..6f954fc388 100644 --- a/src/main/scala/edu/ie3/simona/event/listener/ResultEventListener.scala +++ b/src/main/scala/edu/ie3/simona/event/listener/ResultEventListener.scala @@ -9,7 +9,7 @@ package edu.ie3.simona.event.listener import org.apache.pekko.actor.typed.scaladsl.Behaviors import org.apache.pekko.actor.typed.{ActorRef, Behavior, PostStop} import edu.ie3.datamodel.io.processor.result.ResultEntityProcessor -import edu.ie3.datamodel.models.result.{NodeResult, ResultEntity} +import edu.ie3.datamodel.models.result.{ModelResultEntity, NodeResult, ResultEntity} import edu.ie3.simona.agent.grid.GridResultsSupport.PartialTransformer3wResult import edu.ie3.simona.event.ResultEvent.{FlexOptionsResultEvent, ParticipantResultEvent, PowerFlowResultEvent, ThermalResultEvent} import edu.ie3.simona.exceptions.{FileHierarchyException, ProcessResultEventException} @@ -237,15 +237,20 @@ object ResultEventListener extends Transformer3wResultSupport { } private def handOverToExternalService( - tick: Long, - resultEntity: ResultEntity, - extResultDataService: Option[ActorRef[ExtResultDataProvider.Request]], - nextTick: Option[Long] = None + tick: Long, + resultEntity: ResultEntity, + extResultDataService: Option[ActorRef[ExtResultDataProvider.Request]], + nextTick: Option[Long] = None ): Unit = Try { val extResultDataServiceRef = extResultDataService.getOrElse( throw new Exception("No external data service registered!") ) - extResultDataServiceRef ! ResultResponseMessage(resultEntity, tick, nextTick) + resultEntity match { + case modelResultEntity: ModelResultEntity => + extResultDataServiceRef ! ResultResponseMessage(modelResultEntity, tick, nextTick) + case _ => + throw new Exception("Wrong data type!") + } } def apply( diff --git a/src/main/scala/edu/ie3/simona/io/runtime/RuntimeEventLogSink.scala b/src/main/scala/edu/ie3/simona/io/runtime/RuntimeEventLogSink.scala index 2af82e5589..26f7714536 100644 --- a/src/main/scala/edu/ie3/simona/io/runtime/RuntimeEventLogSink.scala +++ b/src/main/scala/edu/ie3/simona/io/runtime/RuntimeEventLogSink.scala @@ -38,12 +38,12 @@ final case class RuntimeEventLogSink( case InitComplete(duration) => log.info( - s"Initialization complete. (duration: ${convertDuration(duration)} )" + s"\u001b[0;32mInitialization complete. (duration: ${convertDuration(duration)})\u001b[0;0m" ) case CheckWindowPassed(tick, duration) => log.info( - s"******* Simulation until ${calcTime(tick)} completed. ${durationAndMemoryString(duration)} ******" + s"\u001b[0;32m******* Simulation until ${calcTime(tick)} completed. ${durationAndMemoryString(duration)} ******\u001b[0;0m" ) case Ready(tick, duration) => diff --git a/src/main/scala/edu/ie3/simona/model/em/EmTools.scala b/src/main/scala/edu/ie3/simona/model/em/EmTools.scala index 8a10b9c335..312db41c27 100644 --- a/src/main/scala/edu/ie3/simona/model/em/EmTools.scala +++ b/src/main/scala/edu/ie3/simona/model/em/EmTools.scala @@ -75,4 +75,8 @@ object EmTools { s"The set power $setPower for ${flexOptions.modelUuid} must not be greater than the maximum power ${flexOptions.max}!" ) } + + def minOptionTicks(a: Option[Long], b: Option[Long]): Option[Long] = { + a.flatMap(x => b.map(y => Math.min(x, y))).orElse(a).orElse(b) + } } diff --git a/src/main/scala/edu/ie3/simona/ontology/messages/flex/FlexibilityMessage.scala b/src/main/scala/edu/ie3/simona/ontology/messages/flex/FlexibilityMessage.scala index c225f5bcb4..1a74142417 100644 --- a/src/main/scala/edu/ie3/simona/ontology/messages/flex/FlexibilityMessage.scala +++ b/src/main/scala/edu/ie3/simona/ontology/messages/flex/FlexibilityMessage.scala @@ -37,6 +37,13 @@ object FlexibilityMessage { val modelUuid: UUID } + + final case class SetPointFlexRequest( + tick: Long, + setPower: Power, + nextSetPointTick: Long + ) extends FlexRequest + /** Message that registers a flex options provider with an * [[edu.ie3.simona.agent.em.EmAgent]]. * @@ -85,7 +92,6 @@ object FlexibilityMessage { */ trait ProvideFlexOptions extends FlexResponse - final case class ProvideExtEmSetPoint(override val tick: Long, setPower: Power) extends FlexRequest /** Message that issues flexibility control to a flex options provider, i.e. a * feasible set point is delivered that the flex options provider should diff --git a/src/main/scala/edu/ie3/simona/scheduler/Scheduler.scala b/src/main/scala/edu/ie3/simona/scheduler/Scheduler.scala index 2fc075b779..3d13d63bb7 100644 --- a/src/main/scala/edu/ie3/simona/scheduler/Scheduler.scala +++ b/src/main/scala/edu/ie3/simona/scheduler/Scheduler.scala @@ -116,14 +116,12 @@ object Scheduler { // since we're active and any scheduled activation can still influence our next activation, // we can directly unlock the lock with the key unlockKey.foreach { - //println(this + " now Unlock ScheduleActivation from " + actor + ", newTick = " + newTick + ", newCore: " + newCore) _.unlock() } toActivate.foreach { _ ! Activation(newCore.activeTick) } - //println(this + " ScheduleActivation from " + actor + ", newTick = " + newTick + ", newCore: " + newCore) active(data, newCore) @@ -139,14 +137,12 @@ object Scheduler { toActivate.foreach { _ ! Activation(updatedCore.activeTick) } - //println(this + " Completion from " + actor + ", maybeNextTick = " + maybeNewTick + ", updatedCore: " + updatedCore) updatedCore } .map { newCore => newCore .maybeComplete() .map { case (maybeScheduleTick, inactiveCore) => - //println(this + " Send Completion from " + data.activationAdapter + " to " + data.parent) data.parent ! Completion( data.activationAdapter, maybeScheduleTick, diff --git a/src/main/scala/edu/ie3/simona/service/em/ExtEmDataService.scala b/src/main/scala/edu/ie3/simona/service/em/ExtEmDataService.scala index 3afa1315cf..e2947cc5e9 100644 --- a/src/main/scala/edu/ie3/simona/service/em/ExtEmDataService.scala +++ b/src/main/scala/edu/ie3/simona/service/em/ExtEmDataService.scala @@ -7,7 +7,7 @@ import edu.ie3.simona.api.data.em.ontology.{EmDataMessageFromExt, ProvideEmData} import edu.ie3.simona.api.data.ontology.DataMessageFromExt import edu.ie3.simona.exceptions.WeatherServiceException.InvalidRegistrationRequestException import edu.ie3.simona.exceptions.{InitializationException, ServiceException} -import edu.ie3.simona.ontology.messages.flex.FlexibilityMessage.{FlexRequest, IssuePowerControl, ProvideExtEmSetPoint} +import edu.ie3.simona.ontology.messages.flex.FlexibilityMessage.{FlexRequest, IssuePowerControl, SetPointFlexRequest} import edu.ie3.simona.ontology.messages.services.ServiceMessage.ExtEmDataServiceRegistrationMessage import edu.ie3.simona.ontology.messages.services.ServiceMessage.RegistrationResponseMessage.{RegistrationSuccessfulMessage, WrappedRegistrationSuccessfulMessage} import edu.ie3.simona.ontology.messages.services.{DataMessage, ServiceMessage} @@ -178,14 +178,15 @@ final case class ExtEmDataService( None } } - log.debug(s"Received ActorToEmData = $actorToEmData") if (actorToEmData.nonEmpty) { actorToEmData.foreach { - case (actor, setPoint) => actor ! ProvideExtEmSetPoint( - tick, - setPoint - ) + case (actor, setPoint) => + actor ! SetPointFlexRequest( + tick, + setPoint, + tick + 900L + ) } } (serviceStateData.copy(extEmDataMessage = None), None) diff --git a/src/main/scala/edu/ie3/simona/service/results/ExtResultDataProvider.scala b/src/main/scala/edu/ie3/simona/service/results/ExtResultDataProvider.scala index b64f553d77..b2c87b329b 100644 --- a/src/main/scala/edu/ie3/simona/service/results/ExtResultDataProvider.scala +++ b/src/main/scala/edu/ie3/simona/service/results/ExtResultDataProvider.scala @@ -1,6 +1,6 @@ package edu.ie3.simona.service.results -import edu.ie3.datamodel.models.result.ResultEntity +import edu.ie3.datamodel.models.result.{ModelResultEntity, ResultEntity} import edu.ie3.datamodel.models.result.system.PvResult import edu.ie3.simona.api.data.results.ExtResultData import edu.ie3.simona.api.data.results.ontology.{ProvideResultEntities, RequestResultEntities, ResultDataMessageFromExt} @@ -36,7 +36,7 @@ object ExtResultDataProvider { /** ResultEventListener -> ExtResultDataProvider */ final case class ResultResponseMessage( - result: ResultEntity, + result: ModelResultEntity, tick: Long, nextTick: Option[Long] ) @@ -148,7 +148,7 @@ object ExtResultDataProvider { activation.tick, Set() ) ++ serviceStateData.extResultScheduler.getOrElse(-2L, Set()) - val receiveDataMap = ReceiveDataMap[UUID, ResultEntity](expectedKeys) + val receiveDataMap = ReceiveDataMap[UUID, ModelResultEntity](expectedKeys) updatedSchedule = updatedSchedule.-(activation.tick) //ctx.log.info(s"[requestResults] tick ${msg.tick} -> updatedSchedule = $updatedSchedule") @@ -287,12 +287,12 @@ object ExtResultDataProvider { // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- final case class ExtResultStateData( - extResultData: ExtResultData, - currentTick: Long, - extResultsMessage: Option[ResultDataMessageFromExt] = None, - resultStorage: Map[UUID, ResultEntity] = Map.empty, - extResultScheduler: Map[Long, Set[UUID]] = Map.empty, - receiveDataMap: Option[ReceiveDataMap[UUID, ResultEntity]] = None, + extResultData: ExtResultData, + currentTick: Long, + extResultsMessage: Option[ResultDataMessageFromExt] = None, + resultStorage: Map[UUID, ModelResultEntity] = Map.empty, + extResultScheduler: Map[Long, Set[UUID]] = Map.empty, + receiveDataMap: Option[ReceiveDataMap[UUID, ModelResultEntity]] = None, ) final case class InitExtResultData( extResultData: ExtResultData diff --git a/src/main/scala/edu/ie3/simona/sim/SimonaSim.scala b/src/main/scala/edu/ie3/simona/sim/SimonaSim.scala index f13c63999c..c0a8a22be8 100644 --- a/src/main/scala/edu/ie3/simona/sim/SimonaSim.scala +++ b/src/main/scala/edu/ie3/simona/sim/SimonaSim.scala @@ -217,8 +217,6 @@ object SimonaSim { ref ! ExtSimAdapter.Stop(simulationSuccessful) } - //ctx.log.info(s"delayedStoppingActors = ${actorData.delayedStoppingActors}") - // if the simulation is successful, we're waiting for the delayed // stopping listeners to terminate and thus do not unwatch them here actorData.delayedStoppingActors.foreach( diff --git a/src/main/scala/edu/ie3/simona/sim/setup/SimonaExtSimSetup.scala b/src/main/scala/edu/ie3/simona/sim/setup/SimonaExtSimSetup.scala index 4e76201b15..3fad0bbb75 100644 --- a/src/main/scala/edu/ie3/simona/sim/setup/SimonaExtSimSetup.scala +++ b/src/main/scala/edu/ie3/simona/sim/setup/SimonaExtSimSetup.scala @@ -76,6 +76,7 @@ abstract class SimonaExtSimSetup( val runtimeEventQueue: Option[LinkedBlockingQueue[RuntimeEvent]] = None, override val args: Array[String] ) extends SimonaSetup { + override def logOutputDir: String = resultFileHierarchy.logOutputDir override def gridAgents( context: ActorContext[_], @@ -323,9 +324,9 @@ abstract class SimonaExtSimSetup( simScheduler: ActorRef[SchedulerMessage], extSim: ExtSimulation ): ExtSimSetupData = { - // ExtSimAdapter - val extScheduler = scheduler(context, parent = rootScheduler) + val extScheduler = scheduler(context, rootScheduler) + // ExtSimAdapter val extSimAdapterPhase1 = context.toClassic.simonaActorOf( ExtSimAdapter.props(extScheduler.toClassic), s"1", @@ -348,8 +349,6 @@ abstract class SimonaExtSimSetup( val dataConnections = extSim.getDataConnections - println("dataConnections = " + dataConnections) - dataConnections.asScala.foreach { case extPrimaryData: ExtPrimaryData => val extPrimaryDataService = extPrimaryDataSimulationSetup( @@ -393,9 +392,6 @@ abstract class SimonaExtSimSetup( ) new Thread(extSim, s"External simulation").start() - println("DataSerivces = " + extDataServicesMap) - println("DataProvider = " + extDataListenerMap) - ExtSimSetupData( Iterable( extSimAdapterData.getPhase1Adapter, @@ -441,6 +437,8 @@ abstract class SimonaExtSimSetup( INIT_SIM_TICK, ), ) + println("... pause extPrimaryDataSimulationSetup ...") + Thread.sleep(3000) extPrimaryDataService } @@ -478,6 +476,8 @@ abstract class SimonaExtSimSetup( INIT_SIM_TICK, ), ) + println("... pause extEmDataSimulationSetup ...") + Thread.sleep(3000) extEmDataService } @@ -531,6 +531,8 @@ abstract class SimonaExtSimSetup( 2, ScheduleLock.singleKey(context, simScheduler, INIT_SIM_TICK), ) + println("... pause extResultDataSimulationSetup ...") + Thread.sleep(3000) extResultDataProvider }