载入中...
搜索中...
未找到
Agent.cpp
浏览该文件的文档.
14 if (o.features.size() != features || o.legalActions.size() > actions || !std::isfinite(o.reward) ||
17 if (o.outcome != Outcome::Running && o.outcome != Outcome::Success && o.outcome != Outcome::Failure) return false;
31 return c.featureCount > 0 && c.featureCount <= 1024 && c.actionCount > 0 && c.actionCount <= 1024 &&
32 c.hiddenWidth > 0 && c.hiddenWidth <= 64 && c.population > 0 && c.population <= 256 && c.generations > 0 &&
37 std::uint64_t(c.generations) * c.trainingEpochs * c.elites * c.horizon <= 1000000 && c.elites > 0 &&
38 c.elites <= c.population && c.trainingEpochs <= 64 && c.maxFindings <= 256 && std::isfinite(c.dt) &&
43 c.failureWeight <= 1e6 && std::isfinite(c.learningRate) && c.learningRate > 0 && c.learningRate <= 1 &&
53Result<std::uint32_t> sample(const Policy& policy, const Observation& o, detail::Random& random, bool uniform,
55 if (uniform) return Result<std::uint32_t>::success(o.legalActions[random.index(o.legalActions.size())]);
68 if (a.features.size() != b.features.size() || a.legalActions != b.legalActions || a.coverage != b.coverage ||
73 if (!std::isfinite(b.features[i]) || std::abs(double(a.features[i]) - b.features[i]) > tolerance) return false;
80 if (policy.schemaId != "evengine.agent.policy" || policy.schemaVersion != 1 || policy.featureCount == 0 ||
81 policy.featureCount > 1024 || policy.actionCount == 0 || policy.actionCount > 1024 || policy.hiddenWidth == 0 ||
83 policy.weights.size() != detail::weightCount(policy.featureCount, policy.hiddenWidth, policy.actionCount))
85 DiagnosticCode::InvalidArgument, "Unsupported policy schema, version or dimensions", {}, {}, "agent"));
107 if (auto* provider = cap::query<IPolicyBackend>()) return Result<std::string>::success(provider->name());
109 DiagnosticCode::Unsupported, "Tensor backend requires an active AgentTensor module", {}, {}, "agent"));
112Result<std::vector<double>> infer(const Policy& policy, const Observation& observation, Backend backend) {
115 if (!validObservation(observation, policy.featureCount, policy.actionCount) || observation.legalActions.empty())
117 DiagnosticCode::InvalidArgument, "Invalid observation or empty legal action mask", {}, {}, "agent"));
118 if (backend == Backend::Cpu) return Result<std::vector<double>>::success(detail::forward(policy, observation));
121 IPolicyBackend* provider = backend == Backend::Gpu ? cap::query<IGpuPolicyBackend>() : cap::query<IPolicyBackend>();
136 Diagnostic::error(DiagnosticCode::InvalidArgument, "Invalid backend probability", {}, {}, "agent"));
170 if (!validObservation(reset.value(), c.featureCount, c.actionCount) || reset.value().reward != 0)
176 std::set<std::string> episodeCoverage(observation.coverage.begin(), observation.coverage.end());
178 for (std::uint32_t tick = 0; tick < c.horizon && observation.outcome == Outcome::Running; ++tick) {
206 DiagnosticCode::Cancelled, "Coverage storage budget exceeded (65536 points)", {}, {}, "agent"));
259 if (trace.schemaId != "evengine.agent.trace" || trace.schemaVersion != 1 || !std::isfinite(trace.dt) ||
260 trace.dt <= 0 || trace.dt > 60 || !std::isfinite(tolerance) || tolerance < 0 || trace.steps.size() > 1024 ||
261 trace.initial.features.empty() || trace.initial.features.size() > 1024 || trace.initial.reward != 0)
268 Diagnostic::error(DiagnosticCode::InvalidArgument, "Invalid initial trace observation", {}, {}, "agent"));
#define EV_ASSERT(cond,...)
Assert an internal engine invariant (state that must always hold).
Definition Assert.h:37
static Diagnostic error(DiagnosticCode code, std::string message, std::string path={}, DiagnosticDetails details={}, std::string source={})
Construct an error diagnostic with the standard error severity.
Definition Diagnostic.h:125
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
Adapter for a resettable game, simulation, UI or other decision-making environment....
Definition Agent.h:36
virtual Result< Observation > reset(std::uint64_t seed)=0
Reset atomically to the injected seed; return initial state (reward zero).
virtual Result< Observation > step(std::uint32_t action, double dt)=0
Execute one legal action, advance exactly dt seconds, then inspect invariants.
Optional inference service. Providers own their registration and revoke before destruction....
Definition Agent.h:114
virtual Result< std::vector< double > > evaluate(const Policy &policy, const Observation &observation)=0
Evaluate inputs validated by agent::infer; return masked probabilities or structured failure.
void train(Policy &p, const Observation &o, std::uint32_t action, double rate)
Train.
Definition Learning.h:90
std::vector< double > forward(const Policy &p, const Observation &o)
Forward.
Definition Learning.h:65
std::size_t weightCount(std::size_t inputs, std::size_t hidden, std::size_t actions)
Weight count.
Definition Learning.h:34
Definition Agent.cpp:10
Result< std::vector< double > > infer(const Policy &policy, const Observation &observation, Backend backend)
Compute masked action probabilities with validated version-1 owning weights.
Definition Agent.cpp:112
Result< std::string > backendName(Backend backend)
Return an owning backend label, or Unsupported if Tensor is unavailable; owner thread only.
Definition Agent.cpp:93
Result< void > validatePolicy(const Policy &policy)
Validate the complete owning policy before inference/import, with no mutation or callbacks.
Definition Agent.cpp:79
Result< void > replay(const Trace &trace, IEnvironment &environment, double tolerance)
Reset and replay actual actions, checking all observations and failure evidence.
Definition Agent.cpp:258
@ Random
@ EvolutionLearning
@ Success
@ Running
@ Failure
Backend
Explicit backend; Tensor is eager CPU, Gpu accelerates inference and SGD via agent_tensor.
Definition Agent.h:50
@ Tensor
@ InvalidArgument
@ Cancelled
@ Unsupported
@ Conflict
Bounded search configuration; seed streams for environment, search and learning are separate.
Definition Agent.h:53
Owning state projection; action IDs index a fixed domain action catalogue.
Definition Agent.h:16
Owning version-1 portable network weights; import validates the entire value before use.
Definition Agent.h:99
Owning search result; reward, coverage and failures remain separate evidence.
Definition Agent.h:148
In-memory versioned replay evidence, independent of learned model state.
Definition Agent.h:89