最优化优化工具箱.docx
- 文档编号:1934429
- 上传时间:2022-10-25
- 格式:DOCX
- 页数:24
- 大小:131.17KB
最优化优化工具箱.docx
《最优化优化工具箱.docx》由会员分享,可在线阅读,更多相关《最优化优化工具箱.docx(24页珍藏版)》请在冰豆网上搜索。
最优化优化工具箱
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文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 优化 工具箱