diff --git a/决策辅助模块 DecisionSupportSystem.h b/决策辅助模块 DecisionSupportSystem.h new file mode 100644 index 0000000..0242c41 --- /dev/null +++ b/决策辅助模块 DecisionSupportSystem.h @@ -0,0 +1,83 @@ +#ifndef DECISION_SUPPORT_SYSTEM_H +#define DECISION_SUPPORT_SYSTEM_H + +#include "DataStructures.h" +#include +#include +#include + +namespace Battlefield { + +class DecisionSupportSystem { +public: + DecisionSupportSystem(); + virtual ~DecisionSupportSystem() = default; + + // 生成决策建议 + virtual std::vector generateSuggestions( + const BattlefieldSituation& situation, + const std::map& constraints) = 0; + + // 评估决策效果 + virtual double evaluateDecision(const DecisionSuggestion& decision, + const BattlefieldSituation& situation) = 0; + + // 设置决策规则 + virtual void setRules(const std::map& rules) = 0; + +protected: + std::map ruleWeights_; + double timeHorizon_{300.0}; // 决策时间范围(秒) +}; + +// 战术决策系统 +class TacticalDecisionSystem : public DecisionSupportSystem { +public: + TacticalDecisionSystem(); + + std::vector generateSuggestions( + const BattlefieldSituation& situation, + const std::map& constraints) override; + + double evaluateDecision(const DecisionSuggestion& decision, + const BattlefieldSituation& situation) override; + + void setRules(const std::map& rules) override; + +private: + // 威胁应对决策 + DecisionSuggestion generateThreatResponse( + const BattlefieldSituation& situation, + const std::vector& highThreatTargets); + + // 侦察任务决策 + DecisionSuggestion generateReconnaissanceMission( + const BattlefieldSituation& situation, + const std::vector& unknownAreas); + + // 防御部署决策 + DecisionSuggestion generateDefenseDeployment( + const BattlefieldSituation& situation, + const std::vector& criticalPoints); + + // 古代防御工事保护决策 + DecisionSuggestion generateAncientFortificationProtection( + const BattlefieldSituation& situation); + + // 计算最优路径 + std::vector calculateOptimalPath( + const GeoCoordinate& start, + const GeoCoordinate& end, + const std::vector& obstacles); + + // 计算火力覆盖范围 + double calculateCoverageArea(const std::vector& positions, + double effectiveRange) const; + + std::vector decisionTemplates_; + std::map resourceAvailability_; +}; + +} // namespace Battlefield + +#endif // DECISION_SUPPORT_SYSTEM_H \ No newline at end of file