您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > MATLAB优化应用非线性规划
MATLAB优化应用§1线性规划模型一、线性规划课题:实例1:生产计划问题假设某厂计划生产甲、乙两种产品,现库存主要材料有A类3600公斤,B类2000公斤,C类3000公斤。每件甲产品需用材料A类9公斤,B类4公斤,C类3公斤。每件乙产品,需用材料A类4公斤,B类5公斤,C类10公斤。甲单位产品的利润70元,乙单位产品的利润120元。问如何安排生产,才能使该厂所获的利润最大。建立数学模型:设x1、x2分别为生产甲、乙产品的件数。f为该厂所获总润。maxf=70x1+120x2s.t9x1+4x2≤36004x1+5x2≤20003x1+10x2≤3000x1,x2≥0实例2:投资问题某公司有一批资金用于4个工程项目的投资,其投资各项目时所得的净收益(投入资金锪百分比)如下表:工程项目收益表工程项目ABCD收益(%)1510812由于某种原因,决定用于项目A的投资不大于其他各项投资之和而用于项目B和C的投资要大于项目D的投资。试确定全文该公司收益最大的投资分配方案。建立数学模型:设x1、x2、x3、x4分别代表用于项目A、B、C、D的投资百分数。maxf=0.15x1+0.1x2+0.08x3+0.12x4s.tx1-x2-x3-x4≤0x2+x3-x4≥0x1+x2+x3+x4=1xj≥0j=1,2,3,4实例3:运输问题有A、B、C三个食品加工厂,负责供给甲、乙、丙、丁四个市场。三个厂每天生产食品箱数上限如下表:工厂ABC生产数604050四个市场每天的需求量如下表:市场甲乙丙丁需求量20353334从各厂运到各市场的运输费(元/每箱)由下表给出:收点发点市场甲乙丙丁工A2132厂B1321C3411求在基本满足供需平衡的约束条件下使总运输费用最小。建立数学模型:设aij为由工厂i运到市场j的费用,xij是由工厂i运到市场j的箱数。bi是工厂i的产量,dj是市场j的需求量。b=(604050)d=(20353334)s.txij≥0当我们用MATLAB软件作优化问题时,所有求maxf的问题化为求min(-f)来作。约束gi(x)≥0,化为-gi≤0来作。上述实例去掉实际背景,归结出规划问题:目标函数和约束条件都是变量x的线性函数。形如:(1)minfTXs.tAX≤bAeqX=beqlb≤X≤ub其中X为n维未知向量,fT=[f1,f2,…fn]为目标函数系数向量,小于等于约束系数矩阵A为m×n矩阵,b为其右端m维列向量,Aeq为等式约束系数矩阵,beq为等式约束右端常数列向量。lb,ub为自变量取值上界与下界约束的n维常数向量。二.线性规划问题求最优解函数:调用格式: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(…)说明:x=linprog(f,A,b)返回值x为最优解向量。x=linprog(f,A,b,Aeq,beq)作有等式约束的问题。若没有不等式约束,则令A=[]、b=[]。x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)中lb,ub为变量x的下界和上界,x0为初值点,options为指定优化参数进行最小化。Options的参数描述:Display显示水平。选择’off’不显示输出;选择’iter’显示每一步迭代过程的输出;选择’final’显示最终结果。MaxFunEvals函数评价的最大允许次数Maxiter最大允许迭代次数TolXx处的终止容限[x,fval]=linprog(…)左端fval返回解x处的目标函数值。[x,fval,exitflag,output,lambda]=linprog(f,A,b,Aeq,beq,lb,ub,x0)的输出部分:exitflag描述函数计算的退出条件:若为正值,表示目标函数收敛于解x处;若为负值,表示目标函数不收敛;若为零值,表示已经达到函数评价或迭代的最大次数。output返回优化信息:output.iterations表示迭代次数;output.algorithm表示所采用的算法;outprt.funcCount表示函数评价次数。lambda返回x处的拉格朗日乘子。它有以下属性:lambda.lower-lambda的下界;lambda.upper-lambda的上界;lambda.ineqlin-lambda的线性不等式;lambda.eqlin-lambda的线性等式。三.举例例1:求解线性规划问题:maxf=2x1+5x2s.t先将目标函数转化成最小值问题:min(-f)=-2x1-5x2程序:f=[-2-5];A=[10;01;12];b=[4;3;8];[x,fval]=linprog(f,A,b)f=fval*(-1)结果:x=23fval=-19.0000maxf=19例2:minf=5x1-x2+2x3+3x4-8x5s.t-2x1+x2-x3+x4-3x5≤62x1+x2-x3+4x4+x5≤70≤xj≤15j=1,2,3,4,5程序:f=[5-123-8];A=[-21-11-3;21-141];b=[6;7];lb=[00000];ub=[1515151515];[x,fval]=linprog(f,A,b,[],[],lb,ub)结果:x=0.00000.00008.00000.000015.0000minf=-104例3:求解线性规划问题:minf=5x1+x2+2x3+3x4+x5s.t-2x1+x2-x3+x4-3x5≤12x1+3x2-x3+2x4+x5≤-20≤xj≤1j=1,2,3,4,5程序:f=[51231];A=[-21-11-3;23-121];b=[1;-2];lb=[00000];ub=[11111];[x,fval,exitflag,output,lambda]=linprog(f,A,b,[],[],lb,ub)运行结果:Exiting:Oneormoreoftheresiduals,dualitygap,ortotalrelativeerrorhasgrown100000timesgreaterthanitsminimumvaluesofar:theprimalappearstobeinfeasible(andthedualunbounded).(ThedualresidualTolFun=1.00e-008.)x=0.00000.00001.19870.00000.0000fval=2.3975exitflag=-1output=iterations:7cgiterations:0algorithm:'lipsol'lambda=ineqlin:[2x1double]eqlin:[0x1double]upper:[5x1double]lower:[5x1double]显示的信息表明该问题无可行解。所给出的是对约束破坏最小的解。例4:求解实例1的生产计划问题建立数学模型:设x1、x2分别为生产甲、乙产品的件数。f为该厂所获总润。maxf=70x1+120x2s.t9x1+4x2≤36004x1+5x2≤20003x1+10x2≤3000x1,x2≥0将其转换为标准形式:minf=-70x1-120x2s.t9x1+4x2≤36004x1+5x2≤20003x1+10x2≤3000x1,x2≥0程序:f=[-70-120];A=[94;45;310];b=[3600;2000;3000];lb=[00];ub=[];[x,fval,exitflag]=linprog(f,A,b,[],[],lb,ub)maxf=-fval结果:x=200.0000240.0000fval=-4.2800e+004exitflag=1maxf=4.2800e+004例5:求解实例2建立数学模型:maxf=0.15x1+0.1x2+0.08x3+0.12x4s.tx1-x2-x3-x4≤0x2+x3-x4≥0x1+x2+x3+x4=1xj≥0j=1,2,3,4将其转换为标准形式:minz=-0.15x1-0.1x2-0.08x3-0.12x4s.tx1-x2-x3-x4≤0-x2-x3+x4≤0x1+x2+x3+x4=1xj≥0j=1,2,3,4程序:f=[-0.15;-0.1;-0.08;-0.12];A=[1-1-1-10-1-11];b=[0;0];Aeq=[1111];beq=[1];lb=zeros(4,1);[x,fval,exitflag]=linprog(f,A,b,Aeq,beq,lb)f=-fval结果:x=0.50000.25000.00000.2500fval=-0.1300exitflag=1f=0.1300即4个项目的投资百分数分别为50%,25%,0,25%时可使该公司获得最大的收益,其最大收益可到达13%。过程正常收敛。例6:求解实例3建立数学模型:设aij为由工厂i运到市场j的费用,xij是由工厂i运到市场j的箱数。bi是工厂i的产量,dj是市场j的需求量。b=(604050)Td=(20353334)Ts.txij≥0程序:A=[2132;1321;3411];f=A(:);B=[100100100100010010010010001001001001];D=[111000000000000111000000000000111000000000000111];b=[60;40;50];d=[20;35;33;34];lb=zeros(12,1);[x,fval,exitflag]=linprog(f,B,b,D,d,lb)结果:x=0.000020.00000.000035.00000.00000.00000.00000.000033.00000.000018.468215.5318fval=122.0000exitflag=1即运输方案为:甲市场的货由B厂送20箱;乙市场的货由A厂送35箱;丙商场的货由C厂送33箱;丁市场的货由B厂送18箱,再由C厂送16箱。最低总运费为:122元。§2非线性规划模型一.非线性规划课题实例1表面积为36平方米的最大长方体体积。建立数学模型:设x、y、z分别为长方体的三个棱长,f为长方体体积。maxf=xy(36-2xy)/2(x+y)实例2投资决策问题某公司准备用5000万元用于A、B两个项目的投资,设x1、x2分别表示配给项目A、B的投资。预计项目A、B的年收益分别为20%和16%。同时,投资后总的风险损失将随着总投资和单位投资的增加而增加,已知总的风险损失为2x12+x22+(x1+x2)2.问应如何分配资金,才能使期望的收益最大,同时使风险损失为最小。建立数学模型:maxf=20x1+16x2-λ[2x12+x22+(x1+x2)2]s.tx1+x2≤5000x1≥0,x2≥0目标函数中的λ≥0是权重系数。由以上实例去掉实际背景,其目标函数与约束条件至少有一处是非线性的,称其为非线性问题。非线性规划问题可分为无约束问题和有约束问题。实例1为无约束问题,实例2为有约束问题。二.无约束非线性规划问题:求解无约束最优化问题的方法主要有两类:直接搜索法(Searchmethod)和梯度法(Gradientmethod).1.fminunc函数调用格式:x=fminunc(fun,x0)x=fminunc(fun,x0,options)x=fminunc(fun,x0,options,P1,P2)[x,fval]=fminunc(…)[
本文标题:MATLAB优化应用非线性规划
链接地址:https://www.777doc.com/doc-5128476 .html