首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用matlab fmincon实现并行优化

用matlab fmincon实现并行优化
EN

Stack Overflow用户
提问于 2021-10-06 19:55:07
回答 1查看 41关注 0票数 0

所以我正在尝试优化2组参数,第一组scheme.The的每个轴必须在左右飞轮之间的增量上进行优化,而组2对于另一轴是相同的

目前,我使用fmincon并并行运行,每个轴的左右飞轮作为代价函数的模拟是两个输出之间的误差。

基本代码如下所示

代码语言:javascript
运行
复制
for Axle = 1:2
...
fmincon(CostFunc,InitialValues, lb,ub)
end

CostFunc是这样的

代码语言:javascript
运行
复制
fob = CostFunc(...)
parfor FlyWheel = 1:2
FlyWheelOutput(FlyWheel) = simulation(...)
end
fob = FlyWheelOutput(1) - FlyWheelOutput(2)

因此,不是4个内核,而是只使用2个内核,使得代码比理想情况下更慢。所以问题是,你知道如何克服这种僵局吗?

Basic scheme

EN

回答 1

Stack Overflow用户

发布于 2021-10-07 06:00:19

如果我的理解是正确的,那么您的代码实际上具有以下基本结构:

代码语言:javascript
运行
复制
for Axle = 1:2
    ...
    % fmincon(Costfunc, ...)
        parfor FlyWheel = 1:2
            FlyWheelOutput(FlyWheel) = simulation(...)
        end
    % end fmincon
end

你可以使用potentially speed up processing by moving parfor to the outer loop instead.

代码语言:javascript
运行
复制
parfor Axle = 1:2
    ...
    % fmincon(Costfunc, ...)
        for FlyWheel = 1:2
            FlyWheelOutput(FlyWheel) = simulation(...)
        end
    % end fmincon
end

虽然我不能保证您会同时使用所有4个CPU核心,而不是2个,但这可能会更快,因为您在循环外执行一次parfor,而不是在一个循环内执行两次。

如果运行时仍然存在问题,请考虑使用built-in profiling tool找出代码的哪一部分最慢,然后从那里进行优化。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69471973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档