首页 / C# / C# + Matlab 实现计件工时拟合
C# + Matlab 实现计件工时拟合
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C# + Matlab 实现计件工时拟合,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2629字,纯文字阅读大概需要4分钟。
内容图文
![C# + Matlab 实现计件工时拟合](/upload/InfoBanner/zyjiaocheng/622/fc1aca65e88242b593b38a737b08d5c5.jpg)
工序工时由该工序的工艺参数决定,有了工时后乘以固定因子就是计件工资。一般参考本地小时公式以及同类小时工资并考虑作业的风险等因素给出固定因子
下面是样本数据:
注意样本数据要近可能全面,比方这里会交换L与R后做为另一组样本数据一起交给系统训练
打钩的数据会抽取来训练,WTime是目标,所以5个输入1个输出。
训练代码
![C# + Matlab 实现计件工时拟合 - 文章图片](/upload/getfiles/0001/2021/5/1/20210501012837993.jpg)
![C# + Matlab 实现计件工时拟合 - 文章图片](/upload/getfiles/0001/2021/5/1/20210501012838089.jpg)
clc clear excel=xlsread('frmZJ_KB_SalaryParamAdmin2011140841.xls'); % 训练集——个样本 P_Train=excel(:,[4 5 11 7 8])'; %注意运算时需要转置矩阵 T_Train=excel(:,9)'; % 测试集——个样本 rndSample=randperm(size(excel,1),500); %随机选择100个作为样本 P_Test=P_Train(:,rndSample); T_Test=T_Train(:,rndSample); %% III. 数据归一化 [p_train, ps_input] = mapminmax(P_Train,0,1); p_test = mapminmax('apply',P_Test,ps_input); save('ps_input.mat','ps_input'); [t_train, ps_output] = mapminmax(T_Train,0,1); save('ps_output.mat','ps_output') N = size(P_Test,2); %% IV. BP神经网络创建、训练及仿真测试 %% % 1. 创建网络 net = newff(p_train,t_train,60); %% % 2. 设置训练参数 net.trainParam.epochs = 10000; net.trainParam.goal = 1e-5; net.trainParam.lr = 0.01; %% % 3. 训练网络 net = train(net,p_train,t_train); save('ZJPrediction.mat','net'); %% % 4. 仿真测试 t_sim = sim(net,p_test); %% % 5. 数据反归一化 T_sim = mapminmax('reverse',t_sim,ps_output); %% V. 性能评价 %% % 1. 相对误差error error = abs(T_sim - T_Test)./T_Test; %% % 2. 决定系数R^2 R2 = (N * sum(T_sim .* T_Test) - sum(T_sim) * sum(T_Test))^2 / ((N * sum((T_sim).^2) - (sum(T_sim))^2) * (N * sum((T_Test).^2) - (sum(T_Test))^2)); %% % 3. 结果对比 result = [T_Test' T_sim' error'] %% VI. 绘图 figure plot(1:N,T_Test,'b:*',1:N,T_sim,'r-o') legend('真实值','预测值') xlabel('预测样本') ylabel('输出值') string = {'测试集预测结果对比';['R^2=' num2str(R2)]}; title(string)View Code
训练号的模型要保存起来,还有归一化参数,下面3个打钩的文件要发布到生产环境中
下面是需要封成dll的函数,里面采用了绝对路径,因为分装成Windows Service后matlab的工作目录会在C盘下的临时目录
![C# + Matlab 实现计件工时拟合 - 文章图片](/upload/getfiles/0001/2021/5/1/20210501012837993.jpg)
![C# + Matlab 实现计件工时拟合 - 文章图片](/upload/getfiles/0001/2021/5/1/20210501012838089.jpg)
function r=PredictionZJWTime(d) load('D:\MatlabServer\ps_input.mat','ps_input'); load('D:\MatlabServer\ps_output.mat','ps_output'); load('D:\MatlabServer\ZJPrediction.mat','net'); P_Test=d'; p_test = mapminmax('apply',P_Test,ps_input); %% % 4. 仿真测试 t_sim = sim(net,p_test); %% % 5. 数据反归一化 T_sim = mapminmax('reverse',t_sim,ps_output); r=[d T_sim' T_sim'*0.0062]; endView Code
下面是在matlab环境下厕所封装的函数
![C# + Matlab 实现计件工时拟合 - 文章图片](/upload/getfiles/0001/2021/5/1/20210501012837993.jpg)
![C# + Matlab 实现计件工时拟合 - 文章图片](/upload/getfiles/0001/2021/5/1/20210501012838089.jpg)
clc clear excel=xlsread('frmZJ_KB_SalaryParamAdmin2011120839.xls'); % 训练集——个样本 P_Train=excel(:,[4 5 11 7 8])'; %注意运算时需要转置矩阵 T_Train=excel(:,9)'; % 测试集——个样本 rndSample=randperm(size(excel,1),100); %随机选择100个作为样本 P_Test=P_Train(:,rndSample); T_Test=T_Train(:,rndSample); T_Sim=PredictionZJWTime(P_Test'); T_Sim(:,6) - T_Test'View Code
内容总结
以上是互联网集市为您收集整理的C# + Matlab 实现计件工时拟合全部内容,希望文章能够帮你解决C# + Matlab 实现计件工时拟合所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。