matlab求多元函数极限(matlab多元约束函数优化)
fseminf是一个非线性规划求解器,可最小化由以下指定的问题:(带有附加参数约束):
1.fseminf函数
x=fseminf(fun,x0,ntheta,seminfcon)x=fseminf(fun,x0,ntheta,seminfcon,A,b)x=fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq)x=fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub)x=fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub,选项)x=fseminf(problem)[x,fval]=fseminf(___)[x,fval,exitflag,output]=fseminf(___)[x,fval,exitflag,output,lambda]=fseminf(___)b和beq是向量。A和Aeq是矩阵。c(x)、ceq(x)和Ki(x,wi)是返回向量的函数。f(x)是返回标量的函数。f(x)、c(x)和ceq(x)可以是非线性函数。向量(或矩阵)Ki(x,wi)0是x和一组附加变量w1,w2,wn的连续函数。变量w1,w2,wn是最大长度为2的向量。x、lb和ub可以作为向量或矩阵传递;请参阅矩阵参数。x=fseminf(fun,x0,ntheta,seminfcon)从x0开始,找到满足seminfcon中定义的ntheta半无限约束的函数fun的最小值。x=fseminf(fun,x0,ntheta,seminfcon,A,b)还尝试满足线性不等式A*xb。x=fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq)也会最小化,从而满足线性方程Aeq*x=beq。如果不存在不等式,则设A=[]且b=[]。x=fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub)定义x中设计变量的一组下限和上限,使得解始终在lbx范围内ub。[x,fval,exitflag,output]=fseminf(___)还返回描述退出条件的值exitflag以及提供有关优化过程的信息的结构输出。[x,fval,exitflag,output,lambda]=fseminf(___)返回一个结构体lambda,其字段包含解x处的拉格朗日乘子。x=fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub,options)使用options指定的优化选项执行最小化。使用optimoptions来设置这些选项。x=fseminf(problem)求problem的最小值,也就是problem中描述的结构。[x,fval]=fseminf(___),对于上述任何输入语法,返回解x处目标函数fun的值。2.实例1
程序
clc;全部清除;objfun=@(x)(x-1)^2;%匿名函数x0=0.2;%设置初始点x0=0.2。ntheta=1;%指定半无限约束。A=[];b=[];Aeq=[];贝q=[];磅=0;ub=2;选项=optimoptions(fseminf,PlotFcn,optimplotfval,显示,iter,MaxIterations,1000);[x,fval,exitflag,output,lambda]=fseminf(objfun,x0,ntheta,@seminfcon,A,b,Aeq,beq,lb,ub,options)%解决问题并通过调用fseminf查看结果。x1=fseminf(objfun,x0,ntheta,@seminfcon)seminfcon.m函数
function[c,ceq,K1,s]=seminfcon(x,s)c=[];%非线性不等式约束ceq=[];%非线性等式约束%t初始采样间隔(步长为0.01,采样间隔为0到1)如果isnan(s)s=[0.010];结束时间=0:s(1):1;%和半无限约束函数g(x,t)K1=(x-0.5)-(t-0.5).^2;最终运行结果
最大线性搜索定向一阶迭代F计数f(x)约束步长导数最优性过程020.64-0.2140.254.684e-121-1.60.3发现满足约束的局部最小值。优化完成,因为目标函数在可行方向上不递减,在最优容差值内,并且在约束容差值内满足约束。停止标准详细信息x=0.5000fval=0.2500exitflag=1输出=struct:iterations:包含以下字段2funcCount:4lssteplength:1stepsize:4.6841e-12Algorithm:活动集firstorderopt:9.3682e-12constrviolation.6841e-12message:局部最小值发现满足约束条件。优化已完成,因为目标函数在可行方向上不递减,在最优容差值内,并且满足约束条件,在约束容差值内。停止条件详细信息优化已完成:一阶最优性度量9.e-12小于options.OptimalityTolerance=1.e-06,最大约束违规4.e-12小于options.ConstraintTolerance=1.e-06.lambda=struct:包含以下字段lower:0upper:0eqlin:[01double]eqnonlin:[01double]ineqlin:[01double]ineqnonlin:[10double]发现满足约束的局部最小值。优化完成,因为目标函数在可行方向上不递减,在最优容差值内,并且在约束容差值内满足约束。停止标准详细信息x1=0.50003.实例2
方式一目标函数以匿名函数形式计算
程序
clc;全部清除;objfun=@(x)-0.225*(x(1))-0.225*(x(2))-0.1*(x(3));x0=[0.50.51];恩西塔=1;A=[1,21;3,40;5,60];b=[10;20;30];Aeq=[1,2,3;2,4,1];beq=[10;20];磅=[00-inf];ub=[];选项=optimoptions(fseminf,PlotFcn,optimplotfval,显示,iter,MaxIterations,1000);x=fseminf(objfun,x0,ntheta,@seminfcon1,A,b,Aeq,beq,lb,ub,options)seminfcon1.m函数
function[c,ceq,K1,s]=seminfcon1(x,s)c=[];%非线性不等式约束ceq=[];%非线性等式约束%t初始采样间隔(步长为0.01,采样间隔为0到1)如果isnan(s)s=[0.010];结束t(1,)=0:s(1):1;t(2,)=1-t(1);num=长度(t(1,));t(3,)=linspace(-5,5,num);t(4,)=linspace(-5,5,num);t(5,)=linspace(-5,5,num);保存t%和半无限约束函数g(x,t)K1=(0.48-0.225).*(t(1,)-x(1))+(0.51-0.225).*(t(2,)-x(2))-0.1*(t(3,)-x(3))-t(4,)-t(5,)*0.5;最终运行结果
最大线性搜索定向一阶迭代F计数f(x)约束步长导数最优性过程04-0.不可行起始点18-4..981-0.1355.89不可行收敛到不可行点。fseminf停止,因为当前搜索方向的大小小于步长容差值的两倍,但约束条件未满足在约束容差值内。停止标准详细信息x=28.4915-9..0000方式二目标函数以函数句柄计算
程序
clc;全部清除;x0=[0.50.51];恩西塔=1;A=[1,21;3,40;5,60];b=[10;20;30];2,3;2,4,1];贝q=[10;20];磅=[00-inf];ub=[];选项=optimoptions(fseminf,PlotFcn,optimplotfval,显示,iter,MaxIterations,1000);x=fseminf(@myfun,x0,ntheta,@seminfcon1,A,b,Aeq,beq,lb,ub,options)seminfcon1.m函数
function[c,ceq,K1,s]=seminfcon1(x,s)c=[];%非线性不等式约束ceq=[];%非线性等式约束%t初始采样间隔(步长为0.01,采样间隔为0到1)如果isnan(s)s=[0.010];结束t(1,)=0:s(1):1;t(2,)=1-t(1);num=长度(t(1,));t(3,)=linspace(-5,5,num);t(4,)=linspace(-5,5,num);t(5,)=linspace(-5,5,num);保存t%和半无限约束函数g(x,t)K1=(0.48-0.225).*(t(1,)-x(1))+(0.51-0.225).*(t(2,)-x(2))-0.1*(t(3,)-x(3))-t(4,)-t(5,)*0.5;endmyfun.m
函数y=myfun(x)y=-0.225*(x(1))-0.225*(x(2))-0.1*(x(3));最终运行结果
最大线性搜索定向一阶迭代F计数f(x)约束步长导数最优性过程04-0.不可行起始点18-4..981-0.1355.89不可行收敛到不可行点。fseminf停止,因为当前搜索方向的大小小于步长容差值的两倍,但约束条件未满足在约束容差值内。停止条件详细信息x=28.4915-9..0000fseminf停止原因,以整数形式返回。
标识
阐明
1
该函数收敛到解x。
4
搜索方向的模数小于指定的容差,并且约束违规小于options.ConstraintTolerance。
5
方向导数的大小小于指定的容差,并且约束违规小于options.ConstraintTolerance。
0
迭代次数超过options.MaxIterations或函数计算次数超过options.MaxFunctionevaluations。
-1
由输出函数或绘图函数停止。
-2
找不到可行点。
4.参考内容
[1
作者|郭志龙
编辑|郭志龙
校对|郭志龙