最优化优化工具箱.docx

上传人:b****3 文档编号:1934429 上传时间:2022-10-25 格式:DOCX 页数:24 大小:131.17KB
下载 相关 举报
最优化优化工具箱.docx_第1页
第1页 / 共24页
最优化优化工具箱.docx_第2页
第2页 / 共24页
最优化优化工具箱.docx_第3页
第3页 / 共24页
最优化优化工具箱.docx_第4页
第4页 / 共24页
最优化优化工具箱.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

最优化优化工具箱.docx

《最优化优化工具箱.docx》由会员分享,可在线阅读,更多相关《最优化优化工具箱.docx(24页珍藏版)》请在冰豆网上搜索。

最优化优化工具箱.docx

最优化优化工具箱

MATLAB优化工具箱

1、线性规划

1.1一般线性规划(linprog)

1.1.1数学模型

其中,,,,和为向量,和为矩阵.

1.1.2相关语法

x=linprog(f,A,b)

x=linprog(f,A,b,Aeq,beq)

x=linprog(f,A,b,Aeq,beq,lb,ub)

x=linprog(f,A,b,Aeq,beq,lb,ub,x0)

x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)

[x,fval]=linprog(…)

[x,fval,exitflag]=linprog(…)

[x,fval,exitflag,output]=linprog(…)

[x,fval,exitflag,output,lambda]=linprog(…)

1.1.3实例分析

例1、求解如下线性规划模型

代码:

f=[-2;-3;-1];

A=[122;147];

b=[4;9];

lb=[0;0;0];

[x,fval]=linprog(f,A,b,[],[],lb)

Optimizationterminated.

x=

4.0000

0.0000

0.0000

fval=

-8.0000

即原问题的最优解为,最优值为8.

例2、求解如下线性规划模型

代码:

f=[5;0;21];

A=[-11-6;-1-1-2];

b=[-2;-1];

lb=[0;0;0];

[x,fval]=linprog(f,[],[],A,b,lb)

Optimizationterminated.

x=

0.5000

0.0000

0.2500

fval=

7.7500

即原问题的最优解为,最大值为-7.75.

1.20-1线性规划(bintprog)

1.2.1数学模型

其中,,,,和为向量,和为矩阵.

1.2.2相关语法

x=bintprog(f,A,b)

x=bintprog(f,A,b,Aeq,beq)

x=bintprog(f,A,b,Aeq,beq,lb,ub)

x=bintprog(f,A,b,Aeq,beq,lb,ub,x0)

x=bintprog(f,A,b,Aeq,beq,lb,ub,x0,options)

[x,fval]=bintprog(…)

[x,fval,exitflag]=bintprog(…)

[x,fval,exitflag,output]=bintprog(…)

1.2.3实例分析

代码:

f=[-193;-191;-187;-186;-180;-185];

A=[0000-1-1;0-100-10;110000;010001;000101];

b=[-1;-1;1;1;1];

Aeq=[111111];

beq=[3];

x=bintprog(f,A,b,Aeq,beq)

Optimizationterminated.

x=

1

0

1

0

1

0

即原问题的最优解为,z=560.

1.3整数线性规划(intprog)

1.3.1数学模型

其中,,,,和为向量,和为矩阵.

1.3.2相关语法

function[x,fval,status]=intprog(f,A,B,I,Aeq,Beq,lb,ub,e)

%整数规划求解函数intprog()

%其中f为目标函数向量

%A和B为不等式约束Aeq与Beq为等式约束

%I为整数约束

%lb与ub分别为变量下界与上界

%x为最优解,fval为最优值

%例子:

%maximize20x1+10x2

%S.T.

%5x1+4x2<=24

%2x1+5x2<=13

%x1,x2>=0

%x1,x2是整数

%f=[-20,-10];

%A=[54;25];

%B=[24;13];

%lb=[00];

%ub=[infinf];

%I=[1,2];

%e=0.000001;

%[xvs]=IP(f,A,B,I,[],[],lb,ub,,e)

%x=41v=-90.0000s=1

%控制输入参数

ifnargin<9,e=0.00001;

ifnargin<8,ub=[];

ifnargin<7,lb=[];

ifnargin<6,Beq=[];

ifnargin<5,Aeq=[];

ifnargin<4,I=[1:

length(f)];

end,end,end,end,end,end

%求解整数规划对应的线性规划,判断是否有解

options=optimset('display','off');

[x0,fval0,exitflag]=linprog(f,A,B,Aeq,Beq,lb,ub,[],options);

ifexitflag<0

disp('没有合适整数解');

x=x0;

fval=fval0;

status=exitflag;

return;

else

%采用分支定界法求解

bound=inf;

[x,fval,status]=branchbound(f,A,B,I,x0,fval0,bound,Aeq,Beq,lb,ub,e);

end

funtion[newx,newfval,status,newbound]

branchbound(f,A,B,I,x,fval,bound,Aeq,Beq,lb,ub,e)

%分支定界法求解整数规划

%f,A,B,Aeq,Beq,lb,ub与线性规划相同

%I为整数限制变量的向量

%x为初始解,fval为初始值

options=optimiset('display','off');

[x0,fval0,status0]=linprog(f,A,B,Aeq,Beq,lb,ub,[],options);

%递归中的最终退出条件

%无解或者解比现在有上界大则返回原解

ifstatus0<=0||fval>=bound

newx=x;

newfval=fval;

newbound=bound;

status=status0;

return;

end

%是否为整数解,如果是整数解则返回原解

intindex=find(abs(x0(I)-round(x0(I)))>e);

ifisempty(intindex)

newx(I)=round(x0(I));

newfval=fval0;

newbound=fval0;

status=1;

return;

end

%当有非整可行解时,则进行分支求解

%此时必定会有整数解或空解

%找到第一个不满足整数要求的变量

n=I(intindex

(1));

addA=zeros(1,length(f));

addA(n)=1;

%构造第一个分支x<=floor(x(n))

A=[A;addA];

B=[B;floor(x(n))];

[x1,fval1,status1,bound1]=branchbound(f,A,B,I,x0,fval0,bound,Aeq,Beq,lb,ub,e);

A(end,:

)=[];

B(:

end)=[];

%解得第一个分支,若为更优解则替换,若不是则保持原状

status=status1;

ifstatus1>0&&bound

newx=x1;

newfval=fval1;

bound=fval1;

newbound=bound1;

else

newx=x0;

newfval=fval0;

newbound=bound;

end

%构造第二分支

A=[A;-addA];

B=[B;-ceil(x(n))];

[x2,fval2,status2,bound2]=branchbound(f,A,B,I,x0,fval0,bound,Aeq,Beq,lb,ub,e);

A(end,:

)=[];

B(:

end)=[];

%解得第二分支,并与第一分支作比较,若更忧则替换

ifstatus2>0&&bound2

status=status2;

newx=x2;

newfval=fval2;

newbound=bound2;

end

1.3.3实例分析

例1、求解下列运输问题.

代码:

f=[2;9;10;7;1;3;4;2;8;4;2;5];

Aeq=[111100000000

000011110000

000000001111

100010001000

010001000100

001000100010

000100010001];

beq=[9;5;7;3;8;4;6];

I=[1:

length(f)];

lb=zeros(12,1);

[x,fval]=intprog(f,[],[],I,Aeq,beq,lb)

Optimizationterminated.

x=

300605000340

fval=

83.0000

即原问题的最优值为83.

2、非线性规划

2.1无约束非线性规划

2.1.1单变量优化(fminbnd)

2.1.1.1数学模型

其中,和为标量,为函数,返回标量.

2.1.1.2相关语法

x=fminbnd(fun,x1,x2)

x=fminbnd(fun,x1,x2,options)

x=fminbnd(fun,x1,x2,options,P1,P2,…)

[x,fval]=fminbnd(…)

[x,fval,exitflag]=fminbnd(…)

[x,fval,exitflag,output]=fminbnd(…)

2.1.1.3实例分析

例1、在区间[0,1]上求函数的最小值.

代码:

%先定义函数f(x)的M文件f1114.m

functionf=f1114(x)

f=x^5+x^3-7*x+1;

%主程序

%调用fminbnd函数

[x,fval]=fminbnd('f1114',0,1)

x=

0.9595

fval=

-4.0199

即原问题在x=0.9595处取得最小值-4.0199.

2.1.1.4常见算法

(1)二分法程序以及实例

程序:

functiony=erfen(fun,a,b,esp)

ifnargin<4

esp=1e-4;

end

iffeval(fun,a)*feval(fun,b)

n=1;

c=(a+b)/2;

whilec>esp

iffeval(fun,a)*feval(fun,c)<0

b=c;

c=(a+b)/2;

elseiffeval(fun,c)*feval(fun,b)<0

a=c;

c=(a+b)/2;

else

y=c;

es

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1