如何使用parfor函数在一个for循环?

1视图(30天)
Yro
Yro 2021年10月29日
回答: 雷蒙德·诺里斯 2021年10月29日
你好,我试图使用parfor函数并行计算在一个循环。我有一个问题来定义变量内外循环。下面的代码是一个模拟退火算法优化。变量的主要问题是在parfor循环并行计算,特别是newsol变量。我如何正确地定义这个变量?
提前谢谢。
% % SA主循环
它= 1:iter
pf_sol =溶胶;
pf_position = sol.Position;
pf_cost = sol.Cost;
pf_BestCost = BestCost;
parforsubit = 1: subiters
pf_sol =溶胶;
%创建新的解决方案
newsol。位置=邻居(pf_position);
newsol。成本= ObjectiveFunction (newsol.Position);
δ= - (newsol.Cost-pf_cost);
如果δ< = 0
pf_sol = newsol;
其他的
P = exp(-它/ T);
如果兰德< = P
pf_sol = newsol;
结束
结束
%更新最佳解决方案
如果pf_sol。成本> = pf_BestSol.Cost
Pf_BestSol = pf_sol;
结束
结束
%保存最好的
BestCost (it) = BestSol.Cost;
%显示
disp ([“迭代”num2str (it)”:最佳= 'num2str (BestCost (it))));
%更新温度
T = T *α;
结束

答案(1)

雷蒙德·诺里斯
雷蒙德·诺里斯 2021年10月29日
这里有一些缺失的代码和一些没有很大意义,所以我可能会在我的解决方案。我假设 newsol 是一个结构,而不是一个对象。如果是这样的话,尝试做以下改变。
newsol。位置=邻居(pf_position);
newsol。成本= ObjectiveFunction (newsol.Position);
位置=邻居(pf_position);
成本= ObjectiveFunction(位置);
newsol =结构(“位置”、位置、“成本”、成本);

下载188bet金宝搏


释放

R2019a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!