forked from animatedread/Warrior_EA
43 lines
1.7 KiB
MQL5
43 lines
1.7 KiB
MQL5
|
|
//+------------------------------------------------------------------+
|
||
|
|
//| ArrayLayer.mqh |
|
||
|
|
//| AnimateDread |
|
||
|
|
//| https://www.mql5.com |
|
||
|
|
//+------------------------------------------------------------------+
|
||
|
|
//| CArrayLayer - array-of-CLayer container, CNet's own topology |
|
||
|
|
//| storage. Needs CLayer (AI\Network.mqh) already declared - |
|
||
|
|
//| included from Network.mqh at the exact point this class used to |
|
||
|
|
//| sit (right after CLayer), so ordering matches the original file. |
|
||
|
|
//| Extracted verbatim (SOLID cleanup) - no logic changes. |
|
||
|
|
//+------------------------------------------------------------------+
|
||
|
|
class CArrayLayer : public CArrayObj
|
||
|
|
{
|
||
|
|
public:
|
||
|
|
CArrayLayer(void) {};
|
||
|
|
~CArrayLayer(void) {};
|
||
|
|
//---
|
||
|
|
virtual bool CreateElement(uint neurons, uint outputs);
|
||
|
|
virtual int Type(void) const { return defArrayLayer; }
|
||
|
|
};
|
||
|
|
//+------------------------------------------------------------------+
|
||
|
|
//| |
|
||
|
|
//+------------------------------------------------------------------+
|
||
|
|
bool CArrayLayer::CreateElement(uint neurons, uint outputs)
|
||
|
|
{
|
||
|
|
if(neurons <= 0)
|
||
|
|
return false;
|
||
|
|
//---
|
||
|
|
CLayer *layer = new CLayer(outputs);
|
||
|
|
if(CheckPointer(layer) == POINTER_INVALID)
|
||
|
|
return false;
|
||
|
|
//---
|
||
|
|
if(!layer.Reserve(neurons + 1))
|
||
|
|
return false;
|
||
|
|
for(uint i = 0; i <= neurons; i++)
|
||
|
|
{
|
||
|
|
if(!layer.CreateElement(i))
|
||
|
|
return false;
|
||
|
|
layer.IncreaseTotal();
|
||
|
|
}
|
||
|
|
//---
|
||
|
|
return (Add(layer));
|
||
|
|
}
|