我目前正在做激光切割的过程优化——在MATLAB中。我试图将工艺参数与切割质量联系起来,例如:
输入(工艺参数)
输出(质量参数)
我首先训练一个神经网络模型,以便根据工艺参数预测切削质量。
[inputs,targets] = lasercutting_dataset;
nLayers = 2; % number of hidden layers
trainFcn = 'trainlm'; % Levenberg Marqhart training function
net = fitnet(nLayers,trainFcn);
这很好,现在我对表演不感兴趣。
接下来我想使用遗传算法优化(最大化)输入参数切割速度。这意味着我的适应度函数(目标函数)是1/切割速度。
我为我的适应度函数制作了一个matlab函数:
function y = fitness(x)
y = 1/x(1);
end
接下来,我设置设计变量的数量及其上下限:
nvars = 3; % Number of variables
LB = [130 8130 4470]; % Lower bound
UB = [175 11255 8250]; % Upper bound
接下来,我定义了切割宽度的约束条件(我还将为深度添加一个约束条件)。
function [c, ceq] = constraints(net,x)
outs = net(x)
c = [outs(2)+495; outs(2)-505];
% 495 <= outs
% outs <= 505
ceq = [];
end
出问题的就是这个功能!
最后,我做了函数句柄,并开始优化:
[x,fval] = ga(@fitness_func,nvars,[],[],[],[],LB,UB,@(x) ConstraintFunction(net,x));
我尝试为神经网络(net())在约束函数中定义一个独立于x的输入向量-这很好:
dummyInput = [value; value; value];
net(dummyInput);
我和其他人一起得到了一个错误,我的函数约束没有得到足够的输入参数。
问题似乎在于,将动态变化的“x”传递给函数,然后使用一组动态变化的约束的输出对其进行预测。
有什么问题吗?
我一直在用这个和这个来寻找灵感。
感谢任何帮助——抱歉问题太长了。我有几篇关于这个问题的文章——没有一篇解释matlab中的问题,只是程序。
通过最大化1/x,这将为您提供约束保持的最慢切割速度。我想你想让切割速度最大化,而不是最小化。
此外,约束函数也不是真正有效的。约束需要以x的形式给出
然而,在函数中,您可以编写
c=[out(2)495; out(2)-505];
,这应该是c=[495-out(2); out(2)-505]
。
关于函数中的额外参数,这个文档可能会有所帮助。
我对TensorFlow和LSTM架构相当陌生。我在计算数据集的输入和输出(x_train、x_test、y_trainy_test)时遇到了问题。 我最初输入的形状: X_列车:(366,4) Ytrain和Ytest是一系列股票价格。Xtrain和Xtest是我想学习的四个预测股价的功能。 这是产生的错误: -------------------------------------------
我正在开发一种卷积神经网络用于图像分类或更好的车牌分类。这些车牌最多包含8个字符,每个字符可以包含37个字符(A-Z、0-9和空格)。我现在想知道如何设计网络中的最后两层。我认为,最后一个必须是具有37个概率的softmax层。这应该完全连接到一个(?)神经元在前一层?我想,在前一层我们需要8个神经元,因为之前的车牌上有8个字符,但我不确定。在此层之前,我添加了一些卷积层和maxPooling层。
我正在尝试创建一个CNN来对数据进行分类。我的数据是X[N\u数据,N\u特征]我想创建一个能够对其进行分类的神经网络。我的问题是关于keras后端Conv1D的输入形状。 我想在上面重复一个过滤器。。假设有10个特征,然后为接下来的10个特征保持相同的权重。对于每个数据,我的卷积层将创建N\U特征/10个新神经元。我该怎么做?我应该在input\u形状中放置什么? 有什么建议吗?非常感谢。
文件 std::fs::File 本身实现了 Read 和 Write trait,所以文件的输入输出非常简单,只要得到一个 File 类型实例就可以调用读写接口进行文件输入与输出操作了。而要得到 File 就得让操作系统打开(open)或新建(create)一个文件。还是拿例子来说明 use std::io; use std::io::prelude::*; use std::fs::File;
回顾一下我们写的第一个 Rust 程序就是带副作用的,其副作用就是向标准输出(stdout),通常是终端或屏幕,输出了 Hello, World! 让屏幕上这几个字符的地方点亮起来。println! 宏是最常见的输出,用宏来做输出的还有 print!,两者都是向标准输出(stdout)输出,两者的区别也一眼就能看出。至于格式化输出,基础运算符和字符串格式化小节有详细说明,这里就不再啰嗦了。 更通用
我在使用Keras和Python对3D形状进行分类时遇到了一个问题。我有一个文件夹,里面有一些JSON格式的模型。我将这些模型读入Numpy数组。模型是25*25*25,表示体素化模型的占用网格(每个位置表示位置(i、j、k)中的体素是否有点),因此我只有1个输入通道,就像2D图像中的灰度图像一样。我拥有的代码如下: 在此之后,我得到以下错误 使用TensorFlow后端。回溯(最后一次调用):文