载入中...
搜索中...
未找到
Agent.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4#include "common/Result.h"
5
6#include <cstdint>
7#include <string>
8#include <vector>
9
10namespace eve::agent {
11
13enum class Outcome { Running, Success, Failure };
14
17 std::vector<float> features;
18 std::vector<std::uint32_t> legalActions;
19 std::vector<std::string> coverage;
20 double reward = 0;
22 std::string finding;
23};
24
37public:
39 virtual ~IEnvironment() = default;
41 [[nodiscard]] virtual Result<Observation> reset(std::uint64_t seed) = 0;
43 [[nodiscard]] virtual Result<Observation> step(std::uint32_t action, double dt) = 0;
44};
45
48
50enum class Backend { Cpu, Tensor, Gpu };
51
53struct Config {
54 std::uint32_t featureCount = 1;
55 std::uint32_t actionCount = 2;
56 std::uint32_t population = 24;
57 std::uint32_t generations = 8;
58 std::uint32_t horizon = 32;
59 std::uint32_t elites = 6;
60 std::uint32_t hiddenWidth = 16;
61 std::uint32_t trainingEpochs = 3;
62 std::uint32_t maxFindings = 16;
63 std::uint64_t environmentSeed = 1;
64 std::uint64_t searchSeed = 2;
65 std::uint64_t learningSeed = 3;
66 double dt = 1.0 / 60.0;
67 double mutationProbability = 0.2;
68 double randomProbability = 0.2;
69 double coverageWeight = 0;
70 double failureWeight = 0;
71 double learningRate = 0.01;
74};
75
77struct TraceStep {
78 std::uint32_t action = 0;
80};
81
89struct Trace {
90 std::string schemaId = "evengine.agent.trace";
91 std::uint32_t schemaVersion = 1;
92 std::uint64_t environmentSeed = 0;
93 double dt = 0;
95 std::vector<TraceStep> steps;
96};
97
99struct Policy {
100 std::string schemaId = "evengine.agent.policy";
101 std::uint32_t schemaVersion = 1;
102 std::uint32_t featureCount = 0;
103 std::uint32_t actionCount = 0;
104 std::uint32_t hiddenWidth = 0;
105 std::vector<double> weights;
106};
107
115public:
116 static constexpr const char* capabilityName = "agent.IPolicyBackend";
118 virtual ~IPolicyBackend() = default;
120 [[nodiscard]] virtual std::string name() const = 0;
122 [[nodiscard]] virtual Result<std::vector<double>> evaluate(const Policy& policy,
123 const Observation& observation) = 0;
124};
125
132public:
133 static constexpr const char* capabilityName = "agent.IGpuPolicyBackend";
135 [[nodiscard]] virtual Result<void> available() const = 0;
137 [[nodiscard]] virtual Result<Policy> train(const Policy& policy, const Observation& observation,
138 std::uint32_t action, double rate) = 0;
139};
140
142[[nodiscard]] EVENGINE_API_FOUNDATION Result<void> validatePolicy(const Policy& policy);
143
146
148struct Report {
151 std::vector<Trace> findings;
152 std::vector<std::string> coverage;
153 std::uint64_t episodes = 0;
154 std::uint64_t steps = 0;
155 std::uint64_t failures = 0;
156 std::uint64_t trainingSamples = 0;
157 double bestScore = 0;
158 std::string backend = "cpu-mlp";
159 std::string trainingBackend = "cpu-sgd";
160};
161
176[[nodiscard]] EVENGINE_API_FOUNDATION Result<Report> run(const Config& config, IEnvironment& environment);
177
187 const Observation& observation,
188 Backend backend = Backend::Cpu);
189
198[[nodiscard]] EVENGINE_API_FOUNDATION Result<void> replay(const Trace& trace, IEnvironment& environment,
199 double absoluteTolerance = 1e-6);
200
201} // namespace eve::agent
Trace trace
Definition Agent.cpp:49
#define EVENGINE_API_FOUNDATION
每个链接组(link group)各自的导出宏。
Definition Export.h:106
std::weak_ptr< Run > run
Definition OnnxGpgpu.cpp:25
std::uint32_t seed
Definition PointSet.cpp:807
Move-only, checked operation results for the common layer.
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Adapter for a resettable game, simulation, UI or other decision-making environment....
Definition Agent.h:36
virtual ~IEnvironment()=default
Releases IEnvironment resources.
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 GPU policy service, registered independently of eager tensor CPU. @ownership Same synchronou...
Definition Agent.h:131
virtual Result< void > available() const =0
Check live device availability without executing an environment callback.
static constexpr const char * capabilityName
Definition Agent.h:133
virtual Result< Policy > train(const Policy &policy, const Observation &observation, std::uint32_t action, double rate)=0
GPU forward/backprop/update on a validated sample; publish owning weights atomically.
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.
static constexpr const char * capabilityName
Definition Agent.h:116
virtual ~IPolicyBackend()=default
Releases IPolicyBackend resources.
virtual std::string name() const =0
Owning device/backend label; must describe the actual execution path.
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
Strategy
Explicit algorithm choice, also used for equal-budget random baselines.
Definition Agent.h:47
Outcome
Domain outcome, independent of reward and infrastructure errors.
Definition Agent.h:13
Backend
Explicit backend; Tensor is eager CPU, Gpu accelerates inference and SGD via agent_tensor.
Definition Agent.h:50
Bounded search configuration; seed streams for environment, search and learning are separate.
Definition Agent.h:53
std::uint32_t featureCount
Definition Agent.h:54
double learningRate
Definition Agent.h:71
std::uint64_t environmentSeed
Definition Agent.h:63
double coverageWeight
Definition Agent.h:69
double randomProbability
Definition Agent.h:68
std::uint64_t learningSeed
Definition Agent.h:65
std::uint64_t searchSeed
Definition Agent.h:64
std::uint32_t generations
Definition Agent.h:57
double mutationProbability
Definition Agent.h:67
double failureWeight
Definition Agent.h:70
Strategy strategy
Definition Agent.h:72
std::uint32_t trainingEpochs
Definition Agent.h:61
std::uint32_t population
Definition Agent.h:56
Backend backend
Definition Agent.h:73
std::uint32_t elites
Definition Agent.h:59
std::uint32_t maxFindings
Definition Agent.h:62
std::uint32_t horizon
Definition Agent.h:58
std::uint32_t actionCount
Definition Agent.h:55
std::uint32_t hiddenWidth
Definition Agent.h:60
Owning state projection; action IDs index a fixed domain action catalogue.
Definition Agent.h:16
std::vector< std::uint32_t > legalActions
Definition Agent.h:18
std::string finding
Definition Agent.h:22
std::vector< std::string > coverage
Definition Agent.h:19
std::vector< float > features
Definition Agent.h:17
Owning version-1 portable network weights; import validates the entire value before use.
Definition Agent.h:99
std::uint32_t hiddenWidth
Definition Agent.h:104
std::string schemaId
Definition Agent.h:100
std::uint32_t schemaVersion
Definition Agent.h:101
std::uint32_t actionCount
Definition Agent.h:103
std::vector< double > weights
Definition Agent.h:105
std::uint32_t featureCount
Definition Agent.h:102
Owning search result; reward, coverage and failures remain separate evidence.
Definition Agent.h:148
std::vector< std::string > coverage
Definition Agent.h:152
double bestScore
Definition Agent.h:157
std::vector< Trace > findings
Definition Agent.h:151
std::uint64_t failures
Definition Agent.h:155
std::string trainingBackend
Definition Agent.h:159
std::string backend
Definition Agent.h:158
std::uint64_t trainingSamples
Definition Agent.h:156
std::uint64_t episodes
Definition Agent.h:153
std::uint64_t steps
Definition Agent.h:154
Owning executed action and resulting observation; no domain pointers are retained.
Definition Agent.h:77
std::uint32_t action
Definition Agent.h:78
Observation observation
Definition Agent.h:79
In-memory versioned replay evidence, independent of learned model state.
Definition Agent.h:89
Observation initial
Definition Agent.h:94
std::vector< TraceStep > steps
Definition Agent.h:95
std::string schemaId
Definition Agent.h:90
std::uint32_t schemaVersion
Definition Agent.h:91
std::uint64_t environmentSeed
Definition Agent.h:92