研发埠

标题: matlab 并行计算中使用全局变量就会报错,总是一些很奇怪的错误 [打印本页]

作者: 颜文斌    时间: 2014-5-31 13:12
标题: matlab 并行计算中使用全局变量就会报错,总是一些很奇怪的错误
比如某一个变量取不到值之类。怎么回事?
作者: 石光    时间: 2014-6-1 14:23
你可以看matlab的帮助文档里面的Passing Extra Parameters这一节,讲了有三种方法给优化的目标函数传递独立变量,要用并行的话不能使用全局变量的方法,可以采用匿名函数的方法。Write an M-file containing the following code:function y = parameterfun(x,a,b,c)y = (a - b*x(1)^2 + x(1)^4/3)*x(1)^2 + x(1)*x(2) + ...(-c + c*x(2)^2)*x(2)^2;Assign values to the parameters and define a functionhandle f to an anonymous function by entering thefollowing commands at the MATLAB prompt:a = 4; b = 2.1; c = 4; % Assign parameter valuesx0 = [0.5,0.5];f = @(x)parameterfun(x,a,b,c)Call the solver fminunc withthe anonymous function:[x,fval] = fminunc(f,x0)f就是已经传递了独立变量的目标函数的函数句柄上面的例子是用 fminunc求解的,用ga也一样
作者: 谭帼馨    时间: 2014-6-1 20:02
dimension表示 维数,能用全局变量,a(0)无效 表示没有保存好数据,耐心点,再看看?……
作者: 颜文斌    时间: 2014-6-1 20:03
有一个前提是,我把代码从for 直接改成parfor。for 语句,使用serial 计算就没问题。我现在倒是找到解决方法了,直接保存成文件,然后再子函数里读文件,就不用全局变量了,倒是可以,运行效率下降的比较多。




欢迎光临 研发埠 (http://bbs.yanfabu.com/) Powered by Discuz! X3.2