
最优化方法及其Matlab程序设计.docx
9页最优化方法及其Matlab程序设计1•最优化方法概述在生活和工作中,人们对于同一个问题往往会提出多个解决方案,并通过各方面的论证, 从中提取最佳方案最优化方法就是专门研究如何从多个方案中科学合理地提取出最佳方案 的科学最优化是每个人,每个单位所希望实现的事情对于产品设计者来说,是考虑如何 用最少的材料,最大的性能价格比,设计出满足市场需要的产品对于企业的管理者来说, 则是如何合理、充分使用现有的设备,减少库存,降低能耗,降低成本,以实现企业的最大 利润由于优化问题无所不在,目前最优化方法的应用和研究已经深入到了生产和科研的各 个领域,如土木工程、机械工程、化学工程、运输调度、生产控制、经济规划、经济管理等, 并取得了显著的经济效益和社会效益用最优化方法解决最优化问题的技术称为最优化技术,它包含两个方面的内容:1) 建立数学模型即用数学语言来描述最优化问题模型中的数学关系式反映了最优化问题所要达到的目 标和各种约束条件2) 数学求解数学模型建好以后,选择合理的最优化算法进行求解最优化方法的发展很快,现在已经包含有多个分支,如线性规划、整数规划、非线性规 划、动态规划、多目标规划等2•最优化方法(算法)浅析最优化方法求解很大程度上依赖于最优化算法的选择。
这里,对最优化算法做一个简单 的分类,并对一些比较常用的典型算法进行解析,旨在加深对一些最优化算法的理解最优化算法的分类方法很多,根据不同的分类依据可以得到不同的结果,这里根据优化 算法对计算机技术的依赖程度,可以将最优化算法进行一个系统分类:线性规划与整数规划; 非线性规划;智能优化方法;变分法与动态规划线性规划与整数规划线性规划在工业、农业、商业、交通运输、军事和科研的各个研究领域有广泛应用例 如,在资源有限的情况下,如何合理使用人力、物力和资金等资源,以获取最大效益;如何 组织生产、合理安排工艺流程或调制产品成分等,使所消耗的资源(人力、设备台时、资金、 原始材料等)为最少等线性规划方法有单纯形方法、大M法、两阶段法等整数规划有割平面法、分枝定界法等非线性规划20世纪中期,随着计算机技术的发展,出现了许多有效的算法一一如一些非线性规划 算法非线性规划广泛用于机械设计、工程管理、经济生产、科学研究和军事等方面非线性规划问题包括:(1) 一维最优化方法,如黄金分割法、二次插值法、切线法以及格点法等2) 无约束多维非线性规划方法,如坐标轮换法、最速下降法、牛顿法、变尺度法、 共轭方向法、单纯形法、最小二乘法等。
3) 约束问题的非线性规划方法,包括间接法和直接法4) 其他方法,包括多目标优化、数学模型的尺度变换、灵敏度分析及可变容差法 智能优化方法智能化优化算法有别于一般的按照图灵机进行精确计算的程序,是对计算机模型的一种 新的诠释,它模拟自然过程、生物或人类思维等来求解最优化问题常用的智能优化方法包括启发式搜索算法、Hopfield神经网络优化算法、模拟退火法 与均场退火法、遗传算法等变分法与动态规划除了上述提及的中所述的最优化算法,最优化方法还包括变分法和动态规划方法,他们 广泛用于控制系统、燃料控制系统、耗能控制系统、线性调节器等最优综合和设计场合这 类算法涉及变分法、最大(小)值原理、动态规划3.最优化问题的Matlab程序实现当使用MatLab进行最优化时,可以通过两种方式来实现最优化,一是可以利用相应的 算法编写Matlab程序,进行最优化求解;二是借助于MatLab的工具箱中的最优化函数进行 最优化求解MatLab工具箱中的最优化函数包括:函 数描 述fgoalattain多目标达到问题fminbnd有边界的标量非线性最小化fmincon有约束的非线性最小化fminimax最大最小化fminsearch,fminunc无约束非线性最小化fseminf半无限问题linprog线性课题quadprog二次课题这里,以黄金分割法为例,采用两种方式进行Matlab设计。
利用黄金分割法进行最优化求解用黄金分割法(法)程序求函数 £ ) 二x2 - sin(x)在[0,1]上的极小点,取容许误差 8 二 10 -4,8 二 10 -5求解步骤如下:(1)用法求单变量函数0在单峰区间[a,b]上的近似极小点;M文件代码如下:function[s,phis,k,G・E] = golds(phi,a,b,delta,epsilon)%输入:phi是目标函数,a, b是搜索区间的两个端点delta,epsilon分别是自变量和函数值的容许误差%输出:s,phis分别是近似极小点和极小值,G是nx4矩阵; % 其第k行分别是a,p,q,b的第k次迭代值[ak,pk,qk,bk] % E=[ds,dphi],分别是s和phis的误差限.t=(sqrt (5)-1)/2; h =b-a;phia=feval(phi,a);phib=feval(phi,b);p=a+(1-t)*h;q=a+t*h; phip=feval(phi,p);phiq=feval(phi,q);k=1 ; G(k, :)=[a,p,q,b]; while(abs(phib-phia)>epsilon)l(h>delta) if(phib 其求解过程为,在Matlab的命令行中输入命令:(1) 作出[0,2]区间上的humps函数曲线,图形如下:(2)(3) 对(1)所得曲线进行分析,可以看出,曲线在x-附近出现了一个最大值,在 x-附近出现了一个最小值.我们可以利用下面下面的命令代码估计x-附近的极 小值:H_humps=@humps;[xmin,value]=fminbnd(H_humps,,其结果截图为:ijnin =D. 3370value =11,2528即humps函数在x=()附近存在一个极小值:中几个最优化函数的上机实验线性规划问题求解一linprog函数(1) f, x, b, beq, lb和ub为向量,A和Aeq为矩阵2) 语法:• 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,xO)• x = linprog(f,A,b,Aeq,beq,lb,ub,xO,options)• [x,fval] = linprog(...)• [x,fval,exitflag] = linprog(...)• [x,fval,exitflag,output] = linprog(...)• [x,fval,exitflag,output,lambda] = linprog(...)(3) 描述:• x = linprog(f,A,b)求解问题 min f*x,约束条件为 A*x <= b。 • x = linprog(f,A,b,Aeq,beq)求解上面的问题,但增加等式约束,即Aeq*x = beq若没有不等式存在,则令 A=[]、b=[]• x = linprog(f,A,b,Aeq,beq,lb,ub)定义设计变量x的下界lb和上界ub,使得x始终在该 范围内若没有等式约束,令Aeq=[]、beq=[]• x = linprog(f,A,b,Aeq,beq,lb,ub,xO)设置初值为xO该选项只适用于中型问题,缺省时 大型算法将忽略初值• x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options)用 options 指定的优化参数进行最小化• [x,fval] = linprog(...)返回解x处的目标函数值fval• [x,lambda,exitflag] = linprog(...)返回 exitflag 值,描述函数计算的退出条件• [x,lambda,exitflag,output] = linprog(...)返回包含优化信息的输出变量output• [x,fval,exitflag,output,lambda] = linprog(...)将解 x 处的拉格朗日乘子返回到 lambda 参 数中。 例:生产决策问题 某厂生产甲乙两种产品,已知制成一吨产品甲需用资源A 3吨, 资源B 4m3;制成一吨产品乙需用资源A 2吨,资源B 6m3,资源C 7个单位若一吨产品 甲和乙的经济价值分别为7万元和5万元,三种资源的限制量分别为90吨、200m3和210 个单位,试决定应生产这两种产品各多少吨才能使创造的总经济价值最高?在Matlab中求解步骤:•首先输入下列系数:f = [-7;-5];A = [3 24 60 7];b = [90; 200; 210];lb = zeros(2,l);•然后调用linprog函数:[x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb)结果截图为:L4. ao口口24・ 0 000-2L8・ QDOOex it fl a. s =o'Jrt pot =a■七■ x*・七n 口: Ealioritlm.i x LaEce—scalti irrt pcintit e r at □. ana : □: J Opt imd r nt i on. t e rsiinat« d, J ccnst rvdoLal ioni 0Lan.bd>a.=inc- q.1 inidoubL^Je 41 m:[Cm LdaubLe]uppersdLdouble ]L owe- f iL2xld.oabL«s-J由上可知,生产甲种产品14 吨、乙种产品24 吨可使创建的总经济价值最高。 最高经济 价值为218万元exitflag=l表示过程正常收敛于解x处多目标规划 fgoalattain函数(1) x, weight, goal, b, beq, lb 和 ub 为向量,A 和 Aeq 为矩阵,c(x), ceq(x)和 F(x)为函数,返 回向量F(x), c(x)和ceq(x)可以是非线性函数2) 语法:• x = fgoalattain。












