首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于神经网络的输入/输出关联及遗传算法优化输入

问基于神经网络的输入/输出关联及遗传算法优化输入
EN

Stack Overflow用户
提问于 2013-03-26 08:59:34
回答 1查看 1.9K关注 0票数 1

我目前正在进行激光切割的程序优化-在MATLAB中。我试图将工艺参数与切削质量联系起来,例如:

输入(工艺参数)

  1. 切削速度
  2. 激光功率
  3. 辅助气体压力

产出(质量参数)

  1. 切割深度
  2. 切割宽度

我首先训练一个神经网络模型,从工艺参数来预测切削质量。

代码语言:javascript
复制
[inputs,targets] = lasercutting_dataset;

nLayers = 2;            % number of hidden layers
trainFcn = 'trainlm';   % Levenberg Marqhart training function

net = fitnet(nLayers,trainFcn);

这很好,现在我对表演不感兴趣。

接下来,我要用遗传算法优化(最大化)输入参数的切割速度。这意味着我的适应度函数(目标函数)是1/切割速度。

我已经为我的健身函数做了一个matlab函数:

代码语言:javascript
复制
function y = fitness(x)

    y = 1/x(1);

end

接下来,我设置了设计变量的数量及其上、下界:

代码语言:javascript
复制
nvars = 3;    % Number of variables
LB = [130 8130  4470];   % Lower bound
UB = [175 11255 8250];  % Upper bound

接下来,我定义了对切割宽度的约束(我也将为深度添加一个约束)。

代码语言:javascript
复制
function [c, ceq] = constraints(net,x) 

    outs = net(x)

    c = [outs(2)+495; outs(2)-505];
    % 495 <= outs
    % outs <= 505

    ceq = [];

end

这个功能是造成问题的!

最后,我为函数设置句柄并启动优化:

代码语言:javascript
复制
[x,fval] = ga(@fitness_func,nvars,[],[],[],[],LB,UB,@(x) ConstraintFunction(net,x));

我尝试在约束函数中为神经网络(net())定义一个输入向量,它独立于x-这很好:

代码语言:javascript
复制
dummyInput = [value; value; value];
net(dummyInput);

我和其他人一样会遇到错误,我的函数约束没有得到足够的输入参数。

问题似乎是将动态更改的"x“传递给一个函数,然后使用一组动态变化的约束的输出对其进行预测。

对于这个问题有什么想法吗?

我一直在用这和这作为灵感。

任何帮助都是感激的我有几篇关于这个问题的文章--没有一篇是在matlab中解释问题的,只是程序而已。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-14 21:00:40

通过最大化1/x,这将给你最慢的切割速度,对此约束是有效的。我想你要的是最大的切割速度,而不是最小的速度。

此外,约束函数实际上并不有效。需要以x <= 0的形式给出约束。因此,如果输出应该是有界的,那么约束就变成x >= 495 <=> 0 >= 495 - x和x <= 505 <=> x - 505 <= 0。

但是,在您的函数中,您可以编写c = [outs(2)+495; outs(2)-505];,然后应该是c = [495 - outs(2); outs(2) - 505]。

关于函数中的额外参数,这个文档可能是帮助的。

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

https://stackoverflow.com/questions/15632936

复制
相关文章

相似问题

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