Delete Untitled-1.m
This commit is contained in:
parent
df6e0f94bf
commit
1da05baad6
182
src/Untitled-1.m
182
src/Untitled-1.m
|
@ -1,182 +0,0 @@
|
|||
%% Set up the Import Options and import the data
|
||||
opts = delimitedTextImportOptions("NumVariables", 8);
|
||||
|
||||
% Specify range and delimiter
|
||||
opts.DataLines = [1, Inf];
|
||||
opts.Delimiter = ",";
|
||||
|
||||
% Specify column names and types
|
||||
opts.VariableNames = ["Iteration", "NoseRadius", "CuttingSpeed", "FeedRate", "DepthOfCut", "ForceRatio", "AverageSurfaceRoughness", "MaximumSurfaceRoughness"];
|
||||
opts.VariableTypes = ["double", "double", "double", "double", "double", "double", "double", "double"];
|
||||
|
||||
% Specify file level properties
|
||||
opts.ExtraColumnsRule = "ignore";
|
||||
opts.EmptyLineRule = "read";
|
||||
|
||||
% Import the data
|
||||
Data = readtable("D:\Nextcloud\siwat\Documents\Lean Manufacturing\Data.csv", opts);
|
||||
|
||||
%% Clear temporary variables
|
||||
clear opts
|
||||
|
||||
% Remove Header
|
||||
Data = Data(2:end,:);
|
||||
|
||||
inputs = [Data.NoseRadius,Data.CuttingSpeed,Data.FeedRate, Data.DepthOfCut];
|
||||
outputs = [Data.ForceRatio, Data.AverageSurfaceRoughness, Data.MaximumSurfaceRoughness];
|
||||
|
||||
% Solve an Input-Output Fitting problem with a Neural Network
|
||||
% Script generated by Neural Fitting app
|
||||
% Created 19-Mar-2024 12:05:08
|
||||
%
|
||||
% This script assumes these variables are defined:
|
||||
%
|
||||
% inputs - input data.
|
||||
% outputs - target data.
|
||||
|
||||
x = inputs';
|
||||
t = outputs';
|
||||
|
||||
% Choose a Training Function
|
||||
% For a list of all training functions type: help nntrain
|
||||
% 'trainlm' is usually fastest.
|
||||
% 'trainbr' takes longer but may be better for challenging problems.
|
||||
% 'trainscg' uses less memory. Suitable in low memory situations.
|
||||
trainFcn = 'trainlm'; % Levenberg-Marquardt backpropagation.
|
||||
|
||||
% Create a Fitting Network
|
||||
hiddenLayerSize = 50;
|
||||
net = fitnet(hiddenLayerSize,trainFcn);
|
||||
|
||||
% Choose Input and Output Pre/Post-Processing Functions
|
||||
% For a list of all processing functions type: help nnprocess
|
||||
net.input.processFcns = {'removeconstantrows','mapminmax'};
|
||||
net.output.processFcns = {'removeconstantrows','mapminmax'};
|
||||
|
||||
% Setup Division of Data for Training, Validation, Testing
|
||||
% For a list of all data division functions type: help nndivision
|
||||
net.divideFcn = 'dividerand'; % Divide data randomly
|
||||
net.divideMode = 'sample'; % Divide up every sample
|
||||
net.divideParam.trainRatio = 70/100;
|
||||
net.divideParam.valRatio = 15/100;
|
||||
net.divideParam.testRatio = 15/100;
|
||||
|
||||
% Choose a Performance Function
|
||||
% For a list of all performance functions type: help nnperformance
|
||||
net.performFcn = 'mse'; % Mean Squared Error
|
||||
|
||||
% Choose Plot Functions
|
||||
% For a list of all plot functions type: help nnplot
|
||||
net.plotFcns = {'plotperform','plottrainstate','ploterrhist', ...
|
||||
'plotregression', 'plotfit'};
|
||||
|
||||
% Train the Network
|
||||
[net,tr] = train(net,x,t);
|
||||
|
||||
% Test the Network
|
||||
y = net(x);
|
||||
e = gsubtract(t,y);
|
||||
performance = perform(net,t,y)
|
||||
|
||||
% Recalculate Training, Validation and Test Performance
|
||||
trainTargets = t .* tr.trainMask{1};
|
||||
valTargets = t .* tr.valMask{1};
|
||||
testTargets = t .* tr.testMask{1};
|
||||
trainPerformance = perform(net,trainTargets,y)
|
||||
valPerformance = perform(net,valTargets,y)
|
||||
testPerformance = perform(net,testTargets,y)
|
||||
|
||||
% View the Network
|
||||
view(net)
|
||||
|
||||
% Plots
|
||||
% Uncomment these lines to enable various plots.
|
||||
%figure, plotperform(tr)
|
||||
%figure, plottrainstate(tr)
|
||||
%figure, ploterrhist(e)
|
||||
%figure, plotregression(t,y)
|
||||
%figure, plotfit(net,x,t)
|
||||
|
||||
% Deployment
|
||||
% Change the (false) values to (true) to enable the following code blocks.
|
||||
% See the help for each generation function for more information.
|
||||
if (false)
|
||||
% Generate MATLAB function for neural network for application
|
||||
% deployment in MATLAB scripts or with MATLAB Compiler and Builder
|
||||
% tools, or simply to examine the calculations your trained neural
|
||||
% network performs.
|
||||
genFunction(net,'myNeuralNetworkFunction');
|
||||
y = myNeuralNetworkFunction(x);
|
||||
end
|
||||
if (false)
|
||||
% Generate a matrix-only MATLAB function for neural network code
|
||||
% generation with MATLAB Coder tools.
|
||||
genFunction(net,'myNeuralNetworkFunction','MatrixOnly','yes');
|
||||
y = myNeuralNetworkFunction(x);
|
||||
end
|
||||
if (false)
|
||||
% Generate a Simulink diagram for simulation or deployment with.
|
||||
% Simulink Coder tools.
|
||||
gensim(net);
|
||||
end
|
||||
|
||||
|
||||
%% Test Model with Data
|
||||
% Sample Data
|
||||
NoseRadius = [0.4 0.4 0.8 0.8 0.8];
|
||||
CuttingSpeed = [250 250 250 250 250];
|
||||
FeedRate = [0.18 0.18 0.18 0.18 0.18];
|
||||
DepthOfCut = [0.25 0.25 0.25 0.25 0.25];
|
||||
% Expected Data
|
||||
ForceRatio = [0.324,0.281,0.256,0.26,0.181];
|
||||
SurfaceRoughness = [2.557 2.773 1.827 2.403 2.987];
|
||||
MaximumSurfaceRoughness = [12.387 13.478 9.110 13.878 18.304];
|
||||
|
||||
% Test Model for error
|
||||
prediction = [];
|
||||
for i = 1:5
|
||||
test = [NoseRadius(i),CuttingSpeed(i),FeedRate(i),DepthOfCut(i)];
|
||||
test = test';
|
||||
y = net(test);
|
||||
% Print Expected and Predicted Value
|
||||
fprintf('Test %d\n',i);
|
||||
fprintf('Nose Radius: %f\n',NoseRadius(i));
|
||||
fprintf('Cutting Speed: %f\n',CuttingSpeed(i));
|
||||
fprintf('Feed Rate: %f\n',FeedRate(i));
|
||||
fprintf('Depth of Cut: %f\n',DepthOfCut(i));
|
||||
fprintf('Predicted Force Ratio: %f\n',y(1));
|
||||
fprintf('Expected Force Ratio: %f\n',ForceRatio(i));
|
||||
fprintf('Error Force Ratio: %f\n',abs(ForceRatio(i)-y(1)));
|
||||
fprintf('Predicted Surface Roughness: %f\n',y(2));
|
||||
fprintf('Expected Surface Roughness: %f\n',SurfaceRoughness(i));
|
||||
fprintf('Error Surface Roughness: %f\n',abs(SurfaceRoughness(i)-y(2)));
|
||||
fprintf('Predicted Maximum Surface Roughness: %f\n',y(3));
|
||||
fprintf('Expected Maximum Surface Roughness: %f\n',MaximumSurfaceRoughness(i));
|
||||
fprintf('Error Maximum Surface Roughness: %f\n',abs(MaximumSurfaceRoughness(i)-y(3)));
|
||||
fprintf('\n');
|
||||
prediction = [prediction,y];
|
||||
end
|
||||
|
||||
prediction = prediction';
|
||||
|
||||
% Plot graph comparing the expected and predicted values
|
||||
figure;
|
||||
subplot(3,1,1);
|
||||
plot(1:5,ForceRatio,'-o',1:5,prediction(:,1),'-o');
|
||||
title('Force Ratio');
|
||||
xlabel('Test');
|
||||
ylabel('Force Ratio');
|
||||
legend('Expected','Predicted');
|
||||
subplot(3,1,2);
|
||||
plot(1:5,SurfaceRoughness,'-o',1:5,prediction(:,2),'-o');
|
||||
title('Surface Roughness');
|
||||
xlabel('Test');
|
||||
ylabel('Surface Roughness');
|
||||
legend('Expected','Predicted');
|
||||
subplot(3,1,3);
|
||||
plot(1:5,MaximumSurfaceRoughness,'-o',1:5,prediction(:,3),'-o');
|
||||
title('Maximum Surface Roughness');
|
||||
xlabel('Test');
|
||||
ylabel('Maximum Surface Roughness');
|
||||
legend('Expected','Predicted');
|
||||
|
Loading…
Reference in New Issue