function []=main_opt_bayes()
%%初始参数
x0_m1=[1.0;0;0;1;
1.0;0;0;1;
1.0;0;0;1;
1.0;0;0;1;
1.0;0;0.5;0.5;
1.0;0;1;0;
1.0;0;0;1;
1.0;0;1;0;
1.0;1;0;0;
2;3;4;0;1;2;-4;-2;0;1;1];%%%47个参数
x0_m2=[ 1.0;0;0;1;
1.0;0;0;1;
1.0;0;0;1;
1.0;0;0;1;
1.0;0;0.5;0.5;
1.0;0;1;0;
1.0;0;0;1;
1.0;0;1;0;
1.0;1;0;0;
-1;-0.5;-0.0;0.0;0.5;1.0;-1;-0.5;0;1;1];%%%47个参数
x0_m3=[ 1.0;0;0.8657;0.1348;
1.0;0.1611;0.8389;0;
1.0;0.7977;0.2023;0;
1.0;0;0.7856;0.2144;
1.0;0.0418;0.9582;0;
1.0;0.6784;0.3216;0;
1.0;0;0.6545;0.3455;
1.0;0;0.8967;0.1033;
1.0;0.4817;0.5183;0;
1.0;0;0.7872;0.2128;
1.0;0.0441;0.9559;0;
1.0;0.6807;0.3193;0;
1.0;0;0.7076;0.2924;
1.0;0;0.9499;0.0501;
1.0;0.5614;0.4386;0;
1.0;0;0.5764;0.4236;
1.0;0;0.8187;0.1813;
1.0;0.3647;0.6353;0;
1.0;0;0.2107;0.7893;
1.0;0;0.4530;0.5470;
1.0;0;0.8774;0.1226;
1.0;0;0.1312;0.8688;
1.0;0;0.3734;0.6266;
1.0;0;0.7978;0.2022;
1.0;0;0;1;
1.0;0;0.2423;0.7577;
1.0;0;0.6667;0.3333;
-4;-2;0;-1.0;-0.5;0.0;0.0;pi/2;pi;0;1;2.5;1;1;1
];%%%123个参数
x0=[x0_m1;x0_m2;x0_m3];%217维向量
%%参数模型,要根据参数模型做必要的约束
paramodal(1).rulenum=9;%模型规则数目
paramodal(1).attrinum=2;%模型属性数目
paramodal(1).conseqnum=3;%模型结果数目
paramodal(1).attrixnum(1)=3;%模型每个属性的参考值数目
paramodal(1).attrixnum(2)=3;
paramodal(2).rulenum=9;
paramodal(2).attrinum=2;
paramodal(2).conseqnum=3;
paramodal(2).attrixnum(1)=3;
paramodal(2).attrixnum(2)=3;
paramodal(3).rulenum=27;
paramodal(3).attrinum=3;
paramodal(3).conseqnum=3;
paramodal(3).attrixnum(1)=3;
paramodal(3).attrixnum(2)=3;
paramodal(3).attrixnum(3)=3;
k=1;
totalParaNum=length(x0);
%%生成A矩阵,%217*20维矩阵
for l=1:length(paramodal)
rowNum(l)=1+paramodal(l).conseqnum;
paraNum(l)=paramodal(l).rulenum*rowNum(l)+sum(paramodal(l).attrixnum)+paramodal(l).conseqnum+paramodal(l).attrinum;%%计算每个模型参数的数目
if l==1
paraModalSart(l)=0;
else
paraModalSart(l)=sum(paraNum(1:l-1));
end
for i=1:paramodal(l).attrinum;
for j=1:paramodal(l).attrixnum(i)-1
A(:,k)=zeros(totalParaNum,1);
if i==1;
A( paraModalSart(l)+rowNum(l)*paramodal(l).rulenum+j,k)=1;
A(paraModalSart(l)+rowNum(l)*paramodal(l).rulenum+j+1,k)=-1;
else
A(paraModalSart(l)+rowNum(l)*paramodal(l).rulenum+sum(paramodal(l).attrixnum(1:i-1))+j,k)=1;
A(paraModalSart(l)+rowNum(l)*paramodal(l).rulenum+sum(paramodal(l).attrixnum(1:i-1))+1+j,k)=-1;
end
k=k+1;
end
end
for i=1:paramodal(l).conseqnum-1
A(:,k)=zeros(totalParaNum,1);
A(paraModalSart(l)+rowNum(l)*paramodal(l).rulenum+sum(paramodal(l).attrixnum)+i,k)=1;
A(paraModalSart(l)+rowNum(l)*paramodal(l).rulenum+sum(paramodal(l).attrixnum)+i+1,k)=-1;
k=k+1;
end
end
b=[0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;];%20维向量
%%生成Aeq矩阵,%217*45维矩阵
k=1;
for l=1:length(paramodal)
rowNum(l)=1+paramodal(l).conseqnum;
paraNum(l)=paramodal(l).rulenum*rowNum(l)+sum(paramodal(l).attrixnum)+paramodal(l).conseqnum+paramodal(l).attrinum;%%计算每个模型参数的数目
if l==1
paraModalSart(l)=0;
else
paraModalSart(l)=sum(paraNum(1:l-1));
end
for i=1:paramodal(l).rulenum
Aeq(:,k)=zeros(totalParaNum,1);
for j=1:paramodal(l).conseqnum;
Aeq(paraModalSart(l)+(i-1)*rowNum(l)+j+1,k)=1;
end
k=k+1;
end
end
beq=[1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1];%45维向量
lb_m1=[0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
2;2;4;0;0;2;-4;-4;0;0;0];%%%47个参数
lb_m2=[ 0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
-1;-1;-0.0;0.0;0.0;1.0;-1;-1;0;0;0];%%%47个参数
lb_m3=[ 0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
-4;-4;0;-1.0;-1;0.0;0.0;0;pi;0;0;2.5;0;0;0
];%%%123个参数
ub_m1=[ 1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
2;4;4;0;2;2;-4;0;0;1;1];%%%47个参数
ub_m2=[ 1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
-1;0.0;-0.0;0.0;1.0;1.0;-1;0;0;1;1];%%%47个参数
ub_m3=[ 1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
1;1;1;1;
-4;0;0;-1.0;0;0.0;0.0;pi;pi;0;2.5;2.5;1;1;1
];%%%123个参数
lb=[lb_m1;lb_m2;lb_m3];
ub=[ub_m1;ub_m2;ub_m3];
options=optimset('Display','on','MaxFunEvals',50000*length(x0) , 'MaxIter',50 , 'TolFun',1e-4 , 'TolCon',1e-4);
numberOfSample =20; %输入样本数量
%%均匀分布,随机抽取dataNum个数据作为训练集
x1_min=2;
x1_max=4;
x1=x1_min+rand(1,numberOfSample)*(x1_max-x1_min);
x2_min=0;
x2_max=2;
x2=x2_min+rand(1,numberOfSample)*(x2_max-x2_min);
x3_min=-1;
x3_max=0;
x3=x3_min+rand(1,numberOfSample)*(x3_max-x3_min);
x4_min=0;
x4_max=1;
x4=x4_min+rand(1,numberOfSample)*(x4_max-x4_min);
x5_min=0;
x5_max=pi;
x5=x5_min+rand(1,numberOfSample)*(x5_max-x5_min);
input=[x1;x2;x3;x4;x5];
for i=1:numberOfSample
y1(i)=-(x1(i)-2)*x2(i);
y2(i)=-(x3(i)+1)*x4(i);
y3(i)=exp(y1(i))+0.5*exp(y2(i))+sin(x5(i))/x5(i);
end
trainDataSet.input=input;
output=y3;
trainDataSet.output=y3;
function f=f_opt(x)
f=fun_opt(x,trainDataSet);
end
%[x_opt]=fmincon(@f_opt,x0,A',b,Aeq',beq,lb',ub',[],options); %fmincon是一个求解最优问题的函数,可查看matlab help对函数的说明
x_opt=x0;
%取测试样本数量等于输入(训练集)样本数量,因为输入样本(训练集)容量较少,否则一般必须用新鲜数据进行测试
numberOfTestSample =numberOfSample;
numberOfForcastSample = 20;
numberOfHiddenNeure = 8;
inputDimension = 5;
outputDimension = 1;
%输入数据矩阵
% input = [numberOfPeople; numberOfAutomobile; roadArea];
%目标(输出)数据矩阵
% output = [passengerVolume; freightVolume];
% %对训练集中的输入数据矩阵和目标数据矩阵进行归一化处理
% [sampleInput, minp, maxp, tmp, mint, maxt] = premnmx(input, output);
%
% %噪声强度
% % noiseIntensity = 0.01;
% noiseIntensity = 0;
% %利用正态分布产生噪声
% noise = noiseIntensity * randn(outputDimension, numberOfSample);
% %给样本输出矩阵tmp添加噪声,防止网络过度拟合
% sampleOutput = tmp + noise;
%
% %取测试样本输入(输出)与输入样本相同,因为输入样本(训练集)容量较少,否则一般必须用新鲜数据进行测试
% testSampleInput = sampleInput;
% testSampleOutput = sampleOutput;
%
% %最大训练次数
% maxEpochs = 50000;
%
% %网络的学习速率
% learningRate = 0.035;
%
% %训练网络所要达到的目标误差
% error0 = 0.65*10^(-3);
%
% %初始化输入层与隐含层之间的权值
% W1 = 0.5 * rand(numberOfHiddenNeure, inputDimension) - 0.1;
% %初始化输入层与隐含层之间的阈值
% B1 = 0.5 * rand(numberOfHiddenNeure, 1) - 0.1;
% %初始化输出层与隐含层之间的权值
% W2 = 0.5 * rand(outputDimension, numberOfHiddenNeure) - 0.1;
% %初始化输出层与隐含层之间的阈值
% B2 = 0.5 * rand(o
置信规则库matlab代码 brb.rar
5星 · 超过95%的资源 需积分: 50 114 浏览量
2019-09-12
16:48:59
上传
评论 12
收藏 11KB RAR 举报
偶尔写一写
- 粉丝: 90
- 资源: 6
最新资源
- 2%EF%BC%9A%E9%99%95%E8%A5%BF%E
- yyspdz62_944.apk
- SAP公司间采购EDI配置-如何触发自动MIRO.docx
- python197基于图像识别的仪表实时监控系统.rar
- python196基于循环神经网络的情感分类系统.rar
- I2C驱动SHT30温湿度传感器和LCD12864使用例程(RSCG12864B)
- python193中学地理-中国的江河湖泊教学网(django).rar
- python191基于时间序列分析的大气污染预测软件(django).rar
- python190基于人脸识别智能化小区门禁管理系统.rar
- python189某医院体检挂号系统.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈