MATLAB 并行计算中生成随机数or文件名

Matlab计算时为了提高运行速度需要通过parfor,或者option选项并行进行计算。但有些时候需要在并行计算中建立不可重复的文件名或者生成随机数,而有些内嵌的app中是无法多输入随机数的。同时并行计算,尤其第一步计算时,是同时调用进程的。导致生成的随机数一致;在某些计算过程中,变量也是一致的,就导致了无法区分多个进程,生成的随机数也相同。

近期计算过程中遇到此类问题。利用ga调用外部数据进行优化计算。需要对每一个个体建立文件夹,而生成的个体中会出现个体值是相同的情况,同时并行计算时触发时间相同,利用伪随机生成的数也相同,这些就导致无法创建文件名,顺利调用个体。

思考时发现并行计算时:

输入参数

相同

触发时间

相同

进程编号

不同

×

因此,利用读取进程编号可以为不同的计算路径取名,或者利用进程编号为seed生成随机数列。

%%%%利用输入参数和进程编号生成文件名
A=[mo1,mo2,mo3,mo4]  %输入参数
TMD=get(getCurrentTask(),'ID'); %读取进程
A1=[num2str(mo1) '_' num2str(mo2) '_' num2str(mo3) '_' num2str(mo4) '_' num2str(TMD)];%生成文件名

%%%%利用进程编号生成随机数列
TMD=get(getCurrentTask(),'ID'); %读取进程
randn('seed',TMD);
randn(5); %生成随机数  或利用 rng
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值