TotalTaskPerformanceComponent.cs 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using KYFramework;
  2. using Define = SimulationServer.Utils.Define;
  3. namespace SimulationServer;
  4. public class TotalTaskPerformance
  5. {
  6. public string 任务响应时间 = String.Empty;
  7. public string 总任务耗时 = String.Empty;
  8. public string 任务是否成功 = String.Empty;
  9. public string 火场面积变化率 = String.Empty;
  10. public string 蔓延速度变化率 = String.Empty;
  11. public string 直接灭火面积 = String.Empty;
  12. public string 过火面积 = String.Empty;
  13. public string 伤亡人数 = String.Empty;
  14. }
  15. public class TotalTaskPerformanceComponent : Component
  16. {
  17. public TotalTaskPerformance TotalTaskPerformance = new TotalTaskPerformance();
  18. public void FillData()
  19. {
  20. var mission = GetParent<MHRescueMission>();
  21. TotalTaskPerformance.任务响应时间 = mission.aircrafts.First().TaskResponseTime.ToString("#0.00");
  22. TotalTaskPerformance.总任务耗时 = mission.tn.ToString("#0.00");
  23. TotalTaskPerformance.任务是否成功 = mission.Success ? "成功" : "失败";
  24. //终止时刻过火面积
  25. var end = Fire.burnedCalculate(Define.WIND, mission.slope, mission.tn, mission.InitArea);
  26. TotalTaskPerformance.火场面积变化率 = (end.burnarea/mission.InitArea).ToString("#0.00");
  27. //初始时刻过火面积
  28. var start = Fire.burnedCalculate(Define.WIND, mission.slope, 10*60, mission.InitArea);
  29. //初始时刻过火面积变化(10分钟面积差)/终止时刻过火面积变化(10分钟面积差);总共算四个面积
  30. TotalTaskPerformance.蔓延速度变化率 = (start.burnarea/end.burnarea).ToString("#0.00");
  31. //飞机加地面有效洒水面积叠加
  32. TotalTaskPerformance.直接灭火面积 = mission.area.ToString("#0.00");
  33. TotalTaskPerformance.过火面积 = end.burnarea.ToString("#0.00");
  34. double x = end.burnarea/10000;
  35. double y1 = 0.3096 * Math.Pow(x, 0.4893);
  36. double y2 = 1004.4520 * Math.Pow(x, 0.2193);
  37. double y3 = 0.2312 * Math.Pow(y1, 1.1668);
  38. double deadRoundedInt = Math.Round(y3);
  39. double injuredRoundedInt = Math.Round(y1-y3);
  40. TotalTaskPerformance.伤亡人数 = (deadRoundedInt + injuredRoundedInt).ToString();
  41. }
  42. public Dictionary<string, Dictionary<string, string>> GetReport()
  43. {
  44. Dictionary<string, Dictionary<string, string>> report = new Dictionary<string, Dictionary<string, string>>();
  45. report["总任务表现"] = new Dictionary<string, string>
  46. {
  47. { "任务响应时间/s", TotalTaskPerformance.任务响应时间.ToString() },
  48. { "总任务耗时/s", TotalTaskPerformance.总任务耗时.ToString() },
  49. { "任务成功率/-", TotalTaskPerformance.任务是否成功.ToString() },
  50. { "火场面积变化率/m2/s", TotalTaskPerformance.火场面积变化率.ToString() },
  51. { "蔓延速度变化率m2/s2", TotalTaskPerformance.蔓延速度变化率.ToString() },
  52. { "直接灭火面积/m2", TotalTaskPerformance.直接灭火面积.ToString() },
  53. { "过火面积/m2", TotalTaskPerformance.过火面积.ToString() },
  54. { "伤亡人数/人", TotalTaskPerformance.伤亡人数.ToString() }
  55. };
  56. return report;
  57. }
  58. }