MATLAB 响应面法程序为什么运行不出来?求助!!!

functionCC=bate2(X)%目标函数子函数globalMuSigama%定义全局变量CC=((X(1)-Mu(1))/Sigama(1))^2+((X(2)-... function CC=bate2(X) %目标函数子函数
global Mu Sigama %定义全局变量
CC=((X(1)-Mu(1))/Sigama(1))^2+((X(2)-Mu(2))/Sigama(2))^2 %X均为正态分布

function [c,ceq]=st(X) %约束条件子函数
c=[]; %非线性不等式约束
ceq=xym(X) %非线性等式约束

function Z=xym(X) %响应面函数子函数
A1=[1.0000 10.0000 2.5000 100.0000 6.2500;
1.0000 16.0000 2.5000 256.0000 6.2500;
1.0000 4.0000 2.5000 256.0000 6.2500;
1.0000 10.0000 3.6250 100.0000 13.1406;
1.0000 10.0000 1.3750 100.0000 1.8906];
B1=[13.6728;10.8005;16.5451;16.8897;-10.3136];
C=A1\B1; %求解二次响应面函数各项系数
Z=C(1)+C(2)*X(1)+C(3)*X(2)+C(4)*X(1)+C(5)*X(2); %计算功能函数值

Mu=[10 2.5]; %输入平均值
Sigama=[2 0.375] %输入标准差
X0=[10 2.5]; %输入初始迭代点
A=[];b=[];Aeq=[];beq=[];
lb=[];ub=[];
[X,fval,exitflag,output]=fmincon(@bata2,X0,A,b,Aeq,,beq,lb,ub,@st); %调用优化工具箱求解
bata=sqrt(fval);
Pf=cdf('norm',-bata,0,1); %计算失效概率

这是一篇论文里计算可靠度的响应面法的程序,但是我运行不出来,本人新手,也不知道错在哪了。希望大神指点,谢谢!!!!!
展开
 我来答
tianxiawulang
2013-08-09 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2657万
展开全部

存在四个问题:

 

1、从程序结构上说,代码包括三部分:

(1)第一个function(即bate2)为目标函数;

(2)第二、三个function,其中st为约束条件,xym为st调用的子函数;

(3)下面这行代码以及后面的内容为主程序

Mu=[10 2.5];  %输入平均值

主程序可以作为脚本(Script)直接使用,也可以保存成一个函数。保存成函数的好处是可以把三部分代码存在同一个文件中,但需要注意,主函数必须在最前面。

 

2、下面这行代码多了一个逗号:

[X,fval,exitflag,output]=fmincon(@bata2,X0,A,b,Aeq,,beq,lb,ub,@st);

 

3、目标函数的名字为bate2,但在调用fmincon的时候写成了bata2。

 

4、在目标函数中使用了全局变量Mu、Sigama,但主程序中未声明其为全局变量。全局变量需要在每一个使用它的模块中都要声明,也就是说,需要在主程序中增加一行:

global Mu Sigama

 

另外,程序中有些应该输出的信息没有输出,却输出了一些不必输出的信息(语句后面是否加分号),也作了调整。

 

改写后的代码如下(可以保存在一个文件中,已作为附件上传):

function zd
global Mu Sigama  %定义全局变量
Mu=[10 2.5];  %输入平均值
Sigama=[2 0.375]   %输入标准差
X0=[10 2.5];  %输入初始迭代点
A=[];b=[];Aeq=[];beq=[];
lb=[];ub=[];
[X,fval,exitflag,output]=fmincon(@bata2,X0,A,b,Aeq,beq,lb,ub,@st);  %调用优化工具箱求解
bata=sqrt(fval);
Pf=cdf('norm',-bata,0,1);  %计算失效概率
function CC=bata2(X)  %目标函数子函数
global Mu Sigama  %定义全局变量
CC=((X(1)-Mu(1))/Sigama(1))^2+((X(2)-Mu(2))/Sigama(2))^2  %X均为正态分布
 
function [c,ceq]=st(X)   %约束条件子函数
c=[];  %非线性不等式约束
ceq=xym(X)   %非线性等式约束
 
function Z=xym(X)  %响应面函数子函数
A1=[1.0000 10.0000 2.5000 100.0000 6.2500;
    1.0000 16.0000 2.5000 256.0000 6.2500;
    1.0000 4.0000 2.5000 256.0000 6.2500;
    1.0000 10.0000 3.6250 100.0000 13.1406;
    1.0000 10.0000 1.3750 100.0000 1.8906];
B1=[13.6728;10.8005;16.5451;16.8897;-10.3136];
C=A1\B1; %求解二次响应面函数各项系数
Z=C(1)+C(2)*X(1)+C(3)*X(2)+C(4)*X(1)+C(5)*X(2);  %计算功能函数值

 

 

运行结果如下:

Optimization terminated: first-order optimality measure less
 than options.TolFun and maximum constraint violation is less
 than options.TolCon.
X =
   10.2991    1.5136

fval =
    6.9410

exitflag =
     1

output =
       iterations: 3
        funcCount: 12
     lssteplength: 1
         stepsize: 0.1441
        algorithm: 'medium-scale: SQP, Quasi-Newton, line-search'
    firstorderopt: 8.5143e-008
          message: [1x144 char]

Pf =
    0.0042

 

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式