最优化方法实验指导书(2011,16课时)
最优化方法实验报告

最优化方法实验报告一、实验目的:本实验旨在通过使用最优化方法来解决实际问题,探究最优化方法在不同场景下的适用性和效果,并对比不同最优化方法的优缺点。
二、实验原理:三、实验过程:1.准备工作确定要解决的问题,并确定问题的数学模型。
例如,可以选择一个具有约束条件的优化问题,如线性规划问题。
2.实验步骤(1)选择最优化方法根据实际问题的特点选择适合的最优化方法。
例如,如果问题具有多个局部最优解,可以选择遗传算法来避免陷入局部最优。
(2)实现算法根据选择的最优化方法,编写相应的算法实现代码。
可以使用编程语言如Python来实现算法。
(3)进行实验使用实际数据或人工生成的数据来测试算法的效果。
根据实验结果评估算法的性能,并对比不同算法的效果。
3.结果分析通过对比不同算法的效果,分析各种方法的优缺点,评估其适用性和可靠性。
四、实验结果与讨论:在本次实验中,我们选择了一个线性规划问题作为例子,使用了遗传算法和优化算法来求解。
具体问题为:有两种产品A和B,产品A的利润为5元,产品B的利润为10元。
每天可以生产的产品总数为50。
产品A的生产量不超过30,产品B的生产量不超过20。
求解在满足以上约束条件下,如何安排生产计划使得总利润最大。
我们首先使用了优化算法来求解。
通过编写代码,使用优化算法来最大化总利润。
结果发现,在满足约束条件的情况下,总利润最大为350元。
然后,我们使用了遗传算法来求解。
遗传算法是一种模仿生物进化过程的算法,通过选择、交叉和变异等操作来优化解。
在实验中,我们设置了一组初始解作为遗传算法的种群,并通过不断迭代优化解。
结果发现,在相同的迭代次数下,遗传算法得到的结果比优化算法更优,总利润最大为400元。
通过对比两种算法的结果,我们发现遗传算法相对于优化算法在该问题上具有更好的性能。
遗传算法通过不断迭代寻找更好的解,能够更好地避免陷入局部最优。
五、实验结论:本实验通过使用最优化方法来解决一个实际问题,对比了优化算法和遗传算法的效果。
最优化原理与方法实验教学大纲.doc

最优化原理与方法实验教学大纲课程中文名称:最优化原理与方法课程英文名称:Principles and Methods of Optimization课程类别:数学 课程编号:For personal use only in study and research; not for commercialuse课程归属单位:理学院制定时间: 2006年7月28日一、 课程的性质、任务最优化原理与方法是信息与计算科学、数学与应用数学的重要专业基础课。
它主要在工程优化问题为背景下, 借助数学规划的理论,介绍若干优化方法,并借助Matlab 工具箱,介绍这些方法实施的具体操作流程。
如何使学生掌握所学优化方法,并将其在实践问题中获得检验,以及如何使得理论、方法、求解问题等环节有机结合是该门课程的宗旨;因此该课程必须经过实践环节的训练,要求学生在实验中,掌握数学规划方法的实际使用。
本实验课的总学时为18学时。
一、 实践教学内容与要求实验一:优化工具箱(2学时)1、实验目的:要求学生了解Matlab 中Optimization Toolbox 所包括优化方法、使用范围;熟悉和理解该工具箱的英文表述。
2、实验内容:Matlab 优化工具箱介绍1. 熟悉Matlab 优化工具箱求解优化问题的类型2. 了解help 工具箱中求解优化问题的各种语法功能,并理解各种语法下的例子,具体如下:(1)线性规划X f T bAX ≤min 语法:),,(b A f lp X =(2)二次规划X C HX X T T b AX +≤21min语法:),,,(b A C H qp X =(3)非负最小二乘法 20||||min b AX X -≥语法:),(b A nnls X =(4)无约束一元函数极小问题)(min x f x语法:),'min('x f f x =(5)无约束非线性规划)(min x x f语法:),'('min X f u f X =(6)约束非线性规划)(min)(x f X G ≤ 语法:),'('X fg constr X =(7)目标规划 goal WX F X ≤-γγ)(min语法:),,,'('W goal X f attgoalX = (8)最小最大问题)}({max m in 0)(X F X G ≤语法:),'max('min X fg i X =(9)非线性最小二乘法∑))(*)((min X F X F X语法:),'('X f leastsq X =(10)解非线性方程0)(=X F语法:),'('X f fsolvex X =(11)半无穷下的非线性规划WW X t s X f X ∀≤Φ,0),(..)(min 语法:),,'('min X n ft f se X =实验二:线性规划(2学时)1、实验目的:要求学生能用Optimization Toolbox 求解线性规划问题,并力求了解高维线性规划问题的求解方法。
201411225-最优化方法-实验教学大纲

最优化方法实验教学大纲
一、实验基本信息
课程编号:201411225
中文名称:最优化方法
英文名称:Optimization Method
课程性质:专业选修课程
面向专业:数学与应用数学
开设学期:6
课程总学时:36
实验学时:8
是否独立设课:否
二、实验目的和任务
培养学生动手实践能力、能将学过的数学方法用计算机程序实现,加强理论与实践结合能力。
加深对所学知识掌握。
任务主要将无约束非线性极小的一元与多元方法通过实验实现并在课上考核,通过计算结果及函数图像显示。
三、实验教学基本要求
具备应用matlab解决最优化方法中一元最佳搜索问题的能力,能够解决多元无约束极小matlab实现能力,具备使用matlab解决工程中包含最优化方法复杂问题的能力。
四、实验项目基本情况
1
五、实验教材(指导书)或网络资源
[1]王漠然. Matlab与科学计算[M]. 北京:电子工业出版社 2002
[2]施光燕,董加礼.最优化方法.高等教育出版社,2008
六、考核方式
课上考核,课下大作业
撰写人签字:院(系)教学院长(主任)
1。
最优化方法实验

《最优化方法》实验报告实验序号:01 实验项目名称:线性规划及MATLAB应用《最优化方法》实验报告实验序号:02 实验项目名称:0.618黄金分割法的应用结果分析:根据以上结果可知,在区间[0,3]上,函数g(x)=x^3-2*x+1的最小值点在x=0.9271处,此时最小值为0。
第二题:P50 例题3.1程序:function [t,f]=golden3(a,b) %黄金分割函数的m文件t2=a+0.382*(b-a);f2=2*(t2)^2-(t2)-1;t1=a+0.618*(b-a); %按照黄金分割点赋值,更准确可直接算f1=2*(t1)^2-(t1)-1;while abs(t1-t2)>0.16; %判定是否满足精度if f1<f2a=t2;t2=t1;f2=f1;t1=a+0.618*(b-a);f1=2*(t1)^2-(t1)-1;elseb=t1;t1=t2;f1=f2;t2=a+0.382*(b-a);f2=2*(t2)^2-(t2)-1;endendt=(t1+t2)/2; %满足条件取区间中间值输出第四题:P64 T3程序:function [t,d]=newtow2(t0)t0=2.5;t=t0-(4*(t0)^3-12*(t0)^2-12*(t0)-16)/(12*(t0)^2-24*(t0)-12);k=1;T(1)=t;while abs(t-t0)>0.000005t0=t;t=t0-(4*(t0)^3-12*(t0)^2-12*(t0)-16)/(12*(t0)^2-24*(t0)-12); k=k+1;T(k)=t;endt1=t0;d=(t1)^4-4*(t1)^3-6*(t1)^2-16*(t1)+4;kTend运行结果:当x(0)=2.5当x(0)=3四.实验小结:1.通过这次实验,加深了对0.618法的理解。
2.在学习0.618法的过程中,又巩固了倒数、求解函数值等相关知识。
最优化方法综合实验大纲

人力计划问题、炼油厂的优化问题。
请选着其中任一题做!最优化原理与方法综合实验要求(成绩占实验总成绩的20%)一、实验目的综合应用所学的最优化方法解决两个实际的优化问题:人力计划问题、炼油厂的优化问题。
通过实验,使学生掌握如何利用最优化方法处理日常工作中出现的优化问题,如人力资源分配及工程优化设计等问题。
熟练地掌握一些常用的、基本的优化方法。
学生在计算机上求解实际优化问题,并写出综合实验报告分析材料。
二、实验内容人力计划问题、炼油厂的优化问题。
利用所学的程序设计、算法设计、数学建模和最优化方法解决人力计划、炼油厂的优化设计,并用C/C++实现程序设计。
在项目的实施过程中,要有需求分析、数据分析、数据结构设计和算法设计程。
(1)人力资源计划人力资源计划是公司用人的关键方案,对公司的生产效率有直接的影响,现根据课本P136的案例5对人力资源计划介绍的内容,设计人力资源优化模型,及利用已经学过的组合优化方法确定最优的人力资源计划方案。
通过对问题进行全面分析,设计合理的数学模型,实现相关算法设计,最后编程实现。
✧考虑的因素:招聘工人,培训工人,辞退多余人员及用短工;✧根据考虑的因素,设计数学模型,分析模型的合理性及参数对模型的影响(灵敏度分析);✧分析模型中变量的相互影响关系;✧选择合适的优化方法进行求解;✧依据实验结果,解释人力计划的内涵;实施方案的步骤如下:第一步:分析问题的实际含义,明确人力资源计划中的变量;第二步:明确公司考虑人力需求的4种途径中每一途径的具体规则,确定变量之间的制约关系;第三步:确定问题的目标及约束;第四步:建立人力资源计划的数学模型;第五步:利用分支定界法寻找最优方案;第六步:分析每一年的不熟练工、半熟练工和熟练工的人员数的变化对优化方案的影响;第七步:将人力资源问题描述为多目标优化问题,并求其最优解,分析所获得两种模型的最优解的区别和联系;第八步:推广所获得的模型,并分析分支定界法解决优化问题存在的优点和缺点。
最优化方法课程实验报告

项目一 一维搜索算法(一)[实验目的]编写加步探索法、对分法、Newton 法的程序。
[实验准备]1.掌握一维收搜索中搜索区间的加步探索法的思想及迭代步骤; 2.掌握对分法的思想及迭代步骤; 3.掌握Newton 法的思想及迭代步骤。
[实验内容及步骤] 编程解决以下问题:1.用加步探索法确定一维最优化问题的搜索区间,要求选取.加步探索法算法的计算步骤: (1)选取初始点,计算.给出初始步长,加步系数,令。
(2) 比较目标函数值.令k k k h t t +=+1,计算 )(11++=k k t ϕϕ,若k k ϕϕ<+1,转(3),否则转(4)。
(3) 加大探索步长.令,同时,令,转(2)。
(4) 反向探索.若,转换探索方向,令,转(2)。
否则,停止迭代,令。
加步探索法算法的计算框图12)(min 30+-=≥t t t t ϕ2,1,000===αh t ])0[)(0[max 00t t t ,或,∈⊂∞+∈)(00t ϕϕ=0>h 1α>0=k k k h h α=+1,k t t =,1+=k k t t 1k k =+0=k ,k k h h -=1+=k t t 11min{}max{}k k a t t b t t ++==,,,程序清单加步探索法算法程序见附录1实验结果运行结果为:2.用对分法求解,已知初始单谷区间,要求按精度,分别计算.对分法迭代的计算步骤:(1)确定初始搜索区间],[b a ,要求。
(2) 计算],[b a 的中点)(21b ac +=. (3) 若0)(<'c ϕ,则c a = ,转(4);若0)(='c ϕ,则c t =*,转(5);若0)(>'c ϕ,则c b = ,转(4).)2()(min +=t t t ϕ]5,3[],[-=b a 3.0=ε001.0=ε'()0'()0a b ϕϕ<>,(4) 若ε<-||b a ,则)(21*b a t +=,转(5);否则转(2). (5) 打印*t ,结束对分法的计算框图程序清单对分法程序见附录2实验结果运行结果为:3.用Newton 法求解,已知初始单谷区间,要求精度.Newton 法的计算步骤12)(min 3+-=t t t ϕ]1,0[],[=b a 01.0=ε(1) 确定初始搜索区间],[b a ,要求 (2) 选定0t(3) 计算(4) 若 ε≥-||0t t ,则t t =0,转(3);否则转(5). (5) 打印 ,结束.Newton 法的计算框图程序清单Newton 法程序见附录3实验结果运行结果为:'()0'()0a b ϕϕ<>,000'()/"()t t t t ϕϕ=-()t t ϕ,项目二 一维搜索算法(二)[实验目的]编写黄金分割法、抛物线插值法的程序。
最优化方法实验指导书
最优化方法实验指导书《最优化方法》课程设计指导书一、课程设计目的与要求1、提高分析问题、解决问题的能力,进一步巩固最优化方法的基本原理与方法。
2、熟悉应用MATLAB进行优化方法的设计。
二、课程设计要求1、要充分认识课程设计对培养自己的重要性,认真做好设计前的各项准备工作。
尤其是对编程软件的使用有基本的认识。
2、既要虚心接受老师的指导,又要充分发挥主观能动性。
结合课题,独立思考,努力钻研,勤于实践,勇于创新。
3、独立按时完成规定的工作任务,不得弄虚作假,不准抄袭他人内容,否则成绩以不及格计。
4、在设计过程中,要严格要求自己,树立严肃、严密、严谨的科学态度,必须按时、按质、按量完成课程设计。
三、内容及学时分配本设计包括四个小题目,全部设计时间一周,共16学时。
(一)单纯性算法的基本原理及思路(4学时)设计目的和要求:通过本次设计应使学生掌握如何使用MATLAB 软件进行单纯性算法求解线性规划,并学会对具体问题进行分析。
设计的内容:1、单纯性算法的基本思路2、算法流程图3、用matlab编写源程序4、单纯性算法应用举例教学建议:初次使用MATLAB进行优化问题的实验,本次设计在全面了解软件系统基础之上,要让学生学习和熟悉一些MATLAB的基础用途,重点掌握优化工具箱函数选用的内容。
重点和难点:优化工具箱函数选用。
(二)黄金分割法的MATLAB实现(4学时)设计目的和要求:通过本次设计应使学生掌握如何使用MATLAB 软件进行一维搜索,并学会对具体问题进行分析。
设计内容:1、0.618法的算法思路2、0.618法的MATLAB实现3、0.618法应用举例教学建议:本次实验是学生初次使用MATLAB进行优化问题的实验,本次实验就是要通过对一些具体问题的分析学会软件的操作并加深对理论知识的理解。
重点和难点:具体问题的步长因子的确定,理解、掌握精度与效率的关系。
(三)最速下降法的MATLAB实现(4学时)设计目的和要求:通过本次实验使学生进一步熟悉掌握使用MATLAB软件,并能利用该软件进行无约束最优化方法的计算。
最优化方法-课程设计报告-运用DFP算法解决无约束最优化问题
北方民族大学课程设计报告系(部、中心)信息与计算科学学院专业信息与计算科学班级 09信计(3)班小组成员课程名称最优化方法设计题目名称运用DFP算法解决无约束最优化问题提交时间2012年6月26日成绩指导教师变尺度法是在牛顿法的基础上发展起来的,它和梯度法亦有密切关系.变尺度法避免了Newton法在每次迭代都要计算目标函数的Hesse矩阵和它的逆矩阵而导致随问题的维数增加计算量迅速增加.DFP算法是变尺度法中一个非常好的算法.DFP算法首先是1959年由Davidon提出的后经Fletcher和Powell改进,故名之为DFP算法,它也是求解无约束优化问题最有效的算法之一.DFP变尺度法综合了梯度法、牛顿法的优点而又避弃它们各自的缺点,只需计算一阶偏导数,无需计算二阶偏导数及其逆矩阵,对目标函数的初始点选择均无严格要求,收敛速度快.本文主要分析DFP算法原理及运用Matalb软件编程解决实际数学问题.最后运算结果符合计算精度且只用了一次迭代,由此可见收敛速度快.关键词:Newton法变尺度法Hesse矩阵Matlab软件一、课程设计目的 (4)二、课程设计要求 (4)三、课程设计原理 (4)(1)变尺度法基本原理 (4)(2)DFP算法 (5)四、实验内容 (6)五、数学建模及求解 (7)1.DFP算法迭代步骤 (7)2.DFP算法的流程图 (7)六、程序实现 (8)七、数值实验的结果与分析 (11)八、实验总结与体会 (12)1.DFP公式恒有确切解 (12)2.DFP算法的稳定性 (12)参考文献 (13)一、 课程设计目的:1、掌握无约束优化问题DFP 算法的数值求解思路;2、训练分析DFP 算法的运算存储量及收敛速度的能力,了解算法的优缺点;3、通过运用DFP 算法求解实际无约束优化问题的意义;4、熟悉应用Matlab 求解无约束最优化问题的编程方法.二、 课程设计要求熟悉了解DFP 算法原理及求解无约束优化问题的步骤,并运用Matlab 件编程实现求解问题.三、 课程设计原理(1)变尺度法基本原理在Newton 法中,基本迭代公式k k k k P t X X +=+1,其中,1=k t ,)()]([12k k k X f X f P ∇∇-=-,于是有2,1,0,11=-=-+k g G X X k k k k (1)其中0X 是初始点,k g 和k G 分别是目标函数)(X f 在点k X 的梯度和Hesse 矩阵.为了消除这个迭代公式中的Hesse 逆矩阵1-k G ,可用某种近似矩阵)(k k X H H =来替换它,即构造一个矩阵序列}{k H 去逼近Hesse 逆矩阵序列}{1-k G此时式(1)变为k k k k g H X X -=+1事实上,式中k k k g H P -=无非是确定了第k 次迭代的搜索方向,为了取得更大的灵活性,我们考虑更一般的的迭代公式k k k k k g H t X X -=+1 (2)其中步长因子k t 通过从k X 出发沿k k k g H P -=作直线搜索来确定.式(2)是代表很长的一类迭代公式.例如,当I H k ≡(单位矩阵)时,它变为最速下降法的迭代公式.为使kH确实与1-k G 近似并且有容易计算的特点,必须对k H 附加某些条件:第一,为保证迭代公式具有下降性质,要求}{k H 中的每一个矩阵都是对称正定的.理由是,为使搜索方向k k k g H P -=是下降方向,只要0<-=-k k T k k T k g H g P g成立即可,即0>k k T k g H g成立.当k H 对称正定时,此公式必然成立,从而保证式(2)具有下降性质.第二,要求k H 之间的迭代具有简单形式.显然,k k k E H H +=+1 (3)是最简单的形式了.其中k E 称为校正矩阵,式(3)称为校正公式.第三,必须满足拟Newton 条件.即:)()(111k k k k k X X g g H -=-+++ (4)为了书写方便也记k k k g g y -=+1k k k X X S -=+1于是拟Newton 条件可写为k k k S y H =+1 (5)有式(3)和(5)知,k E 必须满足k k k k S y E H =+)(或k k k k k y H S y E == (6)(2)DFP 算法DFP 校正是第一个拟牛顿校正是1959年由Davidon 提出的后经Fletcher 和Powell 改进故名之为DFP 算法它也是求解无约束优化问题最有效的算法之一.DFP 算法基本原理考虑如下形式的校正公式T k k k T k k k k k V V U U H H βα++=+1 (7)其中k k V U ,是特定n 维向量,k k βα,是待定常数.这时,校正矩阵是T k k k T k k k k V V U U E βα+=.现在来确定k E .根据拟Newton 条件,k E 必须满足(6),于是有k k k k T k k k T k k k y H S y V V U U -=+)(βα或k k k k T k k k k T k k k y H S y V V y U U -=+βα.满足这个方程的待定向量k U 和k V 有无穷多种取法,下面是其中的一种:k k T k k k S y U U =α,k k k T k k k y H y V V -=β注意到k T ky U 和k T k y V 都是数量,不妨取 k k S U =,k k k y H V =,同时定出k T k k y S 1=α,kk T k k y H y 1-=β. 将这两式代回(5.32)得 kk T k k T k k k k T k T k k k k y H y H y y H y S S S H H -+=+1. (8) 这就是DFP 校正公式.四、 实验内容采用课本P102页例5.3和P107页例5.4进行数值计算;1,求22212125),(m in x x x x f +=,取初始点T X ]2,2[0=.2,求2221214),(m in x x x x f +=,取初始点T X ]1,1[0=.五、 数学建模及求解1.DFP 算法迭代步骤在拟Newton 算法中,只要把第五步改为计算式(8)而其他不变,该算法就是DFP 算法了.但是由于计算中舍去误差的影响,特别是直线搜索不精确的影响,可能要破坏迭代矩阵k H 的正定性,从而导致算法失效.为保证k H 的正定性,采取以下重置措施:迭代1+n 次后,重置初始点和迭代矩阵,即I H X X n ==+010,以后重新迭代.已知目标函数)(X f 及其梯度)(X g ,问题的维数n ,终止限ε.(1) 选定初始点.计算)(00X f f =,)(00X g g =.(2) 置I H =0,00g P -=,0=k .(3) 作直线搜索),(1k k k P X ls X =+;计算)(11++=k k X f f ,)(11++=k k X g g .(4) 判别终止准则是否满足:若满足,则打印),(11++k k f X ,结束;否转(5).(5) 若n k =,则置10+=k X X ,10+=k f f ,10+=k g g ,转(2);否则转(6).(6) 计算k k k X X S -=+1,k k k g g y -=+1,kk T k k T k k k k T k T k k k k y H y H y y H y S S S H H -+=+1, 111+++-=k k k g H P ,置1+=k k ,转(3).2.DFP 算法的流程图六、程序实现七、 数值实验的结果与分析由上述运行结果可得出:第一题迭代一次就解得:]0664.0,2220.0[*0150.1---=e X 与精确解]0,0[=X 误差远小于610-=ε,符合要求.第二题同样迭代一次就解得:]0555.0,1110.0[*0150.1--=e X 与精确解]0,0[=X误差远小于610-=ε,符合要求.且所计算的k H 矩阵和梯度与精确计算所得一样,这也表明DFP 算法的matalb 程序完全符合要求.八、 实验总结与体会DFP 变尺度法综合了梯度法、牛顿法的优点而又避弃它们各自的缺点,只需计算一阶偏导数,无需计算二阶偏导数及其逆矩阵,对目标函数的初始点选择均无严格要求,收敛速度快,这些良好的性能已作阐述。
最优化方法实验教学大纲
最优化方法实验教学大纲
一、实验目的
1.了解最优化方法的基本概念;
2.掌握最优化方法的基本思想;
3.指导实践中的最优化问题分析及求解。
二、实验内容
1.最优化方法的基本思想;
2.初等数学中的最优化方法;
3.动态规划算法及应用;
4.模拟退火算法。
三、实验要求
1.参考书上的有关最优化理论;
2.掌握动态规划算法及其应用;
3.熟悉模拟退火算法的定义及实际应用;
4.完成实验报告。
四、实验原理
1.最优化原理:最优化问题是求解最大或最小目标函数值的过程,确定它的过程为寻优问题,称作最优化问题。
2.模拟退火原理:模拟退火是一种全局方法,它与其他类型不同的是,模拟退火采用“模拟热物理过程”的技术来求解最优问题。
3.初等数学中的最优化原理:利用数学公式确定满足条件的最优解,
其中可能包括一元函数极值的寻优、线性规划问题的求解、整数规划的分
析等内容;
4.动态规划的原理:动态规划是一种算法,它可以用于求解求最优值
的过程,采用动态规划解决问题的基本步骤是:对有关解的分析、动态规
划方程的求解、解的回溯及结果的应用。
五、实验任务
1.了解最优化方法的定义及其基本思想;
2.掌握初等数学中的最优化方法。
最优化方法第1章第1节1
2021/5/17
最优化方法
28
1.1 最优化问题简介
17、凸规划
如果最优化问题的目标函数是凸的,可行 域是凸集,则问题的任何最优解(不一定 唯一)必是全局最优解,这样的最优化问 题称为凸规划。
2021/5/17
最优化方法
29
1.2 凸集和凸函数
• (一)凸集
1、凸集的定义
2021/5/17
最优化方法
8. 非线性最优化
模型(1.1.1)中的函数中有一个关于x是非线性的,就称为非线性最优 化问题。
9. 可行点(feasible point)
10.可行域(feasible region) 所有可行点的全体称为可行域。
2021/5/17
最优化方法
22
1.1 最优化问题简介
11、有效约束(active constraint)和无效约束(inactive constraint)
2
举例
例2:某单位拟建一排四间的车库,平面位置 如图所示.由于资金及材料的限制,围墙和隔 墙的总长度不能超过40m,为使车库面积最大, 应如何选择长、宽尺寸?
x1
x2
图1.1
2021/5/17
最优化方法
3
举例
解: 设四间车库长为 x 1 ,宽为 x 2 .由题意可知面积为
f(x1, x2)x1x2
转 换 成 h (x ) 0 的 不 等 式 约 束 形 式 。
2021/5/17
最优化方法
12
1.1 最优化问题简介
• 最优化问题的划分(根据不同的性质对最 优化有不同的划分):
离 散 最 优 化 ( 组 合 最 优 化 ) 整 数 规 划 , 资 源 配 置 等 最 优 化 连 续 最 优 化 光 滑 最 优 化 非 线 光 性 滑 规 非 最 划 线 优 ( 性 化 线 最 性 优 最 化 优 化 )
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《最优化方法》实验指导书(第一版)覃义编桂林电子科技大学数学与计算科学学院2011年9月20日实验一 线性规划算法及实现一、实验目的1. 掌握单纯形法在计算机上的实现,熟悉单纯形法的求解步骤。
2. 掌握目标函数系数和约束右端项在什么范围内变化时,最优基保持不变。
3. 读懂Lingo 灵敏度分析报告和求解报告。
4. 培养编程与上机调试能力。
二、实验课时:4个课时 三、实验准备1、熟悉线性规划的图解法及单纯形法解线性规划的原理;2、熟悉两阶段方法(两步法)及大M 方法的基本思想及求解步骤;3、了解灵敏度分析的内容,熟悉灵敏度分析步骤;4、熟悉lingo 软件的基本操作。
5、熟悉Matlab 软件的基本命令及其数值计算中的基本命令和函数。
四、实验内容 课堂实验演示(1)用lingo 软件求解线性规划 例1:m ax 23..43103512,0z x y s t x y x y x y =+⎧⎪+≤⎪⎨+≤⎪⎪≥⎩在模型窗口输入:model: max=2*x+3*y; 4*x+3*y<=10; 3*x+5*y<12;! the optimal value is :7.454545 ; End 如图所示:运行结果如下(点击 工具栏上的‘solve ’或点击菜单‘lingo ’下的‘solve ’即可):Global optimal solution found.Objective value: 7.454545(最优解函数值) Total solver iterations: 2(迭代次数)Variable (最优解) Value Reduced Cost X 1.272727 0.000000 Y 1.636364 0.000000Row Slack or Surplus Dual Price 1 7.454545 1.000000 2 0.000000 0.9090909E-01 3 0.000000 0.5454545例2:12123124125m ax 54..390280450z x x s t x x x x x x x x x x =+⎧⎪++=⎪⎪++=⎨⎪++=⎪⎪≥⎩在模型窗口输入:model:max=5*x1+4*x2; x1+3*x2+x3=90; 2*x1+x2+x4=80; x1+x2+x5=45; end运行(solve )结果如下:Global optimal solution found.Objective value: 215.0000 Total solver iterations: 2Variable Value Reduced Cost X1 35.00000 0.000000 X2 10.00000 0.000000 X3 25.00000 0.000000 X4 0.000000 1.000000 X5 0.000000 3.000000Row Slack or Surplus Dual Price 1 215.0000 1.000000 2 0.000000 0.000000 3 0.000000 1.000000 4 0.000000 3.000000例3 23123234235m in 2..223120z x x s t x x x x x x x x x x =-+⎧⎪-+=⎪⎪-+=⎨⎪-+=⎪⎪≥⎩在模型窗口输入:model:min=-x2+2*x3; x1-2*x2+x3=2; x2-3*x3+x4=1; x2-x3+x5=2; end运行结果如下:Global optimal solution found.Objective value: -1.500000 Total solver iterations: 2Variable Value Reduced CostX2 2.500000 0.000000 X3 0.5000000 0.000000 X1 6.500000 0.000000 X4 0.000000 0.5000000 X5 0.000000 0.5000000Row Slack or Surplus Dual Price 1 -1.500000 -1.000000 2 0.000000 0.000000 3 0.000000 0.5000000 4 0.000000 0.5000000例4:m in ..124x y z s t x y x z ⎧++⎪+≤⎨⎪+=⎩(此例不能用lingo 试用版求解) 在模型窗口输入:model :min =@abs (x)+@abs (y)+@abs (z); x+y<1; 2*x+z=4; @free (x); @free (y); @free (z); End求解器状态如下: 可看出是非线性模型!运行结果为:(2)用lingo软件进行灵敏度分析实例()m ax603020864842 1.5202 1.50.585,,0S x y zx y zx y zx y zyx y z=++⎧⎪++≤⎪⎪++≤⎨++≤⎪⎪≤⎪≥⎩例5在模型窗口输入:Lingo模型:model:max=60*x+30*y+20*z;8*x+6*y+z<48;4*x+2*y+1.5*z<20;2*x+1.5*y+0.5*z<8;y<5;end求解报告如下(Lingo→Solve):Global optimal solution found at iteration: 0Objective value: 280.0000Variable Value Reduced CostX 2.000000 0.000000Y 0.000000 5.000000Z 8.000000 0.000000Row Slack or Surplus Dual Price1 280.0000 1.0000002 24.00000 0.0000003 0.000000 10.000004 0.000000 10.000005 5.000000 0.000000分析Value,Reduced Cost,Slack or Surplus,Dual Price的意义1、由Value所在列可知x,y是基变量(因为取值不为0)2、Reduced Cost(i.e. test indicator)所在列的三个数值表示当变量有微小变化时,目标函数的变化率。
例如:第2个数5表示当变量y增加一个单位时,最优目标函数值减少的量。
例如:当y=1时,最优目标函数值为280-5=275。
可通过如下模型可检验:model:max=60*x+30*y+20*z;8*x+6*y+z<48;4*x+2*y+1.5*z<20;2*x+1.5*y+0.5*z<8;y<5;y=1;end注:基变量的Reduced Cost值为0,只有非基变量的Reduced Cost值才可能不为0;故由value,和Reduced Cost值分析可知y为非基变量;3、Slack or Surplus所在列的各数表示各行的松弛变量的取值。
目标函数行的Slack or Surplus值没啥意义,不用考虑。
可通过如下模型检验:model:max=60*x+30*y+20*z;8*x+6*y+z+s1=48;4*x+2*y+1.5*z+s2=20;2*x+1.5*y+0.5*z+s3=8;y+s4=5;end4、Dual Price(对偶价格,影子价格)所在列的各数表示约束右端项有微小变化时,最优目标函数值的变化率。
注,只有紧约束行的Dual Price 值不为0。
例如:要检验第二行约束,可通过如下模型:model:max=60*x+30*y+20*z; 8*x+6*y+z<48;4*x+2*y+1.5*z<21; 2*x+1.5*y+0.5*z<8; y<5; end灵敏度分析报告如下(打开Lingo →Range 即可,但必须先设置:Lingo →Options →General solver →Dual computations →Prices and Range)Ranges in which the basis is unchanged:Objective Coefficient RangesCurrent Allowable Allowable Variable Coefficient Increase Decrease X 60.00000 20.00000 4.000000 Y 30.00000 5.000000 INFINITY Z 20.00000 2.500000 5.000000Righthand Side RangesRow Current Allowable Allowable RHS Increase Decrease 2 48.00000 INFINITY 24.00000 3 20.00000 4.000000 4.000000 4 8.000000 2.000000 1.333333 5 5.000000 INFINITY 5.000000分析Objective Coefficient Ranges ,Righthand Side Ranges 的意义5、 Objective Coefficient Ranges 表示目标函数行各系数在某个范围内变化时,最优基保持不变。
以变量x 的系数为例:当x 的系数在()6046020-+内取值时,最优基保持不变。
此时,最优解不变,最优目标函数值变了。
例如:可通过如下模型检验:model:max=56.0001*x+30*y+20*z; 8*x+6*y+z<48;4*x+2*y+1.5*z<20; 2*x+1.5*y+0.5*z<8; y<5; end6、 Righthand Side Ranges 表示约束右端项各数在某个范围内变化时,最优基保持不变。
以第一个约束行为例:当右端项在()482448-+∞内取值时,最优基保持不变。
此时,最优解,目标函数的最优值变化了。
例如:可通过如下模型检验:model:max=60*x+30*y+20*z; 8*x+6*y+z<4800; 4*x+2*y+1.5*z<20; 2*x+1.5*y+0.5*z<8; y<5; end注:对求最小的问题,有类似的分析方法!(3)用Matlab 软件求解实例 常用命令如下; 1、 若模型为()m in ..Tf x c xs t A x b⎧=⎪⎨≤⎪⎩ 则可使用命令(,,)x linprog c A b =2、若模型为()m in ..T f x c x s t A x bA x b ⎧=⎪≤⎨⎪=⎩则可使用命令(,,,,)x linprog c A b A b =,或[],(,,,,)x y linprog c A b A b =,或其它,以下同3、若模型为()m in ..T f x c xs t A x bA x b LB x U B =≤=≤≤⎧⎪⎪⎨⎪⎪⎩则可使用命令(,,,,,,)x linprog c A b A b LB U B =若设置初始点0x 即可使用命令0(,,,,,)x linprog c A b A b x =Linprog 的使用说明如下:LINPROG Linear programming.X=LINPROG(f,A,b) solves the linear programming problem:min f'*x subject to: A*x <= bxX=LINPROG(f,A,b,Aeq,beq) solves the problem above while additionallysatisfying the equality constraints Aeq*x = beq.X=LINPROG(f,A,b,Aeq,beq,LB,UB) defines a set of lower and upperbounds on the design variables, X, so that the solution is inthe range LB <= X <= UB. Use empty matrices for LB and UBif no bounds exist. Set LB(i) = -Inf if X(i) is unbounded below;set UB(i) = Inf if X(i) is unbounded above.X=LINPROG(f,A,b,Aeq,beq,LB,UB,X0) sets the starting point to X0. Thisoption is only available with the active-set algorithm. The defaultinterior point algorithm will ignore any non-empty starting point.X=LINPROG(f,A,b,Aeq,Beq,LB,UB,X0,OPTIONS) minimizes with the defaultoptimization parameters replaced by values in the structure OPTIONS, anargument created with the OPTIMSET function. See OPTIMSET for details.Use options are Display, Diagnostics, TolFun, LargeScale, MaxIter.Currently, only 'final' and 'off' are valid values for the parameterDisplay when LargeScale is 'off' ('iter' is valid when LargeScale is 'on').[X,FV AL]=LINPROG(f,A,b) returns the value of the objective function at X:FV AL = f'*X.[X,FVAL,EXITFLAG] = LINPROG(f,A,b) returns EXITFLAG thatdescribes the exit condition of LINPROG.If EXITFLAG is:> 0 then LINPROG converged with a solution X.0 then LINPROG reached the maximum number of iterations without converging.< 0 then the problem was infeasible or LINPROG failed.[X,FV AL,EXITFLAG,OUTPUT] = LINPROG(f,A,b) returns a structureOUTPUT with the number of iterations taken in OUTPUT.iterations, the typeof algorithm used in OUTPUT.algorithm, the number of conjugate gradientiterations (if used) in OUTPUT.cgiterations.[X,FV AL,EXITFLAG,OUTPUT,LAMBDA]=LINPROG(f,A,b) returns the set ofLagrangian multipliers LAMBDA, at the solution: LAMBDA.ineqlin for thelinear inequalities A, LAMBDA.eqlin for the linear equalities Aeq,LAMBDA.lower for LB, and LAMBDA.upper for UB.NOTE: the LargeScale (the default) version of LINPROG uses a primal-dual method. Both the primal problem and the dual problem must be feasible for convergence. Infeasibility messages of either the primal or dual, or both, are given as appropriate. The primal problem in standardform ismin f'*x such that A*x = b, x >= 0. The dual problem ismax b'*y such that A'*y + s = f, s >= 0. 例6:用matlab 求下列LP 问题 ()01212121212m ax 2..56221,0x x x s t x x LP x x x x x x =+⎧⎪+≤⎪⎪≥⎨⎪+≤⎪⎪≥⎩在命令行输入(也可建立m 文件) C=[-2 -1]';A=[1 1; -1 1; 6 2;-1 0;0 -1]; b=[5 0 21 0 0]'; [x,y,k]=linprog(C,A,b) 或C=[-2 -1]';A=[1 1; -1 1; 6 2]; b=[5 0 21]'; LB=[0 0]';UB=[inf inf]';[x,y,k]=linprog(C,A,b,[],[],LB,UB) 输出: x =2.7500 2.2500 y = -7.7500 k =1故原目标函数的最大值为 max(x0)= 7.7500课堂实验任务1、用lingo 软件或Matlab 软件优化工具箱求解下列线性规划问题。