回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>,我目前正在创建一个遗传模糊学习系统及其相应的训练仿真环境->;这个函数和类的集合由一个主脚本控制,用户在其中定义诸如:仿真场景、控制器特性等</p>
<p>结果是大约50个不同的numpy数组,并列出了我的特定问题的参数。这些参数必须提供给控制器生成函数,以及确定每个控制器有效性的模拟。此进程当前正在使用多进程.starmap_异步方法并行化每个控制器的适应度。所以我的主脚本用大约50个参数调用控制器生成,多进程用大约55个进程调用它的工人,工人用57个输入调用所有模拟文件。(我目前的理解是,对多进程使用这么多输入参数不会增加开销,因为它们只是指向数据的名称,而不是复制或重新初始化它。。。如果我错了,请告诉我!)在</p>
<p>我知道我可以用一个包含我所有参数的列表来替换我的50个参数,并且我可以在我的主脚本中使用全局变量来避免所有这些簿记工作。这些变量中有很多是不变的,但都是大数据结构,我不想计算不止一次。是否有其他方法,以及被认为是最可接受的方法?我希望避免在我的项目中每次调用都有10行参数。在</p>
<p>尽可能的残酷,一切都运行得很完美,但我的模拟只会变得越来越复杂,随着(非可选)参数的数量不断增加。
我删除了所有更具体的var名称,但下面是一个调用,我的主脚本运行:</p>
<pre><code> (opt_str,opt_fit) = Trainer(map_size,Targets,SAMS,SAMS_stat,AIS,AIS_stat,
B_mpammo,B_sdammo,Route,vel,B_range,A_range, S_range,B_flight,
A_flight, S_flight,... lots more)
</code></pre>
<p>在我的GA中我有:</p>
^{pr2}$
<p>以及SimWorker:</p>
<pre><code>for p in range(start, stop):
fitness[p] = Sim_T(map_size,Targets,SAMS,SAMS_stat,AIS,AIS_stat,
B_mpammo,B_sdammo,Route,vel,B_range,A_range,S_range,B_flight,
A_flight, S_flight,
ttr,ttb,ttcr,ttcb,pos,times,pop[p],... lots more)
</code></pre>