donsetpg / fenics-drl Goto Github PK
View Code? Open in Web Editor NEWRepository from the paper https://arxiv.org/abs/1908.04127, to train Deep Reinforcement Learning in Fluid Mechanics Setup.
Repository from the paper https://arxiv.org/abs/1908.04127, to train Deep Reinforcement Learning in Fluid Mechanics Setup.
Hello,
Interesting project =)
We would be glad if you could do a pull request on stable-baselines where you add your project to the documentation (project section) ;)
Hi,
I've recently started using RL to fluid problems. So please excuse for naive questions. While training the value of drag force is coming negative using fenics. Then how come Cd graph is plotted with the positive value? Can you elaborate
Thanks
I met the following error when I used python3 test_main.py
to lauch an experiment:
Traceback (most recent call last): File "test_main.py", line 27, in <module> launch_training(nb_cpu,name_agent,name_env,total_timesteps,text) File "/home/jzz/fenics-DRL/examples/training_control_cylinder.py", line 118, in launch_training env = SubprocVecEnv([lambda: env_ for i in range(n_cpu)]) File "/home/jzz/.local/lib/python3.7/site-packages/stable_baselines/common/vec_env/subproc_vec_env.py", line 103, in __init__ process.start() File "/home/jzz/anaconda3/envs/drl/lib/python3.7/multiprocessing/process.py", line 112, in start self._popen = self._Popen(self) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/multiprocessing/context.py", line 291, in _Popen return Popen(process_obj) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/multiprocessing/popen_forkserver.py", line 35, in __init__ super().__init__(process_obj) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/multiprocessing/popen_fork.py", line 20, in __init__ self._launch(process_obj) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/multiprocessing/popen_forkserver.py", line 47, in _launch reduction.dump(process_obj, buf) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/multiprocessing/reduction.py", line 60, in dump ForkingPickler(file, protocol).dump(obj) File "/home/jzz/.local/lib/python3.7/site-packages/stable_baselines/common/vec_env/base_vec_env.py", line 331, in __getstate__ return cloudpickle.dumps(self.var) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/site-packages/cloudpickle/cloudpickle_fast.py", line 102, in dumps cp.dump(obj) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/site-packages/cloudpickle/cloudpickle_fast.py", line 633, in dump return Pickler.dump(self, obj) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 437, in dump self.save(obj) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 504, in save f(self, obj) # Call unbound method with explicit self File "/home/jzz/anaconda3/envs/drl/lib/python3.7/site-packages/cloudpickle/cloudpickle_fast.py", line 815, in save_function *self._dynamic_function_reduce(obj), obj=obj File "/home/jzz/anaconda3/envs/drl/lib/python3.7/site-packages/cloudpickle/cloudpickle_fast.py", line 757, in _save_reduce_pickle5 save(state) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 504, in save f(self, obj) # Call unbound method with explicit self File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 771, in save_tuple save(element) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 504, in save f(self, obj) # Call unbound method with explicit self File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 856, in save_dict self._batch_setitems(obj.items()) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 882, in _batch_setitems save(v) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 504, in save f(self, obj) # Call unbound method with explicit self File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 771, in save_tuple save(element) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 549, in save self.save_reduce(obj=obj, *rv) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 638, in save_reduce save(args) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 504, in save f(self, obj) # Call unbound method with explicit self File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 771, in save_tuple save(element) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 549, in save self.save_reduce(obj=obj, *rv) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 662, in save_reduce save(state) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 504, in save f(self, obj) # Call unbound method with explicit self File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 856, in save_dict self._batch_setitems(obj.items()) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 882, in _batch_setitems save(v) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 549, in save self.save_reduce(obj=obj, *rv) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 662, in save_reduce save(state) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 504, in save f(self, obj) # Call unbound method with explicit self File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 856, in save_dict self._batch_setitems(obj.items()) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 882, in _batch_setitems save(v) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 549, in save self.save_reduce(obj=obj, *rv) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 662, in save_reduce save(state) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 504, in save f(self, obj) # Call unbound method with explicit self File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 856, in save_dict self._batch_setitems(obj.items()) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 882, in _batch_setitems save(v) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 549, in save self.save_reduce(obj=obj, *rv) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 662, in save_reduce save(state) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 504, in save f(self, obj) # Call unbound method with explicit self File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 856, in save_dict self._batch_setitems(obj.items()) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 882, in _batch_setitems save(v) File "/home/jzz/anaconda3/envs/drl/lib/python3.7/pickle.py", line 524, in save rv = reduce(self.proto) TypeError: can't pickle dolfin.cpp.geometry.Point objects
Here are the informations about my systerm:
Ubuntu 20.04.5 LTS \n \l
cat /proc/cpuinfo| grep "processor"| wc -l
12
Hi @DonsetPG
My coding skills are not very good.There are a few things in https://github.com/DonsetPG/fenics-DRL/blob/master/examples/control_cylinder.py that I don't understand:
1.In line 67 super(FluidMechanicsEnv, self).__init__()
,There‘s no FluidMechanicsEnv,I guess you want to call FluidMechanicsEnv_
;
2.In line 148 '''problem = Problem(render=self.render,
filename =filename,
min_bounds=(-5,-5),
max_bounds=(20,5),
types='Rectangle',
size_obstacles=nb_obstacles,
coords_obstacle = obstacles,
size_forms=1,
coords_forms = forms,
size_mesh = 100,
cfl=5,
final_time=10)'''has an input named coords_forms = forms
,which can’t be found in class Problem from
https://github.com/DonsetPG/fenics-DRL/blob/master/deepfluid/fenics/fenics_domains.py. May be it‘s included in **kwargs
?
Hi @DonsetPG
Thank you for your sharing.I met some errors while using pip install stable-baselines,which was run in fenics dockers images.
ERROR: Could not find a version that satisfies the requirement ale-py~=0.7.5; extra == "atari" (from gym[atari]) (from versions: 0.6.0.dev20200207) ERROR: No matching distribution found for ale-py~=0.7.5; extra == "atari" (from gym[atari])
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.