Comments (7)
Why not just move the type definitions out of the file that is loaded with requires, but leave the rest as is? I could have a look at this in the next few days...
from reinforcementlearningenvironments.jl.
The reason is that we are using Requires.jl
. Once JuliaLang/Pkg.jl#1285 gets resolved, we can switch to the new method.
Though PyCall is declared in [extras]
, it is only for testing.
from reinforcementlearningenvironments.jl.
I think Requires.jl
is not well suited to how it is used for GymEnv (and others). I could not get GymEnv to be extensible in my own module through this package without removing the @require
declaration for include("environments/gym.jl")
. See this issue, which says that types and structs should not be defined in @require
'd code.
It works fine in a REPL of course, but that is of limited use.
from reinforcementlearningenvironments.jl.
@AlexLewandowski Thanks for the link! I didn't know that when writing this package.
Right now, I don't have a good solution to it.
Previously we have registered several different packages, like ReinforcementLearningEnvironmentGym.jl and some others. Then we created this package with the help of Requires.jl
for easier maintenance. Moving structs
out of @required
is not an option here since each 3-rd party environment has some specific dependencies which are not required by the basic environments. So now we have two options:
-
Split this package into different sub-packages again.
Personally I don't want to distribute them into separate repos. A better solution maybe register them in sub-directories in this repo. (Ref: JuliaLang/Pkg.jl#1251) -
Or we can wait and see if there're some elegant solutions in JuliaLang/Pkg.jl#1285 .
By the way, could you share more about what you want to extend with GymEnv
?
from reinforcementlearningenvironments.jl.
Moving structs out of @required is not an option here since each 3-rd party environment has some specific dependencies which are not required by the basic environments.
Ah, yes, I see, it may not be as easy as I thought...
from reinforcementlearningenvironments.jl.
Some environments are just fine to move out. For example, AtariEnv doesn't have any specific types in its definition. And the definition of OpenSpielEnv is just general enough to be moved out.
But for GymEnv and MDPEnv, they have PyObject
and POMDP
constraint in its parameters. Maybe we are safe to just remove those constraints?
from reinforcementlearningenvironments.jl.
But for GymEnv and MDPEnv, they have PyObject and POMDP constraint in its parameters. Maybe we are safe to just remove those constraints?
We could check for these constraints in the constructor and make the fields parametric in the type def.
from reinforcementlearningenvironments.jl.
Related Issues (20)
- TagBot trigger issue HOT 12
- DefaultStateStyleEnv doesn't work in TicTacToeEnv HOT 2
- Tried making a custom environment, the episode is not terminating HOT 4
- ReinforcementLearningZoo.jl experiments HOT 1
- Add OpenSpiel
- Make `Observation` mutable? HOT 2
- Should `seed!` be part of the interface? HOT 3
- Expectations on observation type HOT 6
- Reduce dependencies HOT 3
- remove rng in OpenSpielEnv without chance node HOT 1
- Incorrect type when sampling from Spaces HOT 1
- Issue while using Float32 as type for the MountainCar env HOT 2
- Error while training a basic DQN in MountainCarEnv HOT 4
- Support CommonRLInterface HOT 3
- Add a general grid world environment HOT 2
- Add SnakeGame
- what happened to `render` function? HOT 2
- Port unmerged environments from FluxML/Gym.jl#37 to this package HOT 2
- Question about observation/states HOT 12
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from reinforcementlearningenvironments.jl.