From 991e154396860fc22625ea552c5c0f7cf9f28fcc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 27 Aug 2025 02:16:30 +0000 Subject: [PATCH 1/3] Initial plan From 69cbb6d69e9ede2957cc93b671907b96df05e658 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 27 Aug 2025 02:20:17 +0000 Subject: [PATCH 2/3] Initial plan to fix Config import error Co-authored-by: SimplyAISolution <124332391+SimplyAISolution@users.noreply.github.com> --- ai_evo/__pycache__/config.cpython-312.pyc | Bin 0 -> 1970 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 ai_evo/__pycache__/config.cpython-312.pyc diff --git a/ai_evo/__pycache__/config.cpython-312.pyc b/ai_evo/__pycache__/config.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..56015517b513c105e45cd91c88520656df398860 GIT binary patch literal 1970 zcmcIky^kAJ5Pxq!>^=J~2FKz<5yDC?L@SPS6rc-11fob3E^^RVL91oo^Lc&iUGsK* z#?~rHamAekiKy)I3W`K0MJf0LC?nB0IwWAB2%@4p#gULwF|!}WX9=VfjO2MU@69~V z{N}gshn1BA0lDA4-}+r5~^_Wj})JCW@QCnL2~+=HsWGJ z8WIEdV+m%F?X2zW2-bFf&PmOX9?-;uduBNUa*x(^Rj6Cn{cx*Nwmo zcq9p5m#{>q8Atl~@73zF>$R5G;Wg27T`p>UPi)mbaP5xi7+1DErx)0sYg}=+ZQ;2c zfZ)FmP21qxUd{5{roFk|9YmU8091it43`0_^~}Rk{ntU=B0pDN*;T$;`mJ0U>EGx- zmCrpYpS!CZmfzY{zRph}1m-(y6+BEuSf>|3jYvq^ur5j)BNha}mqPg=> zof~^M#@7D3cUKQfwTV^}B{;Rx>4BLvfhA1e0W~7hzqK-B2__{H(%WRA0R?9c-Nfaq ze#`9gbizr+FG1!|!-_EwoA6%-h4r4=4dRN!y>R^Lq;zJYok^M>Im?#nDqc@FJR1Z*l+IL9Q*qp9fut`lSvMYm_L`mcz*tb%0UXt!T@qs z%d;&G-(frgYQ`NzdBMAmY4M15eJlexl#=K*a1#0l0 zQ`hDCCt#$Tk72WjZ<%X$xM4&E!{~Ud=b*i87+>^ECq2m<2JL!ZX@RQepX8{zIt6te)!R=& zZPDZ&%+}>db$gxeKxp8_7cTtMGwoth{UxymA^0ZwIFBQlQu-??|D{yu7JWic$M^mX DS!$8t literal 0 HcmV?d00001 From 5cd4828a516424695bc0668dbd07a07170e33f19 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 27 Aug 2025 02:22:20 +0000 Subject: [PATCH 3/3] Fix Config import error by adding missing Config class Co-authored-by: SimplyAISolution <124332391+SimplyAISolution@users.noreply.github.com> --- ai_evo/__pycache__/config.cpython-312.pyc | Bin 1970 -> 4025 bytes ai_evo/__pycache__/genome.cpython-312.pyc | Bin 0 -> 1970 bytes ai_evo/__pycache__/rng.cpython-312.pyc | Bin 0 -> 1967 bytes ai_evo/__pycache__/simulation.cpython-312.pyc | Bin 0 -> 20278 bytes ai_evo/__pycache__/world.cpython-312.pyc | Bin 0 -> 1813 bytes ai_evo/config.py | 43 ++++++++++++++++++ 6 files changed, 43 insertions(+) create mode 100644 ai_evo/__pycache__/genome.cpython-312.pyc create mode 100644 ai_evo/__pycache__/rng.cpython-312.pyc create mode 100644 ai_evo/__pycache__/simulation.cpython-312.pyc create mode 100644 ai_evo/__pycache__/world.cpython-312.pyc diff --git a/ai_evo/__pycache__/config.cpython-312.pyc b/ai_evo/__pycache__/config.cpython-312.pyc index 56015517b513c105e45cd91c88520656df398860..bc8babc6e8b8ea4e9bcd7dad7b4999e27e5f1068 100644 GIT binary patch literal 4025 zcmcInO>7&-72aJge?BoMJFD7~Yt?a+IF^6v7J9N#^ zGg`KG(e2Aju{1+Zss+U~lNp00tsG5WxtYA8Yel7yyuM)+$`0bXzM(NgFH+rFRJ(iO zmT1i={5pC7_pS4J|12V)5uONL3+kNQL+pbFjeTg(8{B@f#aG?|*`S5n_K_VTVV~@7 zEcTNfAtOF?aER<^A38JyJxa!Wvcp5r<7C2zjtoJ^$ZI|{WT4yj@yP))=|el2i}-!e zQzY&~W9*%_5BeZE=;X&VNkrpHhfrn`*2BM6HYHC?7UW!dUKVeB+u z!Uirg>u`40F53r61x2^yEHf%rPKFvov!8Bb`+UV7apzQ}^dc093p>(Q;PjRtGQ z7l1SJGQ=g4j}zO8#xI}8TSwjk-b8z5{&9Xg-;~~dajrFU>4ErlWEybElaFiLwdTUR zFK)MHFC+J8d-jbV@Ble|{PDu}LgUW!2W zWjiX%MM(JqevirW@5)NSn+eM@F;rP*bFk<$j?F{IP9VX1&mnkSnppAgbAJ`z?}#UZ z7hD)3RQUB;_Zse81=ipLgNhk}1n!IJAc>OTeLfu`A$W9z$tVfKC_=_a1o{y&PDY@Q zRz+#T4%|-NsGYb5PYMQa4MHu-pu}jVrKw4nN>-Rsg7diO95A)JKPrS;>XhfLj{_Q+mhfEO5+OAosX-{4k!2zfZ~(Bo+LUZ z*nxtf+CfuQ3KZ&(R--1Wkc8%1v<#zK6fJVsorkfBH4N;DO?^^%So!3`haYaKjq^M6 zt=LjCvgBCO_hLjvFbLlJSJ=;#UKj!EwL1SXH(-E>LGdC0n&*@f?Tf+BVQDRb8Y2)# zCRSh6clv?lXk33--}-ekHrI^Ix!V5!-5y3|G~M#~y<&?wxW3t2sA9j@-$ffnyEecw zWDL0d?!&uVX5$zAZtp!<0gn~j$)8K`@#FKSE`x-45pPtU^R3vqX5^e37=L#6?D+szZgM{+ zjjWzu>Vk!GoYsAku~1$37;3^gB;YDn7w&}!q}{7=#y66L6q8^z#1W4Z!~C+NnyKlg zrRZRN&?=V-R0_Bi;woaC0HY;chuEW-4MtI3GmJtl){V2rxB^J?7Lb9I{bT-l{LkgD zPrkQBnz2k%%YPNiHzWBk=D#?-d)3cr{#I$;QT-gpnV=KCJiRB*%as(^l9B?cU%>}U zz)VUSWp6;wP9iyly?tIimZw`#y5f ry$>(3n}Ea0?v&h@0iNgo#!Y@FO8kX?b3nfP4Ik&%`ENO-&OZMIvbj6n delta 675 zcmZ9J&ui3B5XblJOVTvIw%TR21=(~_%A;0$=*?D-UNnboL6E`{che@C%`TH&N_!T1 zF7G1#2VQz8^iYIedl38s;zf^oDtZvS=*&wO79V6XZ+?98oymFgwB~(sU8{oUAX zt$OU;X8!T=l6Am@_MPH^yflxDLd&D5C%0w~nJz!iwrmQdyP#u*Y#T$*X$MaqbUI0v zj5-}%E?UdRud@BZesOCCT~P%aUxkqkpdY3}14o`&&4!CXxPj)-B1W0D?Y`UiP(dZM93cILmE=j5kHV}Q75ZpAOe4V+5`3yr5;=N4DU>VT5^Kok-qu3g5C|S@qjMenia}exGFLYXjuU~09qK121wbPMDTaGwT4ab`E}7N? zWVl?Yt?#G=T?H@nY}_9nfH|r7ul0|)(I522Y4jNGV+q42r*W=0W9&=i=5MXe-msq) Ivg(8X0KI>Yj{pDw diff --git a/ai_evo/__pycache__/genome.cpython-312.pyc b/ai_evo/__pycache__/genome.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7ba5d71bf88786ef572dab4c6b25ad68d8cfa3c1 GIT binary patch literal 1970 zcmcIky^kAJ5Pxq!>^=J~2FKz<5yDC?L@SPS6rc-11fob3E^^RVL91ooyYu?iyXNis zjIC9Y!o{5giKy)I3W`K0MJf0LC?nB0IwWAB2%@4p#gULwF|!}WX9=VfjO2MU@69~V z{N}gshn1BA0lDA0-~3%7frQ;+zo{3R2dJrXxpys2ews(qiRo>oemf4k>YdCtgHYmNKSv#MqErt zLt@~5EWs?Ym9?E6!P?5tIjI@a1Dcp{&n%};?$Nrg3Kfnb$?ZfrVYC~ySKHz)+_~QAN19;(RDod(mI12u%)?Us*FoJPKUZGaRlZvKty~%D-{?P; z&pj%iyQ>_Q-`Z8a&QBo(<~wT@JWNGcrx!tuNJv_+E=mg{76ibTLir#)*&qS|)+JGd zCCa&;fSz?lETbzso)xLSWjY)nvj^PA5~?6#1q|^bs6hccO7f7<{;Qy%pVG-Yy}jO@ z8+$j#*8aP9R}V|IiB=OOIJMI0ftfUcB~0G|H6qf#wK8J~CM6Qm+hm~u1!oT3#O14g z)9mnc!b!z1LFPciiZKwI@LvXn^`6=d;)=t)aQx|{bY`NRNvi$-Vb5bRwj0dh-iwr` zz10*IEb%z%2=Jho^#ExvV9asYZ|>b3`}-dqhaEYSNe+ydKbOFGe*T2YK?=*l0CHB- zvn>waVLSqA#vMd?!8?v=@rZVOECV@|lIS&X6A~q=*$KRaubg6!iz!33U z5=gbEVEeY~2c`?Ht3kKpa9xg(5mk(dr;BZ5XhcP%g4Z@a_dI7%%7&b7;FbQzpceT0 zZRhfRS!KhRq_rWv%(Gxy26~DUaC7`t#Fz+V zs=%p>v#3s^!e=4*LXlPi6~f}b32I1wQPz$mNnIarObIO00#(mH$x(H63hF$nx1WOA zrpY~+t;><>cH5o4(7=l?T==JF+Qp>$OJWT|@J;e@9!D~z^jA{;OR3Op`h=j4@BJHg CUXkVi literal 0 HcmV?d00001 diff --git a/ai_evo/__pycache__/rng.cpython-312.pyc b/ai_evo/__pycache__/rng.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..056e09b1debe7508ab26c95489e4fbd1a3661667 GIT binary patch literal 1967 zcmcIky^kAJ5Pxq!>^=J~2FKz<5yDC?L@SPS6rc-11fob3E^<&{fmX}Dcjxu3cg@@N z8C$C)g^N205>eUZ6%>h1ic;_gP)4G0bV$IG0z^f3ijg9vVrD;#&k{%}7|HWy-kW)z z`ORq!l*+UR3cXilZJ%J2ati%kor_t{zS8G zq0S^dC)3NYGa?+a8ALPMkeS4lO^L}vrJ=F{Q-`#XW4R$|(_mdOb5b*;2Q)F^o>@+x+@*D06)GG>lG}-L!gQI}j*8dfbt5nX z9!bL2B`nd|j3a&g_iFX&C$*;6<~7lET`p=pPi)uTbM3b27*}>YryJOwYg}=6Y~i_W zfZ)FmP21o*UQM`L>z#h283y1K7{*{3a9YnitkZuL)J^hp<)vNatEETf%1Hl4|EYZL zVfox0<*@w5uJUz$3L!AuS)brxDq=dl2x>$^(t>qSS{Sh)fV>pS2kFTM5s0oXi6Sgf z&h-Q|tSe#}UD@%hNcAn#;eeMt;69d61raM?i045K3fNJShivv=1_k|;PTubA^=@C^ zyFRw|-@dbYSgK95nkd1km5vU~qzNox`WC1Wk^Zff8AUKDk&xaZ3k@hZaOfs3U-g@2 zho|FBDt-Yn2O3t4f!KuqA}Fl))NT-09PWkVk0+%w6YWe=?f(yZ9*eQvU=H_Qq%`fV zrl??v$5BUs2gR%hNP7-rj>CRq@5b2Q|KK?6$eB!XV8r~n1je)TCsYnnSQZA5vznf5 zarg-15l}PkAj%8gaZHOxwButL$f1-(uYjA7C`mmDzJChTaT1yPmHpm*dRV$J(Jmx| znP>N`pD!Wv*=Q8Za0#UV?};UQUPUgHZjq2~0|7TkDBa94pxra*T|qVoW?;Y$HP>Dk2rUw(+^=IfGI*E>^+S;V)@HQU@UqJm+xJ=S&5UN(#`x~7w! zICXIr)oE1tEF@nj(n_F0Sp3&P4aqOc+L0uw>*I|nfn{2t>iNexs;*8!ok#WNU!b;W zat~(fa-_Q5cBd~i@Zt*>{^_Z9F{%ENSc4FJlYE@VkxVK5m6V?-6}n9y6V&m&e*-Jz Bkgos$ literal 0 HcmV?d00001 diff --git a/ai_evo/__pycache__/simulation.cpython-312.pyc b/ai_evo/__pycache__/simulation.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1974e6b1970c86d66c29ec057aaabba77b5cacf2 GIT binary patch literal 20278 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 literal 0 HcmV?d00001 diff --git a/ai_evo/__pycache__/world.cpython-312.pyc b/ai_evo/__pycache__/world.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..35b92bdb160c94298143aed3a3c321fe4cea7ea3 GIT binary patch literal 1813 zcmaJ?&2JM&6rb4-du@_HLP8N$=(e<|D^)R~QB?w>ph5vv%Axdt+)5+Yv$ogS4>MjT z*s@vCP0Nr%{&i{uqf^D0+t zjjOg^(zv#$o z;D@HL>p?>lZS$}h+Fs2Tg|H!PR2J<@;Bs3`NwruiOI7&gq8e`wX51gHw>7AxL)x^h z6qPn%i3#vnWi;Bf8rKtxUr4E&3aeyCO=4-YfTPaCX3Z{lU8YY7EX2wR^b%++^#zBA z6`88oPPr0F#ji=dWs9IL(t&q@krst!}%eUZ^@AjA@#$zQ|Pq z&(4X4@7p4`5Qw?lY2Wb*E;~CPxQ);WeAd?y|F0}K%$^T0ip!^JO=&RZ_)f@JYrHSU zR4m2AsecLND%qSgZy(w)4qVf|GnU@I_3q|d@7%TSSZf#W=hyQa#v35dE}gmc>9g^D zo%74*SNQjHt8;79_h;5;HYPv#?W+gXU#pMDFMwHQ^L4O(Z0z409lNI8NNq!WQcSuD z7CQW+?t20ZbRW4wtHAwx0QyNM^>l+eqBRT|lwS9S3F_4Z@m>Uo+gl{ue`FintBF^S zfv(%>bxNS06znH8XoOZujDl5!yc~@#E-Q;*A*?XCueKNgrA&JOlh^QMrfX0v)GR8- zK~=|tGsOg2Wzdgdf3+t1;Y`FBt9}9q;Asrq%zT?!`n+>#`O?#g+#~oIxf_{hM)qd* zdUk2Lb8Pt-pjcV0JUw{i(ZM4>@n4*uohQaA@frm9$7_LgMR=VACVDLfo?r{!gEri< zL8zgwq+En&bJkJ>URnW|5lfAVl=O=$hHX*b4`fTF Yl>R}+o|6O5$@pK|2+h4DKqAk-0evoYu>b%7 literal 0 HcmV?d00001 diff --git a/ai_evo/config.py b/ai_evo/config.py index fb45f89..c9840f8 100644 --- a/ai_evo/config.py +++ b/ai_evo/config.py @@ -1,5 +1,48 @@ import numpy as np +class Config: + """Configuration class for the AI Animal Evolution Environment.""" + + def __init__(self, **kwargs): + # World parameters + self.width = kwargs.get('width', 100) + self.height = kwargs.get('height', 100) + self.seed = kwargs.get('seed', 42) + + # Simulation parameters + self.max_steps = kwargs.get('max_steps', 1000) + self.snapshot_every = kwargs.get('snapshot_every', 50) + + # Population parameters + self.init_herbivores = kwargs.get('init_herbivores', 50) + self.init_carnivores = kwargs.get('init_carnivores', 25) + + # Energy parameters + self.min_energy = kwargs.get('min_energy', 0.0) + self.max_energy = kwargs.get('max_energy', 150.0) + + # Environment parameters + self.plant_growth_rate = kwargs.get('plant_growth_rate', 0.1) + self.plant_cap = kwargs.get('plant_cap', 10.0) + + # Feeding parameters + self.herbivore_bite_cap = kwargs.get('herbivore_bite_cap', 3.0) + self.carnivore_gain_eff = kwargs.get('carnivore_gain_eff', 0.8) + + # Movement parameters + self.move_cost_base = kwargs.get('move_cost_base', 0.1) + + # Reproduction parameters + self.reproduce_cost_frac = kwargs.get('reproduce_cost_frac', 0.5) + + # Evolution parameters + self.mutation_rate = kwargs.get('mutation_rate', 0.1) + self.mutation_strength = kwargs.get('mutation_strength', 0.1) + self.perception_max = kwargs.get('perception_max', 5.0) + + # Spatial hash parameters + self.grid_cell = kwargs.get('grid_cell', 10.0) + class RNG: """Central deterministic RNG wrapper.""" def __init__(self, seed: int):