优化模型参数给出了最小的错误方块总和

3次观点(过去30天)
Rudraprasad Bhattacharyya
评论: 马特J. 于2020年11月28日
我有一个简单的回归模型
Y_MODEL = B0 + B1 * X1 + B2 * X2 + NORMRND(0,x3)+ x4
我知道B0,B1和B2的值。我有一些实验观察到的数据,y_obs(存储在向量中)。按平方的误差和计算为:
f = sum(y_obs-y_model)^ 2
问题陈述 :我想最大限度地减少目标函数f,以获得x1,x2,x3和x4的值。我知道x1,x2,x3,x4的上限和下限。我没有matlab工具箱。所以我正在尝试使用'fmincon'。可能有一些更好的方法或功能来解决这个问题。
我试图写代码。我看到程序以更高的结束 F 价值比第一次试用的f值。但是,Matlab报道:
当地的最低可能。约束满足。
你们中的任何人都可以帮我找出问题吗?我错过了约束吗?
这是我的代码:
清除;关闭; CLC;
格式;
鉴于错误的平方和最小,我想要校准alpha,beta,sigma和delta
%实验观察数据
Y_OBs = [2708.7,2937.8,2934.9,2877.8,2823.1];
%预测模型
%y_model =(b0 + b1 * x(1)+ b2 * x(2)))
预测模型的%系数
B0 = 2670.5;B1 = -576.677;B2 = 138.65;
模型参数的%范围
x1 = [0.5; 0.75];x2 = [3.5; 4.5];x3 = [80; 110];x4 = [ - 50; 40];
模型参数的%界限
lb = [x1(1),x2(1),x3(1),x4(1)];
UB = [x1(2),x2(2),x3(2),x4(2)];
%错误项(通常用平均值0和STD DEV分发。x3)
%abulded_error〜n(0,x(3))
%x4〜u(u_lb,u_ub)
%y_observed =(b0 + b1 * x(1)+ b2 * x(2))+ normrnd(0,x(3))+ x(4);
百分比的错误的总和
f = @(x)sum((y_obs-(b0 + b1 * x(1)+ b2 * x(2)+ normrnd(0,x(3))+ x(4)))。^ 2);%目标函数最小化
%初步猜测
X0 =(LB + UB)/ 2;
%显示初始目标
DISP(['初步目标:'num2str(f(x0))]);
%线性约束
a = [];b = [];AEQ = [];beq = [];
选项= Optimoptions('粉丝''展示''iter''算法''SQP');
%用粉刺优化
[x] = Fmincon(F,X0,A,B,AEQ,BEQ,LB,UB);
%显示最终目标
DISP(['最终目标:'num2str(f(x))]);
%打印解决方案
DISP('解决方案'
DISP(['x1 ='num2str(x(1))]);
DISP(['x2 ='num2str(x(2))]);
DISP(['x3 ='num2str(x(3))]);
DISP(['x4 ='num2str(x(4))]);

答案(1)

马特J.
马特J. 于2020年11月22日
它没有有意义的是随机化操作 诺尔纽德 在您的客观函数中。如果每次调用它,函数如何“最小化”如果其定义随机更改?
2评论
马特J.
马特J. 于2020年11月28日
您必须为每个随机示例运行单独的优化。

登录评论。

下载188bet金宝搏


释放

R2017B.

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!