Comments (3)
Your mileage may vary when using JaxPlanner on discrete control problems since we need to use approximate continuous relaxations of the discrete decisions and transitions for use with JaxPlanner's differentiation approach to planning. In some domains and instances, these relaxations simply do not provide useful gradient information for effective planning.
My best guess is that the behavior you've observed is due to poor performance by JaxPlanner on this particular problem; however, if you believe you've found a bug in the JaxPlanner code, please let us know.
FYI, coming soon: I remark that we have a Gurobi-based planner in development that is not as scalable as JaxPlanner, but which works better for some discrete action domains due to its use of mixed integer nonlinear programming optimization methods. GurobiPlan documentation is not yet released, but will be forthcoming.
from pyrddlgym.
In case you haven't found it already, I believe we merged the initial version of the Gurobi planner a while ago, but this is yet to be documented. You can find a working example here (some bugs are likely expected at this early stage). The overall workflow is now the same as JaxPlanner and available in two flavors, straight-line and replanning style.
This currently handles stochastic variables by determinization, thus mileage on the supply chain could vary.
On initial tests, it seems to be efficient for relatively short time horizon, so replanning is likely your only option. You could also consider increasing the required MipGap parameter to terminate earlier, unless you need strict optimality at each time step.
If stochasticity is an issue, there is a bilevel version that we hope to integrate at some point into the main codebase, but this handles only Uniform and Gaussian r.v.s. currently (it is not difficult to add the ones you need) and scales poorly in the number of ground fluents.
About the deficits of JaxPlanner, I concur with Scott here. In some problems, the no-op action specified in the RDDL document could in fact be optimal at some time steps, but IIRC it might not be present in the dictionary at that time step (e.g. Wildfire).
from pyrddlgym.
It turns out that the main problem with the supply chain was the choice of non-fluents. This domain is difficult to code because the authors of the original paper never stated the values they used for the costs and the capacities.
When the costs were adjusted (and the constraint enforcement added as a CPF), then the jax planner can make progress on it, and choose a nontrivial set of actions.
Please take a look at the updated version as well as the hyper-parameters which you could use to run the experiment. I will be closing this issue.
from pyrddlgym.
Related Issues (20)
- HVAC - Instance 0 - Issues with dimension? HOT 1
- RecSim Visualization breaks sometimes HOT 2
- Bug in Reservoir visualization
- Fix function argument type
- Prost integration HOT 2
- RandomAgent does not work when vectorized=True is set in the RDDLEnv HOT 1
- ArithmeticError: Cannot evaluate arithmetic operation HOT 5
- Pendulum not solvable with JaxPlan
- Improve branched exception handling in vectorized ops HOT 2
- Bitrot in XADD framework HOT 2
- RDDLConstraints does not parse constraints involving literals HOT 3
- Need to decide what standalone domains go in rddlrepository and which in pyrddlgym (assuming there will be in pyrddlgym) HOT 61
- Support for gymnasium HOT 2
- Integration of interval analysis with constraints parsing (Difficulty: DIFFICULT)
- Update readthedocs with the new API (Difficulty: EASY)
- AttributeError: 'dict' object has no attribute 'split' HOT 1
- Import Error HOT 4
- Do we need the noop_values field in RandomAgent, do we need seed in agent.evaluate()?
- RDDLSimServer data.json file truncated HOT 3
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 pyrddlgym.