소스 검색

other cost functions

rparedis 2 년 전
부모
커밋
be1942a535
3개의 변경된 파일49개의 추가작업 그리고 31개의 파일을 삭제
  1. BIN
      de2/__pycache__/elements.cpython-38.pyc
  2. 32 16
      de2/elements.py
  3. 17 15
      mapper.py

BIN
de2/__pycache__/elements.cpython-38.pyc


+ 32 - 16
de2/elements.py

@@ -398,27 +398,43 @@ class Port(CoupledDEVS):
 		}
 
 
-		Z = 0.0
-		S1 = 0.0
-		S2 = 0.0
-		S3 = 0.0
-		S4 = 0.0
+		S1 = {
+			"strong": 0.0,
+			"average": 0.0,
+			"weak": 0.0
+		}
+		S2 = {
+			"strong": 0.0,
+			"average": 0.0,
+			"weak": 0.0
+		}
+		S3 = {
+			"strong": 0.0,
+			"average": 0.0,
+			"weak": 0.0
+		}
+		S4 = {
+			"strong": 0.0,
+			"average": 0.0,
+			"weak": 0.0
+		}
 		for vessel in list(self.pool.state["waiting"].values()) + self.sailer.state["vessels"]:
 			T_Tug_S = vessel.footprint.sailing_time / 3600
 			T_Tug_P = vessel.footprint.tugging_time / 3600
 			T_Tug_W = vessel.footprint.idle_time / 3600
 
-			S1 += C_Tug_S[vessel.category] * T_Tug_S
-			S2 += C_Tug_P[vessel.category] * T_Tug_P
-			S3 += C_Tug_W[vessel.category] * T_Tug_W
-			S4 += C_Tug_F[vessel.category] * 31
-			Z += S1 + S2 + S3 + S4
-
-		print("OVERALL COST: %f euros" % Z)
-		print("Travelling: %f euros" % S1)
-		print("Tugging: %f euros" % S2)
-		print("Waiting: %f euros" % S3)
-		print("Fixed: %f euros" % S4)
+			S1[vessel.category] += C_Tug_S[vessel.category] * T_Tug_S
+			S2[vessel.category] += C_Tug_P[vessel.category] * T_Tug_P
+			S3[vessel.category] += C_Tug_W[vessel.category] * T_Tug_W
+			S4[vessel.category] += C_Tug_F[vessel.category] * 31
+
+		for cat in ["strong", "average", "weak"]:
+			print("\ncategory:", cat)
+			print("OVERALL COST: %f euros" % (S1[cat] + S2[cat] + S3[cat] + S4[cat]))
+			print("Travelling: %f euros" % S1[cat])
+			print("Tugging: %f euros" % S2[cat])
+			print("Waiting: %f euros" % S3[cat])
+			print("Fixed: %f euros" % S4[cat])
 		# print("AVERAGE USAGES:")
 		# S = 0
 		# for vessel in list(self.pool.state["waiting"].values()) + self.sailer.state["vessels"]:

+ 17 - 15
mapper.py

@@ -146,19 +146,21 @@ if __name__ == '__main__':
 
     sim = Simulator(port)
     sim.setClassicDEVS()
-    sim.setRealTime(scale=0.0002)
-    # sim.setTerminationTime(14 * 24 * 60 * 60)  # 14 days
-
-    layer = PoABLayer(sim)
-
-    geoplotlib.set_window_size(640, 760)
-    geoplotlib.tiles_provider({
-        'url': lambda zoom, xtile, ytile: 'https://tile.openstreetmap.org/%d/%d/%d.png' % (zoom, xtile, ytile),
-        'tiles_dir': 'mytiles',
-        'attribution': 'Map tiles by OpenStreetMap Carto, under CC BY 3.0. Data @ OpenStreetMap contributors.'
-    })
-
-    geoplotlib.add_layer(layer)
-    geoplotlib.show()
-
+    # sim.setRealTime(scale=0.0002)
+    # sim.setTerminationTime(31 * 24 * 60 * 60)  # 14 days
+    sim.setTerminationCondition(lambda _, m: m.scheduler.state["index"] >= len(m.scheduler.ivef))
+
+    # layer = PoABLayer(sim)
+    #
+    # geoplotlib.set_window_size(640, 760)
+    # geoplotlib.tiles_provider({
+    #     'url': lambda zoom, xtile, ytile: 'https://tile.openstreetmap.org/%d/%d/%d.png' % (zoom, xtile, ytile),
+    #     'tiles_dir': 'mytiles',
+    #     'attribution': 'Map tiles by OpenStreetMap Carto, under CC BY 3.0. Data @ OpenStreetMap contributors.'
+    # })
+    #
+    # geoplotlib.add_layer(layer)
+    # geoplotlib.show()
+
+    sim.simulate()
     sim.model.print_statistics()