continual-foragax 0.36.1__tar.gz → 0.38.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/PKG-INFO +1 -1
  2. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/pyproject.toml +2 -2
  3. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/continual_foragax.egg-info/PKG-INFO +1 -1
  4. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/env.py +10 -1
  5. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/objects.py +6 -1
  6. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/registry.py +40 -0
  7. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/tests/test_foragax.py +9 -6
  8. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/README.md +0 -0
  9. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/setup.cfg +0 -0
  10. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/continual_foragax.egg-info/SOURCES.txt +0 -0
  11. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/continual_foragax.egg-info/dependency_links.txt +0 -0
  12. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/continual_foragax.egg-info/entry_points.txt +0 -0
  13. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/continual_foragax.egg-info/requires.txt +0 -0
  14. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/continual_foragax.egg-info/top_level.txt +0 -0
  15. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/__init__.py +0 -0
  16. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/colors.py +0 -0
  17. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID100897.txt +0 -0
  18. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID100928.txt +0 -0
  19. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID100929.txt +0 -0
  20. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID100930.txt +0 -0
  21. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID100931.txt +0 -0
  22. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID106714.txt +0 -0
  23. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID106715.txt +0 -0
  24. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID106716.txt +0 -0
  25. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID106717.txt +0 -0
  26. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID106718.txt +0 -0
  27. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID106930.txt +0 -0
  28. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID106931.txt +0 -0
  29. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID106932.txt +0 -0
  30. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID106933.txt +0 -0
  31. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID106934.txt +0 -0
  32. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID106935.txt +0 -0
  33. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID106936.txt +0 -0
  34. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID106937.txt +0 -0
  35. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID106938.txt +0 -0
  36. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID106939.txt +0 -0
  37. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID106940.txt +0 -0
  38. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID106941.txt +0 -0
  39. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID106942.txt +0 -0
  40. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID106943.txt +0 -0
  41. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID106994.txt +0 -0
  42. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID106995.txt +0 -0
  43. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID106996.txt +0 -0
  44. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID106997.txt +0 -0
  45. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID106998.txt +0 -0
  46. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID106999.txt +0 -0
  47. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107000.txt +0 -0
  48. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107001.txt +0 -0
  49. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107002.txt +0 -0
  50. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107003.txt +0 -0
  51. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107004.txt +0 -0
  52. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107005.txt +0 -0
  53. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107006.txt +0 -0
  54. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107007.txt +0 -0
  55. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107008.txt +0 -0
  56. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107009.txt +0 -0
  57. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107010.txt +0 -0
  58. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107011.txt +0 -0
  59. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107012.txt +0 -0
  60. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107013.txt +0 -0
  61. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107014.txt +0 -0
  62. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107015.txt +0 -0
  63. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107016.txt +0 -0
  64. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107017.txt +0 -0
  65. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107018.txt +0 -0
  66. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107019.txt +0 -0
  67. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107020.txt +0 -0
  68. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107021.txt +0 -0
  69. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107022.txt +0 -0
  70. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107023.txt +0 -0
  71. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107024.txt +0 -0
  72. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107025.txt +0 -0
  73. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107026.txt +0 -0
  74. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107027.txt +0 -0
  75. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107028.txt +0 -0
  76. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107029.txt +0 -0
  77. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107030.txt +0 -0
  78. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107031.txt +0 -0
  79. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107032.txt +0 -0
  80. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107033.txt +0 -0
  81. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107034.txt +0 -0
  82. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107035.txt +0 -0
  83. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107036.txt +0 -0
  84. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107037.txt +0 -0
  85. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107038.txt +0 -0
  86. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107039.txt +0 -0
  87. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107040.txt +0 -0
  88. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107041.txt +0 -0
  89. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107042.txt +0 -0
  90. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107043.txt +0 -0
  91. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107044.txt +0 -0
  92. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107045.txt +0 -0
  93. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107046.txt +0 -0
  94. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107047.txt +0 -0
  95. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107048.txt +0 -0
  96. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107049.txt +0 -0
  97. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107050.txt +0 -0
  98. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107051.txt +0 -0
  99. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107052.txt +0 -0
  100. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107053.txt +0 -0
  101. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107054.txt +0 -0
  102. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107055.txt +0 -0
  103. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107056.txt +0 -0
  104. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107057.txt +0 -0
  105. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107058.txt +0 -0
  106. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107059.txt +0 -0
  107. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107060.txt +0 -0
  108. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107061.txt +0 -0
  109. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107062.txt +0 -0
  110. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107063.txt +0 -0
  111. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107064.txt +0 -0
  112. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107065.txt +0 -0
  113. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107066.txt +0 -0
  114. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107067.txt +0 -0
  115. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107068.txt +0 -0
  116. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107069.txt +0 -0
  117. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107070.txt +0 -0
  118. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID107071.txt +0 -0
  119. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID115808.txt +0 -0
  120. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID115812.txt +0 -0
  121. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID146811.txt +0 -0
  122. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID156831.txt +0 -0
  123. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID156835.txt +0 -0
  124. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID156839.txt +0 -0
  125. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID156843.txt +0 -0
  126. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID156847.txt +0 -0
  127. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID156851.txt +0 -0
  128. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID156855.txt +0 -0
  129. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID156859.txt +0 -0
  130. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID156863.txt +0 -0
  131. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID156867.txt +0 -0
  132. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID156871.txt +0 -0
  133. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID156875.txt +0 -0
  134. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID156879.txt +0 -0
  135. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID156883.txt +0 -0
  136. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/TG_SOUID156887.txt +0 -0
  137. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/elements.txt +0 -0
  138. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/metadata.txt +0 -0
  139. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/data/ECA_non-blended_custom/sources.txt +0 -0
  140. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/rendering.py +0 -0
  141. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/src/foragax/weather.py +0 -0
  142. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/tests/test_benchmark.py +0 -0
  143. {continual_foragax-0.36.1 → continual_foragax-0.38.0}/tests/test_registry.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: continual-foragax
3
- Version: 0.36.1
3
+ Version: 0.38.0
4
4
  Summary: A continual reinforcement learning benchmark
5
5
  Author-email: Steven Tang <stang5@ualberta.ca>
6
6
  Requires-Python: >=3.8
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "continual-foragax"
3
- version = "0.36.1"
3
+ version = "0.38.0"
4
4
  description = "A continual reinforcement learning benchmark"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -30,7 +30,7 @@ build-backend = "setuptools.build_meta"
30
30
  [tool]
31
31
  [tool.commitizen]
32
32
  name = "cz_conventional_commits"
33
- version = "0.36.1"
33
+ version = "0.38.0"
34
34
  tag_format = "$version"
35
35
  version_files = ["pyproject.toml"]
36
36
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: continual-foragax
3
- Version: 0.36.1
3
+ Version: 0.38.0
4
4
  Summary: A continual reinforcement learning benchmark
5
5
  Author-email: Steven Tang <stang5@ualberta.ca>
6
6
  Requires-Python: >=3.8
@@ -132,6 +132,7 @@ class ForagaxEnv(environment.Environment):
132
132
  observation_type: str = "object",
133
133
  dynamic_biomes: bool = False,
134
134
  biome_consumption_threshold: float = 0.9,
135
+ dynamic_biome_spawn_empty: float = 0.0,
135
136
  max_expiries_per_step: int = 1,
136
137
  ):
137
138
  super().__init__()
@@ -156,6 +157,7 @@ class ForagaxEnv(environment.Environment):
156
157
  self.teleport_interval = teleport_interval
157
158
  self.dynamic_biomes = dynamic_biomes
158
159
  self.biome_consumption_threshold = biome_consumption_threshold
160
+ self.dynamic_biome_spawn_empty = dynamic_biome_spawn_empty
159
161
  if max_expiries_per_step < 1:
160
162
  raise ValueError("max_expiries_per_step must be at least 1")
161
163
  self.max_expiries_per_step = max_expiries_per_step
@@ -888,7 +890,7 @@ class ForagaxEnv(environment.Environment):
888
890
  biome_freqs = self.biome_object_frequencies[biome_idx]
889
891
  biome_mask = self.biome_masks_array[biome_idx]
890
892
 
891
- key, spawn_key, color_key, params_key = jax.random.split(key, 4)
893
+ key, spawn_key, color_key, params_key, dropout_key = jax.random.split(key, 5)
892
894
 
893
895
  # Generate object IDs using deterministic or random spawn
894
896
  if deterministic:
@@ -927,6 +929,13 @@ class ForagaxEnv(environment.Environment):
927
929
  jnp.searchsorted(cumulative_freqs, grid_rand, side="right") - 1
928
930
  )
929
931
 
932
+ # Apply random dropout if configured
933
+ if self.dynamic_biome_spawn_empty > 0:
934
+ dropout_mask = jax.random.bernoulli(
935
+ dropout_key, 1.0 - self.dynamic_biome_spawn_empty, object_grid.shape
936
+ )
937
+ object_grid = jnp.where(dropout_mask, object_grid, 0)
938
+
930
939
  # Initialize color grid
931
940
  color_grid = jnp.full((self.size[1], self.size[0], 3), 255, dtype=jnp.uint8)
932
941
 
@@ -241,6 +241,7 @@ class FourierObject(BaseForagaxObject):
241
241
  reward_delay: int = 0,
242
242
  max_reward_delay: Optional[int] = None,
243
243
  regen_delay: Optional[Tuple[int, int]] = None,
244
+ reward_repeat: int = 1,
244
245
  ):
245
246
  if max_reward_delay is None:
246
247
  max_reward_delay = reward_delay
@@ -257,6 +258,7 @@ class FourierObject(BaseForagaxObject):
257
258
  self.base_magnitude = base_magnitude
258
259
  self.reward_delay_val = reward_delay
259
260
  self.regen_delay_range = regen_delay
261
+ self.reward_repeat = reward_repeat
260
262
 
261
263
  def get_state(self, key: jax.Array) -> jax.Array:
262
264
  """Generate random Fourier series parameters.
@@ -321,7 +323,7 @@ class FourierObject(BaseForagaxObject):
321
323
  y_max = params[2]
322
324
 
323
325
  # Normalize time to [0, 2π] using the object's period
324
- t = 2.0 * jnp.pi * (clock % period) / period
326
+ t = 2.0 * jnp.pi * ((clock // self.reward_repeat) % period) / period
325
327
 
326
328
  # Extract interleaved coefficients: [a1, b1, a2, b2, ...]
327
329
  ab_coeffs = params[3:]
@@ -715,6 +717,7 @@ def create_fourier_objects(
715
717
  base_magnitude: float = 1.0,
716
718
  reward_delay: int = 0,
717
719
  regen_delay: Optional[Tuple[int, int]] = None,
720
+ reward_repeat: int = 1,
718
721
  ):
719
722
  """Create HOT and COLD FourierObject instances.
720
723
 
@@ -733,6 +736,7 @@ def create_fourier_objects(
733
736
  color=(0, 0, 0),
734
737
  reward_delay=reward_delay,
735
738
  regen_delay=regen_delay,
739
+ reward_repeat=reward_repeat,
736
740
  )
737
741
 
738
742
  cold = FourierObject(
@@ -742,6 +746,7 @@ def create_fourier_objects(
742
746
  color=(0, 0, 0),
743
747
  reward_delay=reward_delay,
744
748
  regen_delay=regen_delay,
749
+ reward_repeat=reward_repeat,
745
750
  )
746
751
 
747
752
  return hot, cold
@@ -128,6 +128,32 @@ ENV_CONFIGS: Dict[str, Dict[str, Any]] = {
128
128
  "deterministic_spawn": True,
129
129
  "dynamic_biomes": True,
130
130
  },
131
+ "ForagaxDiwali-v4": {
132
+ "size": (15, 15),
133
+ "aperture_size": None,
134
+ "objects": None,
135
+ "biomes": (
136
+ # Hot biome
137
+ Biome(start=(0, 2), stop=(15, 6), object_frequencies=(0.5, 0.0)),
138
+ # Cold biome
139
+ Biome(start=(0, 9), stop=(15, 13), object_frequencies=(0.0, 0.5)),
140
+ ),
141
+ "nowrap": False,
142
+ "deterministic_spawn": True,
143
+ "dynamic_biomes": True,
144
+ "biome_consumption_threshold": 1000,
145
+ },
146
+ "ForagaxDiwali-v5": {
147
+ "size": (15, 15),
148
+ "aperture_size": None,
149
+ "objects": None,
150
+ "biomes": (Biome(start=(0, 0), stop=(15, 15), object_frequencies=(0.2,)),),
151
+ "nowrap": False,
152
+ "deterministic_spawn": True,
153
+ "dynamic_biomes": True,
154
+ "biome_consumption_threshold": 1000,
155
+ "dynamic_biome_spawn_empty": 0.1,
156
+ },
131
157
  "ForagaxTwoBiome-v1": {
132
158
  "size": (15, 15),
133
159
  "aperture_size": None,
@@ -575,6 +601,20 @@ def make(
575
601
  reward_delay=reward_delay,
576
602
  regen_delay=(9, 11),
577
603
  )[:1]
604
+ if env_id == "ForagaxDiwali-v4":
605
+ config["objects"] = create_fourier_objects(
606
+ num_fourier_terms=10,
607
+ reward_delay=reward_delay,
608
+ regen_delay=(9, 11),
609
+ reward_repeat=100,
610
+ )
611
+ if env_id == "ForagaxDiwali-v5":
612
+ config["objects"] = create_fourier_objects(
613
+ num_fourier_terms=10,
614
+ reward_delay=reward_delay,
615
+ regen_delay=(9, 11),
616
+ reward_repeat=100,
617
+ )[:1]
578
618
 
579
619
  if env_id == "ForagaxSineTwoBiome-v1":
580
620
  biome1_oyster, biome1_deathcap, biome2_oyster, biome2_deathcap = (
@@ -2811,13 +2811,14 @@ def test_fourier_reward_mathematical_properties():
2811
2811
  key = jax.random.key(42)
2812
2812
 
2813
2813
  # Create a simple single-term Fourier series: a1*cos(t) + b1*sin(t)
2814
+ # We use period=8.0 so that clock=1 corresponds to phase 2π/8 = π/4
2814
2815
  simple_params = jnp.array(
2815
2816
  [
2816
- 2 * jnp.pi,
2817
+ 8.0, # period
2817
2818
  -1.0,
2818
- 1.0, # period=2π, min=-1, max=1
2819
+ 1.0, # min=-1, max=1
2819
2820
  0.5,
2820
- 0.5, # a1=0.5, b1=0.5 (should give 0.5*(cos(t) + sin(t)))
2821
+ 0.5, # a1=0.5, b1=0.5
2821
2822
  0.0,
2822
2823
  0.0,
2823
2824
  0.0,
@@ -2828,7 +2829,8 @@ def test_fourier_reward_mathematical_properties():
2828
2829
  dtype=jnp.float32,
2829
2830
  )
2830
2831
 
2831
- # At t=0: 0.5*(cos(0) + sin(0)) = 0.5*(1 + 0) = 0.5
2832
+ # At t=0 (clock=0): phase=0
2833
+ # 0.5*(cos(0) + sin(0)) = 0.5*(1 + 0) = 0.5
2832
2834
  reward_t0_simple = fourier_obj.reward(0, key, simple_params)
2833
2835
  # The actual reward is normalized: 2*(raw - min)/(max - min) - 1, then * base_magnitude
2834
2836
  # raw = 0.5, min=-1, max=1, so: 2*(0.5 - (-1))/(1 - (-1)) - 1 = 2*(1.5)/2 - 1 = 1.5 - 1 = 0.5
@@ -2837,9 +2839,10 @@ def test_fourier_reward_mathematical_properties():
2837
2839
  f"Expected ~1.0, got {reward_t0_simple}"
2838
2840
  )
2839
2841
 
2840
- # At t=π/4: 0.5*(cos(π/4) + sin(π/4)) = 0.5*(0.707 + 0.707) = 0.5*1.414 ≈ 0.707
2842
+ # At t=1 (clock=1): phase = * 1/8 = π/4
2843
+ # 0.5*(cos(π/4) + sin(π/4)) = 0.5*(0.707 + 0.707) = 0.5*1.414 ≈ 0.707
2844
+ reward_t_quarter = fourier_obj.reward(1, key, simple_params)
2841
2845
  t_quarter = jnp.pi / 4
2842
- reward_t_quarter = fourier_obj.reward(t_quarter, key, simple_params)
2843
2846
  raw_quarter = 0.5 * (jnp.cos(t_quarter) + jnp.sin(t_quarter))
2844
2847
  expected_quarter = (
2845
2848
  2 * (raw_quarter - (-1)) / (1 - (-1)) - 1