MCPcopy Create free account
hub / github.com/FidoProject/Fido / newControlWires

Method newControlWires

src/WireFitQLearn.cpp:252–272  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

250}
251
252std::vector<Wire> WireFitQLearn::newControlWires(const Wire &correctWire, std::vector<Wire> controlWires) {
253 double error = 0;
254 int iterations = 0;
255
256 do {
257 for(unsigned int a = 0; a < controlWires.size(); a++) {
258 double deltaReward = -2 * (-interpolator->getReward(controlWires, correctWire.action) + correctWire.reward)*interpolator->rewardDerivative(correctWire.action, controlWires[a], controlWires);
259 controlWires[a].reward = controlWires[a].reward - controlPointsGDLearningRate*deltaReward;
260 for(unsigned int b = 0; b < controlWires[a].action.size(); b++) {
261 double deltaActionTerm = -2 * (-interpolator->getReward(controlWires, correctWire.action) + correctWire.reward)*interpolator->actionTermDerivative(correctWire.action[b], controlWires[a].action[b], correctWire.action, controlWires[a], controlWires);
262 controlWires[a].action[b] = controlWires[a].action[b] - controlPointsGDLearningRate*deltaActionTerm;
263 }
264 }
265
266 error = pow(correctWire.reward - interpolator->getReward(controlWires, correctWire.action), 2);
267 iterations++;
268 } while(error > controlPointsGDErrorTarget && iterations < controlPointsGDMaxIterations);
269
270 return controlWires;
271
272}
273
274std::vector<Wire> WireFitQLearn::newControlWires(const std::vector<Wire> &correctWires, std::vector<Wire> controlWires) {
275 double error = 0;

Callers

nothing calls this directly

Calls 4

getRewardMethod · 0.80
rewardDerivativeMethod · 0.80
actionTermDerivativeMethod · 0.80
sizeMethod · 0.45

Tested by

no test coverage detected