🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
DifferentialCorrectorProfile.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "TargeterProfile.hpp"
25#include "AstCore/ShooterControl.hpp"
26#include "AstCore/ShooterResult.hpp"
27#include "AstCore/ScriptingToolProfile.hpp"
28#include "AstCore/TargeterGraph.hpp"
29
30AST_NAMESPACE_BEGIN
31
44
47{
48 eSecantMethod,
49};
50
56
59{
61};
62
64enum class EScaleGoals
65{
67};
68
69class Sequence;
70
73{
74public:
76 AST_PROPERT(useHomotopy)
77 AST_PROPERT(numHomotopySteps)
78 AST_PROPERT(useLineSearch)
79 AST_PROPERT(lineSearchTolerance)
80 AST_PROPERT(lineSearchMaxNumCalls)
81 AST_PROPERT(lineSearchLowerBound)
82 AST_PROPERT(lineSearchUpperBound)
83 AST_PROPERT(maxIterations)
84 using ControlVector = std::vector<SharedPtr<ShooterControl>>;
85 using ResultVector = std::vector<SharedPtr<ShooterResult>>;
86 using TargeterGraphVector = std::vector<SharedPtr<TargeterGraph>>;
87
88 static DifferentialCorrectorProfile* New();
89
91 ~DifferentialCorrectorProfile() override = default;
92
93 errc_t execute() override;
94
95
96protected:
98 errc_t executeRelatedCommand() const;
99
101 Sequence* getRelatedSequence() const;
102
104 Command* getRelatedCommand() const;
105PROPERTIES:
106 bool useHomotopy() const{return useHomotopy_;}
107 void setUseHomotopy(bool useHomotopy){useHomotopy_ = useHomotopy;}
108
109 int numHomotopySteps() const{return numHomotopySteps_;}
110 void setNumHomotopySteps(int numHomotopySteps){numHomotopySteps_ = numHomotopySteps;}
111
112
113 bool useLineSearch() const{return useLineSearch_;}
114 void setUseLineSearch(bool useLineSearch){useLineSearch_ = useLineSearch;}
115
116 double lineSearchTolerance() const{return lineSearchTolerance_;}
117 void setLineSearchTolerance(double tolerance){lineSearchTolerance_ = tolerance;}
118
119 int lineSearchMaxNumCalls() const{return lineSearchMaxNumCalls_;}
120 void setLineSearchMaxNumCalls(int maxNumCalls){lineSearchMaxNumCalls_ = maxNumCalls;}
121
122 double lineSearchLowerBound() const{return lineSearchLowerBound_;}
123 void setLineSearchLowerBound(double lowerBound){lineSearchLowerBound_ = lowerBound;}
124
125 double lineSearchUpperBound() const{return lineSearchUpperBound_;}
126 void setLineSearchUpperBound(double upperBound){lineSearchUpperBound_ = upperBound;}
127
128 int maxIterations() const{return maxIterations_;}
129 void setMaxIterations(int maxIterations){maxIterations_ = maxIterations;}
130public:
131 ERootFindingAlgorithm rootFindingAlgorithm() const{return rootFindingAlgorithm_;}
132 void setRootFindingAlgorithm(ERootFindingAlgorithm algorithm){rootFindingAlgorithm_ = algorithm;}
133
134 EFiniteDifferenceMethod finiteDifferenceMethod() const{return finiteDifferenceMethod_;}
135 void setFiniteDifferenceMethod(EFiniteDifferenceMethod method){finiteDifferenceMethod_ = method;}
136
137 EConvergenceCriteria convergenceCriteria() const{return convergenceCriteria_;}
138 void setConvergenceCriteria(EConvergenceCriteria criteria){convergenceCriteria_ = criteria;}
139
140 EScaleControls scaleControls() const{return scaleControls_;}
141 void setScaleControls(EScaleControls controls){scaleControls_ = controls;}
142
143 EScaleGoals scaleGoals() const{return scaleGoals_;}
144 void setScaleGoals(EScaleGoals goals){scaleGoals_ = goals;}
145
146 const ControlVector& controls() const{return controls_;}
147 void setControls(const ControlVector& controls){controls_ = controls;}
148
149 const ResultVector& results() const{return results_;}
150 void setResults(const ResultVector& results){results_ = results;}
151
152 ShooterResult* getResult(StringView name) const;
153 ShooterControl* getControl(StringView name) const;
154private:
155 mutable WeakPtr<Command> relatedCommand_;
156
157 EConvergenceCriteria convergenceCriteria_{EConvergenceCriteria::eEqualityConstraintsWithinTolerance};
158 EFiniteDifferenceMethod finiteDifferenceMethod_{EFiniteDifferenceMethod::eForwardDifference};
159 double lineSearchLowerBound_ = 1e-6;
160 double lineSearchUpperBound_ = 10.0;
161 double lineSearchTolerance_ = 1e-6;
162 int lineSearchMaxNumCalls_ = 10;
163 int maximumRunsToLog_ = 25;
164 int maxIterations_ = 50;
165 int numHomotopySteps_ = 1;
166 ERootFindingAlgorithm rootFindingAlgorithm_{ERootFindingAlgorithm::eSecantMethod};
167 EScaleControls scaleControls_{EScaleControls::eByInitialValue};
168 EScaleGoals scaleGoals_{EScaleGoals::eByDesiredValue};
169 bool useHomotopy_ = false;
170 bool useLineSearch_ = false;
171
172 ControlVector controls_;
173 ResultVector results_;
174 TargeterGraphVector graphs_;
175 SharedPtr<ScriptingToolProfile> scriptingTool_;
176};
177
180AST_NAMESPACE_END
定义 Command.hpp:34
微分修正器配置,用于求解非线性方程,可以用于修正轨道参数以满足约束条件要求
定义 DifferentialCorrectorProfile.hpp:73
任务序列段,内部包含多个任务命令或轨道段,并会按顺序执行
定义 Sequence.hpp:43
共享指针
定义 SharedPtr.hpp:33
控制变量,用于定义微分修正中的控制变量
定义 ShooterControl.hpp:33
结果变量,用于定义微分修正中的结果变量
定义 ShooterResult.hpp:33
目标器配置文件基类
定义 TargeterProfile.hpp:40
virtual errc_t execute()=0
执行目标器配置
弱引用指针
定义 WeakPtr.hpp:35
EScaleControls
控制变量缩放方式
定义 DifferentialCorrectorProfile.hpp:59
@ eByInitialValue
由初始值缩放
EFiniteDifferenceMethod
有限差分方法
定义 DifferentialCorrectorProfile.hpp:39
@ eCentralDifference
中心差分
@ eBackwardDifference
后向差分
@ eForwardDifference
前向差分
ERootFindingAlgorithm
根求解算法
定义 DifferentialCorrectorProfile.hpp:47
EScaleGoals
控制变量缩放目标
定义 DifferentialCorrectorProfile.hpp:65
@ eByDesiredValue
由期望值缩放
EConvergenceCriteria
收敛准则
定义 DifferentialCorrectorProfile.hpp:53
@ eEqualityConstraintsWithinTolerance
等式约束在容差范围内