function main()
clc % 清屏
clear all; %清除内存以便加快运算速度
close all; %关闭当前所有figure图像
SamNum=20; %输入样本数量为20
TestSamNum=20; %测试样本数量也是20
ForcastSamNum=5; %预测样本数量为5
HiddenUnitNum=15; %中间层隐节点数量取15
InDim=11; %网络输入维度为11
OutDim=1; %网络输出维度为1
%原始数据
%x1
x1=[98 92 73 78 87 68 61 53 38 94 24 84 44 35 16 65 58 73 33 94];
%x2
x2=[92 96 87 71 96 72 64 46 43 97 37 80 58 23 44 67 65 84 28 89];
%x3
x3=[86 94 82 76 93 64 62 47 51 91 45 71 55 16 32 68 62 95 35 96];
%x4
x4=[95 88 65 91 97 66 57 58 62 96 31 78 45 27 38 62 67 78 20 94];
%x5
x5=[90 95 89 82 92 69 67 55 48 87 18 73 62 38 26 61 71 84 26 91];
%x6
x6=[97 91 74 89 95 61 68 36 57 93 29 83 54 24 35 58 69 86 44 99];
%x7
x7=[93 89 86 80 90 65 72 39 53 98 33 74 46 29 20 63 64 76 38 95];
%x8
x8=[96 97 80 78 88 70 64 48 46 92 13 67 59 28 37 69 65 83 26 87];
%x9
x9=[92 93 94 63 96 75 63 52 49 86 22 82 55 38 34 64 70 89 30 93];
%x10
x10=[95 90 81 76 98 63 69 58 50 94 38 88 45 21 33 62 64 75 44 88];
%x12
x12=[94 99 82 84 94 67 62 47 54 95 30 75 43 26 39 66 65 87 21 88];
%等级
dj=[1 1 2 2 1 3 3 4 4 1 5 2 4 5 5 3 3 2 5 1];
p=[x1;x2;x3;x4;x5;x6;x7;x8;x9;x10;x12]; %输入数据矩阵
t=dj; %目标数据矩阵
[SamIn,minp,maxp,tn,mint,maxt]=premnmx(p,t); %原始样本对(输入和输出)初始化
rand('state',sum(100*clock)) %依据系统时钟种子产生随机数
NoiseVar=0.01; %噪声强度为0.01
Noise=NoiseVar*randn(1,SamNum); %生成噪声
SamOut=tn + Noise; %将噪声添加到输出样本上
TestSamIn=SamIn; %取输入样本与测试样本相同
TestSamOut=SamOut; %取输出样本与测试样本相同
MaxEpochs=50000; %最多训练次数为50000
lr=0.035; %学习速率为0.035
E0=0.65*10^(-3); %目标误差为0.65*10^(-3)
W1=0.5*rand(HiddenUnitNum,InDim)-0.1; %初始化输入层与隐含层之间的权值
B1=0.5*rand(HiddenUnitNum,1)-0.1; %初始化输入层与隐含层之间的阈值
W2=0.5*rand(OutDim,HiddenUnitNum)-0.1; %初始化输出层与隐含层之间的权值
B2=0.5*rand(OutDim,1)-0.1; %初始化输出层与隐含层之间的阈值
ErrHistory=[]; %给中间变量预先占据内存
for i=1:MaxEpochs
HiddenOut=logsig(W1*SamIn+repmat(B1,1,SamNum)); % 隐含层网络输出
NetworkOut=W2*HiddenOut+repmat(B2,1,SamNum); % 输出层网络输出
Error=SamOut-NetworkOut; % 实际输出与网络输出之差
SSE=sumsqr(Error) %能量函数(误差平方和)
ErrHistory=[ErrHistory SSE];
if SSE<E0,break, end %如果达到误差要求则跳出学习循环
% 依据能量函数负梯度下降原理调整权值和阈值
Delta2=Error;
Delta1=W2'*Delta2.*HiddenOut.*(1-HiddenOut);
dW2=Delta2*HiddenOut';
dB2=Delta2*ones(SamNum,1);
dW1=Delta1*SamIn';
dB1=Delta1*ones(SamNum,1);
%对输出层与隐含层之间的权值和阈值进行修正
W2=W2+lr*dW2;
B2=B2+lr*dB2;
%对输入层与隐含层之间的权值和阈值进行修正
W1=W1+lr*dW1;
B1=B1+lr*dB1;
end
HiddenOut=logsig(W1*SamIn+repmat(B1,1,TestSamNum)); % 隐含层输出最终结果
NetworkOut=W2*HiddenOut+repmat(B2,1,TestSamNum); % 输出层输出最终结果
a=postmnmx(NetworkOut,mint,maxt); % 还原网络输出层的结果
x=1:20; % x轴刻度
newk=a(1,:); % 网络输出等级
figure ;
subplot(2,1,1);plot(x,newk,'r-o',x,dj,'b--+') %绘值等级对比图;
legend('网络输出等级','实际等级');
xlabel('序号');ylabel('等级');
% 利用训练好的网络进行预测
% 当用训练好的网络对新数据pnew进行预测时,也应作相应的处理
pnew=[96 70 60 55 20
94 88 75 59 38
85 75 68 41 42
89 82 67 81 25
93 96 57 58 24
87 79 74 73 37
94 89 76 57 40
76 80 83 48 36
98 84 69 56 21
94 85 75 43 45
97 83 64 55 35]; %五个待分级高校的相关数据;
pnewn=tramnmx(pnew,minp,maxp); %利用原始输入数据的归一化参数对新数据进行归一化;
HiddenOut=logsig(W1*pnewn+repmat(B1,1,ForcastSamNum)); % 隐含层输出预测结果
anewn=W2*HiddenOut+repmat(B2,1,ForcastSamNum); % 输出层输出预测结果
%把网络预测得到的数据还原为原始的数量级;
anew=postmnmx(anewn,mint,maxt)
没有合适的资源?快使用搜索试试~ 我知道了~
changyi_肠衣搭配方案的matlab代码_
共1个文件
m:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 11 下载量 105 浏览量
2021-09-30
01:17:46
上传
评论
收藏 2KB RAR 举报
温馨提示
基于线性规划下的肠衣搭配方案,matlab代码实现
资源推荐
资源详情
资源评论
收起资源包目录
changyi.rar (1个子文件)
changyi.m 4KB
共 1 条
- 1
Dyingalive
- 粉丝: 87
- 资源: 4807
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 王佳伟毕设相关文件.zip
- 40道Linux日志高频题整理(附答案背诵版).md
- 黑苹果-锐捷-OC-EFI0.99-RG-CT5700-G3-10700
- HTML5小游戏【3d反恐英雄-3dfkyx优秀H5小游戏合集】游戏源码分享下载 - 3dfkyx.zip
- GAT1399协议分析(四)-注销
- Go 实现的命令行程序,可以通过参数来控制和消耗 CPU 占比 通常用于测试系统负载和性能
- ADSP-BF533的例程源码39:Mirror图像处理算法源码
- Linux命令行与shell脚本编程 - mysql数据库操作案例
- 新数通HCIE-Datacom备考流程仅供参考
- molecules-26-01022.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页