我正在从事A2C强化学习,我的环境中代理的数量在增加和减少。由于代理数量的增加和减少,状态空间也会发生变化。我试图通过这种方式解决改变状态空间的问题:
如果状态空间超过选择为 的最大状态空间,则将选择n_input多余的状态空间,
np.random.choice其中随机选择提供了一种在将状态空间转换为概率后从状态空间创建随机样本的方法。
如果状态空间小于最大状态,我用零填充状态空间。
def get_state_new(state):
n_features = n_input-len(get_state(env))
# print("state",len(get_state(env)))
p = np.array(state)
p = np.exp(p)
if p.sum() != 1.0:
p = p * (1. / p.sum())
if len(get_state(env)) > n_input:
statappend = np.random.choice(state, size=n_input, p=p)
# print(statappend)
else:
statappend = np.zeros(n_input)
statappend[:state.shape[0]] = state
return statappend
Run Code Online (Sandbox Code Playgroud)
它有效,但结果不如预期,我不知道这是否正确。
我的问题
有没有参考论文处理这样的问题以及如何处理状态空间的变化?
我正在努力,但我时不时地PyCharm,遇到同样的问题。error running Unknown error我已经更新到最新版本了。而且,我在训练过程中系统崩溃了,卡在了Waiting for process detach。另外,当我关闭它并重新运行它时,它显示Could not load dynamic library.
更新:除了上面的问题之外,有时我在控制台上看不到任何输出。我已经重新安装了它,但没有成功。
新更新
将PyCharm从 更新到 后2021.1.1,2021.1.2似乎问题已经解决。
我需要在我的数组中推送新对象.每个对象都包含属性(名称,sName,年龄,职业和show方法,它们显示所有用户信息).数组由用户填写.(提示)但是确认有问题.当我推'取消'它仍然继续工作.这是我的代码.
var staff = [];
var askAgain = true;
while(askAgain==true) {
var employee = {
name: prompt("enter the name of the employee"),
sName: prompt("enter the sName of the employee"),
age: prompt("enter the age of the employee"),
occupation: prompt("enter the occupation of the employee"),
show: function(){
document.write(' employee: ' + staff[1].name + ' ' + staff[1].sName + ', ' + staff[1].age + ', ' + staff[1].occupation + ' <br> ' );} }
staff.push(employee);
console.log(staff);
window.confirm( "Would you like to go again?" …Run Code Online (Sandbox Code Playgroud) 我在这里阅读了该问题的一些答案,但没有一个对我有用。我有不同的训练文件,需要三天才能完成,但如果我同时运行这些文件,我可以减少时间。此外,当我完成所有方法的训练时,我需要直接运行测试文件。
import os
import subprocess,_multiprocessing
import sys
import gc # Garbage Collector
version = ".".join(map(str, sys.version_info[:3]))
if len(version) >3:
version=version[:-2];
current_dir = os.path.dirname(os.path.realpath(__file__))
# multiprocessing.Process(["python"+version, os.path.join(current_dir, "main_s_train.py"),os.path.join(current_dir, "SC.py")])
gc.collect()
bots = [subprocess.check_call(["python"+version, os.path.join(current_dir, "main_train.py")]),subprocess.check_call(["python"+version, os.path.join(current_dir, "main_s_train.py")]),subprocess.check_call(["python"+version, os.path.join(current_dir, "SC.py")]),subprocess.check_call(["python"+version, os.path.join(current_dir, "MC.py")])]
modules = map(__import__,bots)
import multiprocessing,subprocess
for bot in (bots):
p = multiprocessing.Process(target=lambda: __import__(bot))
p.start()
Run Code Online (Sandbox Code Playgroud)
有没有同时运行多个Python脚本的建议?