🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
FeasibleRegionStudy.hpp
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "AstCore/Command.hpp"
25
26AST_NAMESPACE_BEGIN
27
35class AST_ANALYZER_API FeasibleRegionVariable: public ObjectNamed
36{
37public:
38 AST_OBJECT(FeasibleRegionVariable)
39public:
40 FeasibleRegionVariable() = default;
41 ~FeasibleRegionVariable() = default;
42
43 double lower() const { return lower_; }
44 void setLower(double lower) { lower_ = lower; }
45
46 double upper() const { return upper_; }
47 void setUpper(double upper) { upper_ = upper; }
48
49 int steps() const { return steps_; }
50 void setSteps(int steps) { steps_ = steps; }
51
52 Expr* expr() const { return expr_.get(); }
53 void setExpr(Expr* expr) { expr_ = expr; }
54
56 void generateValueList();
57
58 const std::vector<double>& values() const { return values_; }
59 std::vector<double>& values() { return values_; }
60
61 errc_t getValue(double& value) const;
62 errc_t setValue(double value);
63
64private:
65 SharedPtr<Expr> expr_;
66 double lower_{};
67 double upper_{};
68 int steps_{10};
69 std::vector<double> values_;
70};
71
72
75class AST_ANALYZER_API FeasibleRegionConstraint: public ObjectNamed
76{
77public:
78 AST_OBJECT(FeasibleRegionConstraint)
79
80public:
81 FeasibleRegionConstraint() = default;
82 ~FeasibleRegionConstraint() = default;
83
84 bool useLower() const { return useLower_; }
85 void setUseLower(bool useLower) { useLower_ = useLower; }
86
87 bool useUpper() const { return useUpper_; }
88 void setUseUpper(bool useUpper) { useUpper_ = useUpper; }
89
90 bool exclude() const { return exclude_; }
91 void setExclude(bool exclude) { exclude_ = exclude; }
92
93 double lower() const { return lower_; }
94 void setLower(double lower) { lower_ = lower; }
95
96 double upper() const { return upper_; }
97 void setUpper(double upper) { upper_ = upper; }
98
99 Expr* expr() const { return expr_.get(); }
100 void setExpr(Expr* expr) { expr_ = expr; }
101
102 errc_t getValue(double& value) const;
103
104private:
105 bool useLower_{};
106 bool useUpper_{};
107 bool exclude_{};
108 double lower_{};
109 double upper_{};
110 SharedPtr<Expr> expr_;
111};
112
113
115class AST_ANALYZER_API FeasibleRegionStudy: public Command
116{
117public:
118 AST_OBJECT(FeasibleRegionStudy)
121 using VariableList = std::vector<SharedPtr<VariableType>>;
122 using ConstraintList = std::vector<SharedPtr<ConstraintType>>;
123public:
124 FeasibleRegionStudy() = default;
125 ~FeasibleRegionStudy() override = default;
126
127 errc_t execute() override;
128
129 VariableList& variables() { return variables_; }
130 const VariableList& variables() const { return variables_; }
131
132 ConstraintList& constraints() { return constraints_; }
133 const ConstraintList& constraints() const { return constraints_; }
134
136 Command* relatedCommand() const { return relatedCommand_.get(); }
137
139 void setRelatedCommand(Command* command) { relatedCommand_ = command; }
140
142 void addVariable(VariableType* variable);
143
145 void removeVariable(VariableType* variable);
146
148 void addConstraint(ConstraintType* constraint);
149
151 void removeConstraint(ConstraintType* constraint);
152
154 int totalRuns() const;
155
157 void stepIndexToVarIndices(int stepIndex, std::vector<int>& indices) const;
158
160 errc_t executeStep(int stepIndex, bool& isFeasible);
161
162private:
163 VariableList variables_;
164 ConstraintList constraints_;
165 mutable WeakPtr<Command> relatedCommand_;
166};
167
170AST_NAMESPACE_END
171
172
173
命令(虚基类),用于定义任务序列中的命令,例如初始状态、轨道机动、轨道预报等
定义 Command.hpp:42
表达式基类
定义 Expr.hpp:40
可行域约束
定义 FeasibleRegionStudy.hpp:76
可行域研究,用于搜索满足约束的解空间
定义 FeasibleRegionStudy.hpp:116
Command * relatedCommand() const
获取关联的执行命令
定义 FeasibleRegionStudy.hpp:136
void setRelatedCommand(Command *command)
设置关联的执行命令
定义 FeasibleRegionStudy.hpp:139
可行域变量
定义 FeasibleRegionStudy.hpp:36
命名对象
定义 ObjectNamed.hpp:36
共享指针
定义 SharedPtr.hpp:33
变量列表
定义 VariableList.hpp:38
弱引用指针
定义 WeakPtr.hpp:35