Matlab求解有约束规划函数_第1页
Matlab求解有约束规划函数_第2页
Matlab求解有约束规划函数_第3页
Matlab求解有约束规划函数_第4页
Matlab求解有约束规划函数_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

6.3

软件求解第一页,编辑于星期一:十九点五十分。Matlab求解有约束规划函数第二页,编辑于星期一:十九点五十分。1.fmincon函数求解形如下面的有约束非线性规划模型一般形式:第三页,编辑于星期一:十九点五十分。Matlab求解有约束非线性最小化求解非线性规划问题的Matlab函数fmincon1.约束中可以有等式约束2.可以含线性、非线性约束均可第四页,编辑于星期一:十九点五十分。输入参数语法:x

=

fmincon(fun,x0,A,b)x

=

fmincon(fun,x0,A,b,Aeq,beq)x

=

fmincon(fun,x0,A,b,Aeq,beq,lb,ub)x

=

fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)x

=

fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)x

=

fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2,第五页,编辑于星期一:十九点五十分。输入参数的几点说明❏模型中如果没有A,b,Aeq,beq,lb,ub的限制,则以空矩阵[]作为❏参数传入;❏nonlcon:如果包含非线性等式或不等式约束,则将这些函数编写为一个Matlab函数,nonlcon就是定义这些函数的程序文件名;不等式约束c(x)<=0等式约束ceq(x)=0.如果nonlcon=‘mycon’;则myfun.m定义如下

function[c,ceq]=mycon(x)c

=

...

%

计算非线性不等式约束在点x处的函数值ceq

=

...

%计算机非线性等式约束在点x处的函数值第六页,编辑于星期一:十九点五十分。对参数nonlcon的进一步示例2个不等式约束,2个等式约束3个决策变量x1,x2,x3如果nonlcon以‘mycon1’作为参数值,则程序

mycon1.m如下第七页,编辑于星期一:十九点五十分。对照约束条件编写myfun1.mfunction

[c,ceq]

=

mycon1(x)c(1)

=

x(1)*x(1)+x(2)*x(2)+x(3)*x(3)-100c(2)

=

60

-

x(1)*x(1)

+

10*x(3)*x(3)ceq(1)

=

x(1)

+

x(2)*x(2)

+

x(3)

-

80ceq(2)

=

x(1)^3

+

x(2)*x(2)

+

x(3)

-

80第八页,编辑于星期一:十九点五十分。nonlcon的高级用法允许提供非线性约束条件中函数的梯度设置方法:options

=

optimset("GradConstr",

"on")如果提供非线性约束条件中函数梯度,nonlcon的函数必须如下格式:第九页,编辑于星期一:十九点五十分。参数nonlcon的函数一般格式如下function

[c,ceq,GC,GCeq]

=

mycon(x)c

=

...ceq

=

...%计算非线性不等式约束在点x处的函数值%计算机非线性等式约束在点x处的函数值if

nargout

>

2%nonlcon如果四个输出参数%不等式约束的梯度%等式约束的梯度GC

=

...GCeq

=

...end第十页,编辑于星期一:十九点五十分。输出参数语法:[x,fval]

=

fmincon(...)[x,fval,exitflag]

=

fmincon(...)[x,fval,exitflag,output]

=

fmincon(...)[x,fval,exitflag,output,lambda]

=

fmincon(...)[x,fval,exitflag,output,lambda,grad]=fmincon(...)[x,fval,exitflag,output,lambda,grad,hessian]=fmincon(...)运用步骤:将自己的模型转化为上面的形式写出对应的参数调用函数第十一页,编辑于星期一:十九点五十分。fmincon应用求解示例:请问:1、结合fmincon函数,需要提供哪些参数第十二页,编辑于星期一:十九点五十分。第一步:编写一个M文件返回目标函数f在点x处的值函数程序函数myfun.mfunction

f

=

myfun(x)f

=

-x(1)

*

x(2)

*

x(3);第十三页,编辑于星期一:十九点五十分。第二步:为了调用MATLAB函数,必须将模型中的约束转化为如下形式(<=)。这是2个线性约束,形如这里:A=[-1

-2

-2;

1

2

2

];b=[0

72]’;第十四页,编辑于星期一:十九点五十分。第三步:提供一个搜索起点,然后调用相应函数,程序如下:%给一个初始搜索点x0

=

[10;

10;

10];[x,fval]

=

fmincon("myfun",x0,A,b)第十五页,编辑于星期一:十九点五十分。主程序(整体):A=[-1-2

-2;

1

2

2

];b=[0

72]’;%给一个初始搜索点x0

=

[10;

10;

10];[x,fval]

=

fmincon("myfun",x0,A,b)第十六页,编辑于星期一:十九点五十分。最后得到如下结果:x

=24.000012.000012.0000fval

=-3.4560e+03第十七页,编辑于星期一:十九点五十分。2.非负条件下线性最小二乘lsqnonneg适合如下模型:注意:约束只有非负约束第十八页,编辑于星期一:十九点五十分。语法:x

=lsqnonneg(c,d)x

=lsqnonneg(c,d,x0)x

=lsqnonneg(c,d,x0,options)第十九页,编辑于星期一:十九点五十分。3.有约束线性最小二乘lsqlin适合如下模型:注意:约束有线性等式、不等式约束第二十页,编辑于星期一:十九点五十分。语法:x

=

lsqlin(C,d,A,b)x

=

lsqlin(C,d,A,b,Aeq,beq)x

=

lsqlin(C,d,A,b,Aeq,beq,lb,ub)x

=

lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0)x

=

lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0,options)[x,resnorm]

=

lsqlin(...)[x,resnorm,residual]

=

lsqlin(...)[x,resnorm,residual,exitflag]

=

lsqlin(...)[x,resnorm,residual,exitflag,output]

=

lsqlin(...)[x,resnorm,residual,exitflag,output,lambda]

=

lsqlin(...)第二十一页,编辑于星期一:十九点五十分。4.非线性最小二乘lsqnonlin适合模型:第二十二页,编辑于星期一:十九点五十分。语法:x

=

lsqnonlin(fun,x0)x

=

lsqnonlin(fun,x0,lb,ub)x

=

lsqnonlin(fun,x0,lb,ub,options)x

=

lsqnonlin(fun,x0,options,P1,P2,

...

)[x,resnorm]

=

lsqnonlin(...)[x,resnorm,residual]

=

lsqnonlin(...)[x,resnorm,residual,exitflag]

=

lsqnonlin(...)[x,resnorm,residual,exitflag,output]

=

lsqnonlin(...)[x,resnorm,residual,exitflag,output,lambda]

=

lsqnonlin(...)[x,resnorm,residual,exitflag,output,lambda,jacobian]

=lsqnonlin(...)第二十三页,编辑于星期一:十九点五十分。例1:求解x,使得下式最小resnormresidual等于norm(C*x-d)^2等于C*x-d返回参数说明第二十四页,编辑于星期一:十九点五十分。第一步:编写M文件myfun.m计算向量Ffunction

F

=

myfun(x)k

=

1:10;F

=

2

+

2*k-exp(k*x(1))-exp(k*x(2));第二十五页,编辑于星期一:十九点五十分。第二步:调用优化函数lsqnonlin%给定搜索起点x0=[0.3

0.4];%调用求解函数[x,resnorm]

=

ls

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论