最优化大作业

合集下载

优化设计作业

优化设计作业

作业1. 阐述优化设计数学模型的三要素。

写出一般形式的数学模型。

答:建立最优化问题数学模型的三要素:(1)决策变量和参数。

决策变量是由数学模型的解确定的未知数。

参数表示系统的控制变量,有确定性的也有随机性的。

(2)约束或限制条件。

由于现实系统的客观物质条件限制,模型必须包括把决策变量限制在它们可行值之内的约束条件,而这通常是用约束的数学函数形式来表示的。

(3)目标函数。

这是作为系统决策变量的一个数学函数来衡量系统的效率,即系统追求的目标。

2. 阐述设计可行域和不可行域的基本概念答:约束对设计点在设计空间的活动范围有所限制。

凡满足所有约束条件的设计点,它在设计空间中的可能活动范围,称可行设计区域(可行域)。

不能满足所有约束条件的设计空间便是不可行设计区域(不可行域)。

3、无约束局部最优解的必要条件?答: (1)一元函数(即单变量函数) 极值点存在的必要条件如果函数f (x )的一阶导数f’(x )存在的话,则欲使x *为极值点的必要条件为: f’(x *)=0但使f’(x *)=0的点并不一定部是极值点;使函数f (x )的一阶导数f’(x )=0的点称为函数f (x )的驻点;极值点(对存在导数的函数)必为驻点,但驻点不一定是极值点。

至于驻点是否为极值点可以通过二阶导数f’’(x )=0来判断。

(2)n 元函数在定义域内极值点X *存在的必要条件为即对每一个变量的一阶偏导数值必须为零,或者说梯度为零(n 维零向量)。

▽f (X*)=0是多元函数极值点存在的必要条件,而并非充分条件;满足▽f (X*)=0的点X *称为驻点,至于驻点是否为极值点,尚须通过二阶偏导数矩阵来判断。

3. 阐述约束优化问题最优解的K-T 条件。

答:K-T 条件可阐述为:如果X (k)是一个局部极小点,则该点的目标函数梯度▽f (X (k))可表示成该点诸约束面梯度为▽g u (X (k))、▽h v (X (k))的如下线性组合:()()()()0****21=⎥⎦⎤⎢⎣⎡∂∂∂∂∂∂=∇T n x X f x X f x X f X f式中:q —在X (k)点的不等式约束面数;j —在X (k)点的等式约束面数;λu (u =1,2,…q )、μv (v =1,2,…j )——非负值的乘子,亦称拉格朗日乘子。

小学奥数 最优化问题 知识点+例题+练习 (分类全面)

小学奥数 最优化问题 知识点+例题+练习 (分类全面)
例2、妈妈让小明给客人烧水沏茶。洗水壶需要1分钟,烧开水需要15分钟,洗茶壶需要1分钟,洗茶杯需要1分钟。要让客人喝上茶,最少需要多少分钟?
拓展.小强给客人沏茶,烧开水需要12分钟,洗茶杯要2分钟,买茶叶要8分钟,放茶叶泡茶要1分钟。为了让客人早点喝上茶,你认为最合理的安排,多少分钟就可以了?
拓展.在早晨起床后的1小时内,小欣要完成以下事情:叠被3分钟,洗脸刷牙8分钟,读外语30分钟,吃早餐10分钟,收碗擦桌5分钟,收听广播30分钟。最少需要多少分钟?
课后作业
1.用一只平底锅烙大饼,锅里只能同时放两个。烙熟大饼的一面需要3分钟,现在要烙3个大饼,最少要用几分钟?
2、小虎早晨要完成这样几件事:烧一壶开水需要10分钟,把开水灌进热水瓶需要2分钟,取奶需要5分钟,整理书包需要4分钟。他完成这几件事最少需要多少分钟?
3、甲、乙、丙三人分别拿着2个、3个、1个热水瓶同时到达开水供应点打热水。热水龙头只有一个,怎样安排他们打水的次序,可以使他们打热水所花的总时间最少?
例3、五(1)班赵明、孙勇、李佳三位同学同时到达学校卫生室,等候校医治病。赵明打针需要5分钟,孙勇包纱布需要3分钟,李佳点眼药水需要1分钟。卫生室只有一位校医,校医如何安排三位同学的治病次序,才能使三位同学留在卫生室的时间总和最短?
拓展.甲、乙、丙三人到商场批发部洽谈业务,甲、乙、丙三人需要的时间分别是10分钟、16分钟和8分钟。怎样安排,使3人所花的时间最少?最少时间是多少?
例1、 用一只平底锅煎饼,每次只能放两个,煎一个展.烤面包时,第一面需要2分钟,第二面只要烤1分钟,即烤一片面包需要3分钟。小丽用来烤面包的架子,一次只能放两片面包,她每天早上吃3片面包,至少要烤多少分钟?
拓展.小华用平底锅烙饼,这只锅同时能放4个大饼,烙一个要用4分钟(每面各需要2分钟)。可小华烙6个大饼只用了6分钟,他是怎样烙的?

最优化方法大作业答案

最优化方法大作业答案

1.用薄钢板制造一体积5m 3,长度不小于4m ,无上盖的货箱,要求钢板耗量最小。

确定货箱的长x 1、宽x 2和高x 3。

试列出问题的数学模型。

解:min 32312122x x x x x x z ++= s.t 5321=x x x 41≥x 0,,321≥x x x2.将下面的线性规划问题表示为标准型并用单纯形法求解max f=x 1+2x 2+x 3s .t .2x 1+x 2-x 3≤2 -2x 1+x 2-5x 3≥-6 4x 1+x 2+x 3≤6 x i ≥0 i=1,2,3 解:先化标准形:Min 321x x x z -+=224321=+-+x x x x 6525321=++-x x x x646321=+++x x x x列成表格:121610011460105122001112-----可见此表已具备1°,2°,3°三个特点,可采用单纯形法。

首先从底行中选元素-1,由2/2,6/2,6/4最小者决定选第一行第一列的元素2,标以记号,迭代一次得121210231040116201002121211--------再从底行中选元素-2/3,和第二列正元素1/2,迭代一次得12123230210231040116201002121211-------再从底行中选元素-3,和第二列正元素2,迭代一次得4233410120280114042001112---再迭代一次得1023021062210231010213000421021013--选取最优解:01=x 42=x 23=x3. 试用DFP 变尺度法求解下列无约束优化问题。

min f (X )=4(x 1-5)2+(x 2-6)2取初始点X=(8,9)T ,梯度精度ε=0.01。

解:取IH=0,初始点()TX 9,8=2221)6()5(4)(-+-=x x x f⎥⎦⎤⎢⎣⎡--=∇122408)(21x x x f⎪⎪⎭⎫⎝⎛=∇624)()0(xfTx f d )6,24()()0()0(--=-∇=)0(0)0()1(dxxα+=T)69,248(00αα--=])669()5248(4min[)(min 2020)0(0)0(--+--⨯=+αααdxf 0)6()63(2)24()2458(8)(00)0(0)0(=-⨯-+-⨯--=+ααααd d xdf13077.0130170≈=α⎪⎪⎭⎫⎝⎛=⎪⎪⎭⎫ ⎝⎛--⨯+⎪⎪⎭⎫ ⎝⎛=21538.886153.462413077.098)1(x⎪⎪⎭⎫⎝⎛-=∇43077.410784.1)()1(xf进行第二次迭代:⎥⎦⎤⎢⎣⎡--=-=78463.013848.31)0()1(xxδ⎥⎦⎤⎢⎣⎡--=∇-∇=56924.110783.25)()(1)0()1(xf xf γ101011011101γγγγγδδδH HH H H TTTT-+=03172.8011=γδT86614.6321101==γγγγH T⎥⎦⎤⎢⎣⎡=61561.046249.246249.285005.911Tδδ⎥⎦⎤⎢⎣⎡==46249.240022.3940022.3940363.630110110TTHH γγγγ所以:⎪⎪⎭⎫⎝⎛--=0038.103149.003149.012695.01H⎪⎪⎭⎫⎝⎛-⨯⎪⎪⎭⎫⎝⎛---=∇-=43076.410784.10038.103149.003149.012695.0)()1(1)1(xf H d⎪⎪⎭⎫⎝⎛-=48248.428018.0令 )1(1)1()2(dx x α+=利用)()1()1(=+ααd dxdf ,求得49423.01=α,所以⎪⎪⎭⎫⎝⎛-+⎪⎪⎭⎫⎝⎛=+=21538.213848.021538.886152.449423.0)1()1()2(dxx⎪⎪⎭⎫ ⎝⎛=65因)()2(=∇xf ,于是停,)2(x 即为最优解。

最优化方法大作业-算法源程序-0.618法、抛物线法、共轭梯度法

最优化方法大作业-算法源程序-0.618法、抛物线法、共轭梯度法

最优化方法程序作业专业:油气储运工程班级:姓名:学号:一、开发工具该应用程序采用的开发工具是Visual studio 2005,编程语言使用的是C#。

二、程序代码(1)0.618法和抛物线法求ψ(t)=sint,初始点t0=1①主程序:using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Collections;public partial class_Default : System.Web.UI.Page{JiSuan JS = new JiSuan();protected void Button1_Click(object sender, EventArgs e){double xx0 = 0.01;//步长double tt0 = 1, pp = 2, qq = 0.5;ArrayList list1 = new ArrayList();list1 = (ArrayList)JS.SuoJian(xx0, tt0, pp, qq);//调用倍增半减函数double aa = double.Parse(list1[0].ToString());double bb = double.Parse(list1[1].ToString());txtShangxian.Text = bb.ToString();//在页面上显示极小区间txtXiaxian.Text = aa.ToString();ArrayList list2 = new ArrayList();list2 = (ArrayList)JS.JiXiao1(aa, bb);//调用0.618法函数double jixiao1 = double.Parse(list2[0].ToString());double fjixiao1 = double.Parse(list2[1].ToString());txtJixiao1.Text = jixiao1.ToString();//在页面上显示极小点txtFjixiao1.Text = fjixiao1.ToString();//在页面上显示极小点处的函数值ArrayList list3 = new ArrayList();list3 = (ArrayList)JS.JiXiao2(aa, bb);//调用抛物线法函数double jixiao2 = double.Parse(list3[0].ToString());double fjixiao2 = double.Parse(list3[1].ToString());txtJixiao2.Text = jixiao2.ToString();//在页面上显示极小点txtFjixiao2.Text = fjixiao2.ToString();//在页面上显示极小点处的函数值 }}②各个子函数的程序:using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Collections;///<summary>/// JiSuan 的摘要说明///</summary>public class JiSuan{public JiSuan(){//// TODO: 在此处添加构造函数逻辑//}//目标函数public double f(double z){double zz = Math.Sin(z);return zz;}//倍增半减函数public ArrayList SuoJian(double x0, double t0, double p, double q){double t1;double f0, f1;double x1, t2;double f2;double a = 0, b = 0, c = 0;double fa, fc, fb;double t3, f3;bool biaozhi1 = true;//设置是否循环的标志bool biaozhi2 = true;t1 = t0 + x0;f0 = f(t0);//调用目标函数f1 = f(t1);if (f0 > f1){while (biaozhi1){x1 = p * x0;t2 = t1 + x1;f2 = f(t2);//调用目标函数if (f1 > f2){t0 = t1;t1 = t2;f0 = f1;f1 = f2;continue;}else{a = t0;c = t1;b = t2;fa = f0;fc = f1;fb = f2;break;}}}else{t3 = t1;f3 = f1;t1 = t0;f1 = f0;t0 = t3;f0 = f3;while (biaozhi2){x1 = q * x0;t2 = t1 - x1;f2 = f(t2);//调用目标函数if (f1 > f2){t0 = t1;t1 = t2;f0 = f1;f1 = f2;continue;}else{a = t2;c = t1;b = t0;fa = f2;fc = f1;fb = f0;break;}}}ArrayList list = new ArrayList();list.Add(a);list.Add(b);return list;}//0.618法函数public ArrayList JiXiao1(double a, double b) {double jd = 0.0001;//精度double p = 0.618;double t1, t2;double f1, f2;double jixiao=0;//极小点bool biaozhi1 = true;//设置是否循环标志bool biaozhi2 = true;while (biaozhi1){t1 = a + (1 - p)*(b - a);t2 = a + p * (b - a);f1 = f(t1);//调用目标函数f2 = f(t2);while (biaozhi2){if (f1 < f2){b = t2;t2 = t1;f2 = f1;t1 = a + (1 - p)*(b - a); f1 = f(t1);//调用目标函数if (Math.Abs(b - a) > jd) {continue;}else{biaozhi1 = false;break;}}else if (f1 == f2){a = t1;b = t2;if (Math.Abs(b - a) > jd) {break;}else{biaozhi1 = false;break;}}else if (f1 > f2){a = t1;t1 = t2;f1 = f2;t2 = a + p * (b - a);f2 = f(t2);//调用目标函数if (Math.Abs(b - a) > jd){continue;}else{biaozhi1 = false;break;}}}}jixiao = (a + b) / 2;double fjixiao = f(jixiao);//调用目标函数ArrayList list = new ArrayList();list.Add(jixiao);list.Add(fjixiao);return list;}//抛物线法函数public ArrayList JiXiao2(double a, double b){double jd = 0.0001;//精度double c = a + (b - a) / 2;//将c的值设为a、b点的中点double fa, fb, fc, c1, c2;double jixiao = 0;//极小点double ta, fta;double fac;bool biaozhi1 = true;//设置是否循环标志while (biaozhi1){fa = f(a);//调用目标函数fb = f(b);fc = f(c);c1 = (fb - fa) / (b - a);c2 = ((fc - fa) / (c - a) - c1) / (c - b);if (c2 == 0){jixiao = c;break;}else{ta = 0.5 * (a + b - (c1 / c2));fta = f(ta);//调用目标函数if (Math.Abs(b - a) <= jd){jixiao = ta;break;}else{if (fc > fta){if (c > ta){b = c;fb = fc;c = ta;fc = fta;continue;}else{a = c;fa = fc;c = ta;fc = fta;continue;}}else if (fc == fta){if (c > ta){a = ta;b = c;c = (c + ta) / 2;fa = fta;fb = fc;fc = f(c);//调用目标函数continue;}else if (c == ta){fac = f((a + c) / 2);//调用目标函数if (fac < fc){c = (a + c) / 2;fc = f(c);//调用目标函数b = ta;fb = fta;continue;}else{a = (a + c) / 2;fa = f(a);//调用目标函数continue;}}else if (c < ta){a = c;c = (c + ta) / 2;b = ta;fa = fc;fb = fta;fc = f(c);//调用目标函数continue;}}else if (fc < fta){if (c > ta){a = ta;fa = fta;continue;}else{b = ta;fb = fta;continue;}}}}}double fjixiao = f(jixiao);//调用目标函数ArrayList list = new ArrayList();list.Add(jixiao);list.Add(fjixiao);return list;}}(2)共轭梯度法求函数极小点:f(x)=1.5x12+0.5x22-x1x2-2x1;初始点为(-2,4)①主程序:using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Collections;public partial class_Default : System.Web.UI.Page{JiSuan JS = new JiSuan();protected void Button1_Click(object sender, EventArgs e){//共轭梯度法求极小值double[] x0 = new double[2];//定义二维数组double[] x = new double[2];x0[0] = -2;x0[1] = 4;double x00 = -2;double x01 = 4;double jd = 0.0001;//精度bool biaozhi1 = true;//设置是否循环的标志bool biaozhi2 = true;double y;//定义关于x的函数值double[] g = new double[2];//定义函数在点x处的梯度值double[] p = new double[2];double ggm, ggo=0;double jixiao;double x1=0, x2=0, fy=0;int i;for (int j = 0; j < 2; j++){x[j] = x0[j];}while (biaozhi1){i = 0;while (biaozhi2){y = JS.f(x[0], x[1]);//调用目标函数g[0] = JS.g0(x[0], x[1]);//调用梯度函数,求在点x处的梯度值 g[1] = JS.g1(x[0], x[1]);ggm = g[0] * g[0] + g[1] * g[1];if (ggm <= jd){x1 = x[0];x2 = x[1];fy = y;biaozhi1 = false;break;}else{if (i == 0){p[0] = -g[0];p[1] = -g[1];}else{p[0] = -g[0] + (ggm / ggo) * p[0];p[1] = -g[1] + (ggm / ggo) * p[1];}//调用0.618法子函数,找出极小点jixiao = JS.JiXiao1(x[0], x[1], p[0], p[1], x00, x01); x[0] = x[0] + jixiao * p[0];x[1] = x[1] + jixiao * p[1];ggo = ggm;i++;if (i >= 2){break;}else{continue;}}}}txtx1.Text = x1.ToString();txtx2.Text = x2.ToString();txty.Text = fy.ToString();}}②子函数程序:using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Collections;///<summary>/// JiSuan 的摘要说明///</summary>public class JiSuan{public JiSuan(){//// TODO: 在此处添加构造函数逻辑//}//目标函数public double f(double z1,double z2){double zz = 1.5 * z1 * z1 + 0.5 * z2 * z2 - z1 * z2 - 2 * z1;return zz;}//求梯度值函数public double g0(double z1, double z2){double zz = 3 * z1 - z2 - 2;return zz;}public double g1(double z1, double z2){double zz = z2 - z1;return zz;}//倍增半减函数public ArrayList SuoJian(double x0, double t0, double p, double q, double xx0, double xx1, double p0, double p1,double x00,double x01){double t1;double f0, f1;double x1, t2;double f2;double a = 0, b = 0, c = 0;double fa, fc, fb;double t3, f3;bool biaozhi1 = true;//设置是否循环的标志bool biaozhi2 = true;double x_0t1, x_1t1, x_0t2, x_1t2;x_0t1 = xx0 + t1 * p0;x_1t1 = xx1 + t1 * p1;f0 = f(x00, x01);//调用目标函数f1 = f(x_0t1, x_1t1);if (f0 > f1){while (biaozhi1){x1 = p * x0;t2 = t1 + x1;x_0t2 = x_0t1 + t2 * p0;x_1t2 = x_1t1 + t2 * p1;f2 = f(x_0t2, x_1t2);//调用目标函数if (f1 > f2){t0 = t1;t1 = t2;f0 = f1;f1 = f2;continue;}else{a = t0;c = t1;b = t2;fa = f0;fc = f1;fb = f2;break;}}}else{t3 = t1;f3 = f1;t1 = t0;f1 = f0;t0 = t3;while (biaozhi2){x1 = q * x0;t2 = t1 - x1;x_0t2 = x_0t1 + t2 * p0;x_1t2 = x_1t1 + t2 * p1;f2 = f(x_0t2, x_1t2);//调用目标函数if (f1 > f2){t0 = t1;t1 = t2;f0 = f1;f1 = f2;continue;}else{a = t2;c = t1;b = t0;fa = f2;fc = f1;fb = f0;break;}}}ArrayList list = new ArrayList();list.Add(a);list.Add(b);return list;}//0.618法函数public double JiXiao1(double x0, double x1, double p0, double p1,double x00,double x01){double jd = 0.0001;//精度double p = 0.618;double t1, t2;double jixiao = 0;//极小点bool biaozhi1 = true;//设置是否循环标志bool biaozhi2 = true;double xx0 = 0.01;//步长double tt0 = 0, pp = 2, qq = 0.5;double x_0t1, x_1t1, x_0t2, x_1t2;ArrayList list1 = new ArrayList();//调用倍增半减函数获取极小区间list1 = (ArrayList)SuoJian(xx0, tt0, pp, qq, x0, x1, p0, p1, x00, x01);double a = double.Parse(list1[0].ToString());double b = double.Parse(list1[1].ToString());while (biaozhi1){t1 = a + (1 - p) * (b - a);t2 = a + p * (b - a);x_0t1 = x00 + t1 * p0;x_1t1 = x01 + t1 * p1;x_0t2 = x_0t1 + t2 * p0;x_1t2 = x_1t1 + t2 * p1;f1 = f(x_0t1, x_1t1);//调用目标函数f2 = f(x_0t2, x_1t2);while (biaozhi2){if (f1 < f2){b = t2;t2 = t1;f2 = f1;t1 = a + (1 - p) * (b - a);x_0t1 = x00 + t1 * p0;x_1t1 = x01 + t1 * p1;f1 = f(x_0t1, x_1t1);//调用目标函数if (Math.Abs(b - a) > jd){continue;}else{biaozhi1 = false;break;}}else if (f1 == f2){a = t1;b = t2;if (Math.Abs(b - a) > jd){break;}else{biaozhi1 = false;break;}}else if (f1 > f2){a = t1;t1 = t2;f1 = f2;t2 = a + p * (b - a);x_0t2 = x_0t1 + t2 * p0;x_1t2 = x_1t1 + t2 * p1;f2 = f(x_0t2, x_1t2);//调用目标函数if (Math.Abs(b - a) > jd){continue;}else{biaozhi1 = false;break;}}}}jixiao = (a + b) / 2;return jixiao;}}三、程序运行界面及结果(1)0.618法和抛物线法求ψ(t)=sint,初始点t0=1(2)共轭梯度法求函数极小点:f(x)=1.5x12+0.5x22-x1x2-2x1;初始点为(-2,4)。

北航最优化大作业

北航最优化大作业

北航最优化大作业1.引言旅行商问题(Traveling Salesman Problem,TSP)是一种经典的组合优化问题,目标是找到一条路径,使得旅行商从起点出发,途经所有城市一次后返回起点,并且总路径长度最短。

TSP问题具有NP-hard的特性,寻找最优解是一个非常具有挑战性的任务。

本文将基于禁忌算法,探讨TSP问题的求解方法。

2.禁忌算法简介禁忌算法是一种基于局部的元启发式算法,通过在过程中禁止一定的动作来跳出局部最优解,以期望获得更好的全局最优解。

算法通过引入禁忌表和禁忌长度等机制,避免过程中陷入局部最优解。

3.TSP问题的数学建模假设有n个城市,城市之间的距离可以表示为一个n×n的距离矩阵D。

TSP问题的目标可以定义为:min ∑_(i=1)^n ∑_(j=1)^(n) D_ij*x_ijs.t. ∑_(i=1)^n x_ij=1,∑_(j=1)^n x_ij=1,∀i ≠ jx_ij∈{0,1}, 1≤i,j≤n其中x_ij表示城市i与城市j之间的路径是否存在,1表示存在,0表示不存在。

4.禁忌算法在TSP问题中的应用(1)初始化选取一个起始解x,计算其路径长度f(x)。

将x设为当前解x_best,将f(x)设为当前解的最优值f_best。

(2)选择邻域解选择当前解的一个邻域解x',使得x'与x只有一个位置上的交换。

通过随机选择两个位置,进行交换操作。

(3)禁忌判断如果邻域解x'的路径长度f(x')小于当前解的最优值f_best,则更新f_best为f(x'),并将x'设为新的当前解。

否则,比较x'与当前解的禁忌情况。

(4)禁忌更新如果x'未在禁忌表中,或者禁忌表中对应的禁忌周期已过,则将x'设为新的当前解。

否则,选择一个路径长度较短的邻域解x'',即使其路径长度f(x'')大于f_best。

小学四年级数学最优化问题提高训练(附答案解析)

小学四年级数学最优化问题提高训练(附答案解析)

最优化问题一、知识要点在日常生活和生产中,我们经常会遇到下面的问题:完成一件事情,怎样合理安排才能做到用的时间最少,效果最佳。

这类问题在数学中称为统筹问题。

我们还会遇到“费用最省”、“面积最大”、“损耗最小”等等问题,这些问题往往可以从极端情况去探讨它的最大(小)值,这类问题在数学中称为极值问题。

以上的问题实际上都是“最优化问题”。

二、精讲精练【例题1】用一只平底锅煎饼,每次只能放两个,剪一个饼需要2分钟(规定正反面各需要1分钟)。

问煎3个饼至少需要多少分钟?练习1:1、烤面包时,第一面需要2分钟,第二面只要烤1分钟,即烤一片面包需要3分钟。

小丽用来烤面包的架子,一次只能放两片面包,她每天早上吃3片面包,至少要烤多少分钟?2、用一只平底锅烙大饼,锅里只能同时放两个。

烙熟大饼的一面需要3分钟,现在要烙3个大饼,最少要用几分钟?【例题2】妈妈让小明给客人烧水沏茶。

洗水壶需要1分钟,烧开水需要15分钟,洗茶壶需要1分钟,洗茶杯需要1分钟。

要让客人喝上茶,最少需要多少分钟?练习2:1、小虎早晨要完成这样几件事:烧一壶开水需要10分钟,把开水灌进热水瓶需要2分钟,取奶需要5分钟,整理书包需要4分钟。

他完成这几件事最少需要多少分钟?2、小强给客人沏茶,烧开水需要12分钟,洗茶杯要2分钟,买茶叶要8分钟,放茶叶泡茶要1分钟。

为了让客人早点喝上茶,你认为最合理的安排,多少分钟就可以了?【例题3】五(1)班赵明、孙勇、李佳三位同学同时到达学校卫生室,等候校医治病。

赵明打针需要5分钟,孙勇包纱布需要3分钟,李佳点眼药水需要1分钟。

卫生室只有一位校医,校医如何安排三位同学的治病次序,才能使三位同学留在卫生室的时间总和最短?练习3:1、甲、乙、丙三人分别拿着2个、3个、1个热水瓶同时到达开水供应点打热水。

热水龙头只有一个,怎样安排他们打水的次序,可以使他们打热水所花的总时间最少?2、甲、乙、丙三人到商场批发部洽谈业务,甲、乙、丙三人需要的时间分别是10分钟、16分钟和8分钟。

最优化马昌凤第三章作业

最优化马昌凤第三章作业

最优化方法及其Matlab程序设计习题作业暨实验报告学院:数学与信息科学学院班级:12级信计一班姓名:李明学号:49第三章 最速下降法和牛顿法一、上机问题与求解过程1、用最速下降法求212221216423),(x x x x x x f --+=的极小值。

解:仿照书上编写最速下降法程序如下:function [x,val,k]=grad(fun,gfun,x0)%功能:用最速下降法求解无约束化问题:min f(x)%输入:x0是初始点,fun,gfun分别是目标函数和梯度%输出:x,val分别是近似嘴有点和最优值,k是迭代次数maxk=5000;rho=;sigma=;%一开始选择时选择的rho和sibma选择的数据不够合理,此处我参照书上的数据编写数据k=0;epsilon=1e-5;while(k<maxk)g=feval(gfun,x0);%计算梯度d=-g;%计算搜索方向if(norm(d)<epsilon),break;endm=0;mk=0;while(m<20)%Armijo搜索if(feval(fun,x0+rho^m*d)<feval(fun,x0)+sigma*rho^m*g'*d)mk=m;break;%直接利用Armijo搜索公式,一开始的时候没有记住公式编写出现错误endm=m+1;endx0=x0+rho^mk*d;k=k+1;endx=x0;val=feval(fun,x0)%求得每一个的函数值然后仿照书上建立两个目标函数和梯度的M文件:function f=fun(x)f=3*x(1)^2+2*x(2)^2-4*x(1)-6*x(2);function g=gfun(x)g=[6*x(1)-4,4*x(2)-6]';选取初始点为']0,0[,调用函数程序,得出最小极值点为']6667.0[,极小值为8333500.1,,在界面框中输入的程序如下:.5[x,val,k]=grad('fun','gfun',x0)val =x =k =10从结果可以看出迭代次数为10次,如果选取不同的初值点则迭代次数不一样,但是极小值相同。

最优化方法与应用大作业(一)最速下降法

最优化方法与应用大作业(一)最速下降法

最优化方法与应用大作业(一)
---最速下降法部分:
1.问题描述:
用梯度下降法求解以下优化问题
min f(x)=(x1+10*x2)^2+5(x3-x4)^2+(x2-2*x3)^4+10*(x1-x4)^4
2.编程感想:
该算法需要计算Hesse矩阵,C语言在向量运算时没有Matlab方便,所以手工完成了理论计算,再输入,破坏了程序的移植性。

同时,实验表明当初始值离理想点较远且精度要求较高时,最速下降法的收敛速率极慢,迭代几乎不可能完成,这对初值的选取提出了一定限制。

3.结果分析:
编译界面(Mac os X,Xcode环境)
输入参数(设定为(0.1,0.2,0.3,0.4)):
结果(此处列出每次迭代结果)。

明显的看到,最速下降法的收敛较慢,最终结果接近理论值(F(0,0,0,0)=0)所以该结果可以满意。

4.算法代码见下页
西安电子科技大学电子工程学院020951
李骏昊02095005。

最优化方法大作业模板

最优化方法大作业模板

命题人:审核人:大作业学期:至学年度第学期课程:最优化方法课程代号:签到序号:使用班级:姓名:学号:题号一二三四五六七八九十总分得分一、(目标1)请从以下6种算法中任选一种,说明算法的来源、定义、基本思想和优缺点,并给出算法步骤(包含算法流程图)和例子(包含程序与运算结果)。

①禁忌搜索算法;②模拟退火算法;③遗传算法;④神经网络算法;⑤粒子群算法;⑥蚁群算法。

二、(目标1)某工厂生产甲、乙两种产品,已知生产这两种产品需要消耗三种材料A 、B 和C ,其中生产过程中材料的单位产品消耗量和总量,以及单位产品的利润如下表所示。

该如何配置安排生产计划,使得工厂所获得的利润最大?材料甲乙资源总量材料A (Kg )3265材料B (Kg )2140材料C (Kg )0375单位利润(元/件)15002500-(1)要保证工厂利润的最大化,写出相应的生产计划数学模型;(2)根据对偶理论,直接写出该线性规划的对偶问题;(3)采用单纯形表法对该该线性规划问题进行求解,写出详细的计算过程;(4)采用Matlab 软件对该线性规划问题进行求解,写出完整的源程序,并给出程序运行结果;(5)讨论当材料B 的资源总量发生变化时,该线性规划问题的最优解会如何变化?课程目标目标1……题号一、二、三、四、五……分值20、25、20、20、15……得分得分三、(目标1)求解下列无约束非线性规划问题(1)采用黄金分割法求解:min 4()24f x x x =++。

初始区间为[-1.0],精度为ε=10-4。

(要求:采用黄金分割法进行Matlab 编程求解,写出源程序,并给出运行结果,列出迭代过程的数据表格)(2)采用阻尼牛顿法求解:222121212min (,)4f x x x x x x =+-。

分别取两个初始点:x A =(1,1)T ,x B =(3,4)T 。

(要求:采用阻尼牛顿法进行Matlab 编程求解,并给出运行结果,列出迭代过程的数据表格)四、(目标1)求解下列约束非线性规划问题:22112212121212min ()23532..00f x x x x x x x x x x x s t x x =-+--+≤⎧⎪-≤⎪⎨≥⎪⎪≥⎩(1)采用罚函数法进行求解,需写出具体计算过程;(2)采用二次规划方法进行求解,需写出具体计算过程,并进行MATLAB 编程,写出源程序和运算结果;五、(目标1)(1)某商店在未来的4个月里,准备利用它的一个仓库来专门经营某种商品,仓库的最大容量为1000单位,而且该商店每月只能出卖仓库现有的货。

西电最优化上机报告(大作业)

西电最优化上机报告(大作业)

上机报告一.最速下降法算法简述:1.在本例中,先将最速下降方向变量赋一个值,使其二范数满足大于ε的迭代条件,进入循环。

2.将函数的一阶导数化简,存在一个矩阵,将其hesse矩阵存在另一个矩阵。

依照公式求出α,进而求出下一任迭代的矩阵初值。

循环内设置一个计数功能的变量,统计迭代次数。

3.求其方向导数的二范数,进行判别,若小于ε,则跳出循环,否则将继续迭代。

4.显示最优解,终止条件,最小函数值。

心得体会:最速下降法的精髓,无疑是求梯度,然后利用梯度和hesse矩阵综合计算,求解下一个当前最优解。

但是,要求函数是严格的凸函数,结合严格凸函数的大致图像,这就给初值的选取提供了一点参考。

例如在本例中,由于含有两个变量的二次方之和,结合大致图像,想当然的,初值的选取应当在原点附近;又因为变量的二次方之和后面,还减去了变量的一次形式和一次混合积,所以初值的选取应该再向第一象限倾斜。

综合以上考量,第一次选取(1,1)作为初值,判别精度方面,取到千分位,暂定为0.001。

运行以后,结果显示迭代了25次,最优解为(3.9995,1.9996),终止条件为5.4592e-04,目标函数为-8.0000。

这个结果已经相当接近笔算结果。

整体的运行也比较流畅,运算速度也比较快。

第二次取值,决定保留判别精度不变,将初值再适当向第一象限倾斜,取(2,2)作为初值,运行后,显示只迭代了11次!最优结果显示(3.9996,1.9997),终止条件为3.6204e-04,最优解-8.0000。

可见,最优结果更接近理想值,终止条件也变小了,最关键的是,迭代次数减少至第一次的一半以下!这说明以上初选取的方向是对的!第三次再进行初值细化,判别精度仍然不变,初值取(3,3)。

结果令人兴奋,只迭代了四次!最优解已经显示为(4.0000,2.0000),终止条件为2.4952e-04,目标函数-8.0000。

第四次,判别精度不变,取初值(4,4)。

最优化理论和算法: 大作业(一)

最优化理论和算法: 大作业(一)

最优化理论和算法:大作业(一)简介:这个大作业的主要目的是在Matlab下自己编写单纯形法算法来求解标准型线性规划问题:min c T xs.t.Ax=bx≥0其中b≥0,A是m×n(m≤n)的矩阵。

假设A的秩是m.特别的,A并不一定包含单位矩阵。

按照要求编写下列小程序。

程序(一):实现单步单纯形法程序格式:function[istatus,iB,iN,xB]=simplex_step(A,b,c,iB,iN,xB)%实现一步单纯形法%输入参数:%A-(n,m)系数矩阵%b-(m,1)(正)右端向量%c-(n,1)目标函数系数%iB-(1,m)整数向量记录当前基本变量的指标数%iN-(1,n-m)整数向量记录当前非基本变量的指标数%xB-(m,1)向量代表当前基本变量的值%输出参数:%istatus-整数标记单纯形法执行状态%istatus=0正常单纯形法步完成% istatus=32问题无界% istatus=-1找到最优基本可行解%iB-(1,m)整数向量记录运行单纯形法之后的基本变量的指标数%iN-(1,n-m)整数向量记录运行单纯形法之后的非基本变量的指标数%xB-(m,1)向量记录运行单纯形法之后的基本变量的值注:该程序不考虑退化情形。

程序(二):利用两步法中的第一步来求解一个初始基本可行解程序格式:function[istatus,iB,iN,xB]=simplex_init(A,b)%实现两步法中的第一步来求解一个初始基本可行解,通过求解下面的问题:%min y_1+...+y_m%s.t.Ax+y=b%x>=0,y>=0%A是m x n矩阵。

%输入参数:%A-(n,m)系数矩阵%b-(m,1)正的右端向量%输出参数:%istatus-整数标记初始化状态% istatus=1找到原问题的一个基本可行解% istatus=4问题可行域是空集% istatus=16初始化过程失败%iB-(1,m)整数向量记录运行初始化之后的基本变量的指标数(对应原问题)%iN-(1,n-m)整数向量记录运行初始化之后的非基本变量的指标数(对应原问题)%xB-(m,1)向量记录运行初始化之后的基本变量的值(对应原问题)注:为了简单化程序,若初始化过程找到的初始基本可行解包含某些人工变量y j,设置istatus=16(初始化失败)。

北航最优化方法大作业参考

北航最优化方法大作业参考

北航最优化方法大作业参考旅行商问题是一个经典的组合优化问题,目标是找到一条最短路径,使得旅行商能够在访问所有城市后回到起始城市。

在实际应用中,旅行商问题有着广泛的应用,例如物流配送、城市规划等领域。

为了解决旅行商问题,我们可以采用启发式算法,其中一个常用的方法是遗传算法。

遗传算法是一种模拟自然进化过程的优化算法,通过模拟生物遗传的选择、交叉和变异等操作,逐步优化问题的解。

首先,我们需要对问题进行建模。

假设有N个城市,我们可以通过一个N*N的距离矩阵来表示各个城市之间的距离。

同时,我们需要定义一个染色体表示一条路径,其中每个基因表示一个城市的编号。

接下来,我们可以采用遗传算法来求解最优解。

遗传算法一般包括以下几个步骤:1.初始化种群:随机生成初始的染色体种群,每个染色体都表示一条路径。

2.适应度评价:根据染色体的路径长度来评估每个染色体的适应度,路径越短适应度越高。

3.选择操作:选择适应度较高的染色体作为父代,采用轮盘赌选择算法确定父代。

4.交叉操作:采用部分映射交叉算子对父代进行交叉操作,生成新的子代。

5.变异操作:对子代进行变异操作,以增加种群的多样性。

6.环境选择:根据适应度选择下一代种群,同时保留精英个体,避免解的丢失。

7.终止条件:当达到预设的迭代次数或者达到最优解时,终止算法。

通过以上步骤的迭代,我们可以逐步优化路径的长度,最终得到一条最短路径。

除了遗传算法,我们还可以尝试其他的优化算法,例如模拟退火算法、蚁群算法等。

这些算法在求解旅行商问题时都有一定的优势和适用性。

总结起来,旅行商问题是一个经典的组合优化问题,在北航最优化方法大作业中可以选择使用启发式算法来解决。

我们可以尝试使用遗传算法来求解最优路径,并根据实际情况选择合适的算法参数和终止条件。

通过不断地迭代和优化,我们可以得到一条最短路径,满足旅行商的需求。

以上是关于北航最优化方法大作业的参考内容,希望对你的写作有所帮助。

如果有其他疑问,欢迎继续提问。

北航最优化方法作业答案co_theory

北航最优化方法作业答案co_theory

原始问题
min-max问题是研究对偶问题的基础!各种对偶的区别: 的定义方式不同! 原始问题(primal problem)
◎ 前提: 两人采取理性行为 不管对方采取何种策略,该行为都能保证自己的最大获益 该行为都能保证自己的最大获益 -不管对方采取何种策略 Peter: 选 最多要支付 Harriet: 选 最少收到 需要解决的问题: max-min问题←→对偶问题
第 7 章 约束优化:理论 数学规划基础 LHY‐SMSS‐BUAA 第 7 章 约束优化:理论 数学规划基础 LHY‐SMSS‐BUAA
4
线性规划的对偶理论
线性规划的对偶理论: 原始问题←→对偶问题 • 原始问题-minimize,对偶问题-maximize • 原始问题最优解所对应的单纯形乘子是对偶问题的解 • 弱对偶性 • 强对偶性(之一有解,则另一个必有解,且最优值相等)
其中 是凸函数. 定理. 凸规划的任一KKT点是全局极小点. 注1. 凸规划的所有局部解也是全局解. 注2. 线性规划是凸规划;二次规划中目标函数的Hessian阵 半正定时,也是凸规划.
第 7 章 约束优化:理论 数学规划基础 LHY‐SMSS‐BUAA
则 . 从而 Lagrange乘子的解释:最优值关于约束的灵敏度,即 约束函数变化时,对应的最优值的变化率!
原始问题(primal problem) 例1.
Lagrange对偶-例
其中 的其它约束. 对任意的
, 是凸函数,X是凸集,是希望分别处理 ,定义对偶函数 定义对偶函数(dual (d l function) f ti )
对偶函数
对偶问题: 对偶问题(dual problem):
注:如果要求 ci(x) = 0,则对偶问题中与之对应的变量没 有符号限制.

西电最优化大作业

西电最优化大作业
1.2.1 算法分析: 取
p0 f x0 , 当 搜 索 到
xk 1







pk 1 f xk 1 k pk , k 0,1,...,n 2 ,此时, pk 1 与 pk A 共轭,用 Apk 右乘上式得
T pk 1 Apk f xk 1 Apk k pk Apk
m 2 理解为拉格朗日乘子法: minT X ; M min f x M min0, g i x i 1
其中
min0, g i x 2
g i 0,i 1 ~ m
当g i x 0,


T pk 1 Apk 0

f x k 1 Ap k k k 0,1,...,n 2 ,若不满足条件,进行下一次迭代。 pT p Ap k
T
1.2.2 问题求解 本程序编程语言为 MATLAB,终止条件为 f x k x0 =[1 1]。 程序代码见附件conjugate.m 1.2.3 计算结果如下:
三、此次实验的收获
经过几个晚上的艰苦奋斗,努力学习,不断调试程序,最终才得以成功运行 程序并得到满意的结果。 有过山重水复疑无路的困境,但最终迎来的还是柳暗花 明又一村的喜悦。通过此次实验,我的收获主要有以下几点: 以前自己在求解函数最优化问题时都是通过求导、画图等方法,而这几个算法都 是通过不断迭代寻找最优解, 相对来说更有利于电脑编程的实现和推广,对函数 本身性质的要求也不是太高。 在最速下降法中, 沿负梯度方向函数值很快的说法容易使我们相信这一定是 最理想的搜索方向, 沿该方向搜索时收敛速度应该很快,然而在算法实现过程中 发现,梯度法的收敛速度并不快(迭代次数为 45 次) ,比其它算法收敛速度都要 慢。而共轭梯度法仅需要利用一阶导数信息,也不再要求精确的直线搜索,进而 克服了最速下降法收敛慢的缺点(迭代次数为 2 次) 。 内点法和外点法的实质都是构造 “惩罚函数” 或者 “围墙函数 (或障碍函数) ” , 将约束函数其转化为非约束函数, 其中外点法在将函数转化为非约束函数后调用 了“牛顿法”来求解,内点法也尝试过用“牛顿法”来求解非约束函数,但由于 障碍函数为倒数形式, 导致了程序在求矩阵逆的时候产生了无穷大的量,函数无 解,所以内点法采用“直接求导”来求解非约束函数。此外,我也尝试了用求极 限的方法来求解最优点,根据手算的步骤,在求得偏导数为 0 的点后,令障碍因 子 mk→0,求得最优解,方法简单,算法易于实现。 这门课在学习过程中多以理论学习为主,如果平时不注重实践,将自己所学 运用到实际中, 就很难会有太大的收获,通过自己的努力用课堂上的算法解决了 实际问题,无疑加深了自己对算法理论的理解。

化学反应器大作业-二氧化硫转换器最优化

化学反应器大作业-二氧化硫转换器最优化

化学反应器理论大作业二氧化硫转换器最优化二氧化硫转换器最优化反应方程式:SO 2+1/2O 2=SO 3 (放热反应)四段绝热反应器,级间间接换热,常压下反应。

1. 基础数据• 混合物恒压热容Cp =0.2549 [kcal/kgK] • -ΔH =23135 [kcal/kmol] • 催化剂堆密度 ρb =554 [kg/m 3]• 进口SO 2浓度8.0 mol%,O 2浓度9.0 mol%,其余为氮气 • 处理量131 [kmol SO 2/hr],要求最终转化率98%2..动力学方程 式中:3. 基本要求• 在T -X 图上,做出平衡线;至少4条等速率线。

• 以一维拟均相平推流模型为基础,在催化剂用量最少的前提下,求总()()()[]sec ./11-2232323222gcat mol P P K P PB B P P K P k R SO SO SO SO SO SO O eff SO +-+-=ξ()()987.1,3.11295exp 1026203.227200exp 103.25.7355exp 48148600475,35992exp 105128.1475420,76062exp 106915.75218718223=⎪⎪⎭⎫⎝⎛⨯=⎪⎭⎫ ⎝⎛=⎪⎪⎭⎫ ⎝⎛⨯=⎪⎪⎭⎫⎝⎛-=-⎪⎪⎭⎫⎝⎛-⨯=-⎪⎪⎭⎫⎝⎛-⨯=--R T K P P K P RT K T B C RT k C RT k P O SO P SOoeff oeff ξ的及各段的催化剂装量,进出口温度、转化率并在T-X 图上标出折线。

•程序用C、Fortran、BASIC语言之一编制。

4.讨论•要求的最终转化率从98%变化到99%对催化剂用量的影响;•y O2+y SO2=21%,SO2进口浓度在7-9%之间变化,对催化剂装量的影响。

一.T-X图绘制平衡线与等反应速率线本次大作业计算程序,使用Matlab编程实现。

机械优化设计大作业(长江大学)

机械优化设计大作业(长江大学)

机械优化设计大作业姓名:**班级:机械11005班序号:11目录第一题.........................................................................................1-4第二题........................................................................................4-5第三题........................................................................................5-7第四题........................................................................................8-10 第五题.......................................................................................10-11 心得体会...................................................................................11-13 草稿....................................................................... ....14-181.⎪⎩⎪⎨⎧≥=++≥++⋅++=0,20521532min 21321321321x x x x x x x x t s x x x f解法一:将可行域化为对应的函数的标准形式:-x 1-2x 2-3x 3≤-15s.t 2x 1+x 2+5x 3=20x 1,x 2≥0程序清单如下: f=[1,1,1]; A=[-1,-2,-3]; Aeq=[2,1,5]; b=[-15]; beq=[20]; lbnd=[0,0];[x,minf]=linprog(f,A,b,Aeq,beq,lbnd,[]) 程序运行结果整理: x 1=0.0000 x 2=2.1429 x 3=3.5714 minf=5.7143解法二:构造新的函数求解 由2x 1+x 2+5x 3=20可知x 3=3(20−x 2−2x 1)5所以f= x 1+x 2+x 3= x 1+x 2+3(20−x 2−2x 1)5=﹣15x 1+25x 2+4令F=5(f-4)=3x 1+4 x 2,则可行域可化为:-x 1-2x 2-3x 3≤-15 x 1-7x 2≤-15s.t 2x 1+x 2+5x 3=20 s.tx 1,x 2≥0 x 1,x 2≥0 所以欲求minf 即求minF 程序清单如下: f=[3,4]; A=[1,-7]; b=[-15]; lbnd=[0,0];[x,minF]=linprog(f,A,b,[],[],lbnd,[]) 程序运行结果整理: x 1=0.0000; x 2=2.1429 minF=8.5714 因此minf=F5+4=8.57145+4=5.7143解法三:将解法二的可行域转化x 1-7x 2≤-15 x 1-7x 2≤-15s.t - x 1≤0x 1,x 2≥0 - x 2≤0此时不等式的约束关系可表示为:1 -7 x 1 -15 -1 0 ≤ 0 0 -1 x2 0程序清单如下: f=[3,4];A=[1,-7;-1,0;0,-1]; b=[-15,0,0];[x,minF]=linprog(f,A,b) 程序运行结果整理: x 1=0.0000 x 2=2.1429 minF=8.5714 因此minf=F5+4=8.57145+4=5.7143注:Ⅰ.由以上三种方法的运行结果可知,三种方法均可行。

最优化方法课程设计-最优化大作业-用优化算法求解函数最值问题

最优化方法课程设计-最优化大作业-用优化算法求解函数最值问题

最优化方法大作业---------用优化算法求解函数最值问题摘要最优化(optimization) 是应用数学的重要研究领域.它是研究在给定约束之下如何寻求某些因素(的量),以使某一(或某些)指标达到最优的一些学科的总称。

最优化问题一般包括最小化问题和最大化问题,而最大化问题可以通过简单的转化使之成最最小化问题。

最小化问题分为两类,即约束最小化和无约束最小化问题。

在此报告中,前两个问题属于无约束最小化问题的求解,报告中分别使用了“牛顿法”和“共轭梯度法”。

后两个问题属于有约束最小化问题的求解,报告中分别用“外点法”和“内点法”求解。

虽然命名不一样,其实质都是构造“惩罚函数”或者“障碍函数”,通过拉格朗日乘子法将有约束问题转化为无约束问题进行求解。

再此报告中,“外点法”和“内点法”分别用了直接求导和调用“牛顿法”来求解无约束优化问题。

在此实验中,用“共轭梯度法”对“牛顿法”所解函数进行求解时出现错误,报告中另取一函数用“共轭梯度法”求解得到正确的结果。

此实验中所有的函数其理论值都是显见的,分析计算结果可知程序正确,所求结果误差处于可接受范围内。

报告中对所用到的四种方法在其使用以前都有理论说明,对“外点法”中惩罚函数和“内点法”中障碍函数的选择也有相应的说明,另外,对此次试验中的收获也在报告的三部分给出。

本报告中所用程序代码一律用MATLAB编写。

【关键字】函数最优化牛顿法共轭梯度法内点法外点法 MATLAB一,问题描述1,分别用共轭梯度发法和牛顿法来求解一下优化问题()()()()()441432243221102510min x x x x x x x x x f -+-+-++=2, 分别用外点法和内点发求解一下优化问题⎩⎨⎧≥-++01.min 212231x x t s x x二、问题求解1.1 用牛顿法求解()()()()()441432243221102510min x x x x x x x x x f -+-+-++=1.1.1问题分析:取步长为1而沿着牛顿方向迭代的方法称为牛顿法,在牛顿法中,初始点的取值随意,在以后的每次迭代中,()[]()k k k k x f x f x x ∇∇-=-+121,直到终止条件成立时停止。

机械优化设计大作业

机械优化设计大作业

一、问题描述1.1结构特点(1)体积小、重量轻、结构紧凑、传递功率大、承载能力高;(2传)动效率高,工作高;(3)传动比大。

1.2用途和使用条件某行星齿轮减速器主要用于石油钻采设备的减速,其高速轴转速为1300r/min;工作环境温度为-20°C〜60°C,可正、反两向运转。

按该减速器最小体积准则,确定行星减速器的主要参数。

二、分析传动比u=4・64,输入扭矩T=1175・4N・m,齿轮材料均选用38SiMnMo钢,表面淬火硬度HRC45〜55,行星轮个数为3。

要求传动比相对误差A u<0.02。

弹性影响系数Z E=189.8MPa i/2;载荷系数k=1.05;齿轮接触疲劳强度极限[°]H=1250MPa;齿轮弯曲疲劳强度极限[。

]F=1000MPa;齿轮的齿形系数Y Fa=2・97;应力校正系数Y Sa=1.52;小齿轮齿数z取值范围17--25;模数m取值范围2—6。

注:优化目标为太阳轮齿数、齿宽和模数,初始点[24,52,5]T三、数学建模建立数学模型见图1,即用数学语言来描述最优化问题,模型中的数学关系式反映了最优化问题所要达到的目标和各种约束条件。

3.1设计变量的确定影响行星齿轮减速器体积的独立参数为中心轮齿数、齿宽、模数及行星齿轮的个数,将他们列为设计变量,即:x=[xxxx]T=[zbmc]T[1]12341式中:Z]_太阳轮齿数;b—齿宽(mm);m一模数(mm);行星轮的个数。

通常情况下,行星轮个数根据机构类型以事先选定,由已知条件c=3。

这样,设计变量为:x=[xxx]T=[Z bm】T[i]12313.2目标函数的确定为了方便,行星齿轮减速器的重量可取太阳轮和3个行星轮体积之和来代替,即:V=n/4(d2+Cd2)b12式中:d「-太阳轮1的分度圆直径,mm;d2--行星轮2的分度圆直径,mm。

将d=mzd=mz,z=z(u—2)/2代入(3)式整理,目标函11,2221数则为:F(x)=0.19635m2z2b[4+(u-2)2c][1]式中U--减速器传动比;C--行星轮个数由已知条件c=3,u=4.64,因此目标函数可简化为:F(x)=4.891x2x2x3123.3约束条件的建立3.3.1限制齿宽系数b/m的范围5W b/m W17,得:g(x)=5x—xWO[1]132g(x)=x—17WO[1]223.3.2保证太阳轮z1不发生跟切,得:g(x)=17—xWO[1]313.3.3限制齿宽最小值,得:g(x)=10—xWO】i]423.3.4限制模数最小值,得:g(x)=2—xWO】i]533.3.5按齿面接触疲劳强度条件,有:g(x)=750937.3/(xxx1/2)—[o]W0〔i]6123H式中:[。

小学四年级奥数竞赛班作业第39讲:统筹与最优化

小学四年级奥数竞赛班作业第39讲:统筹与最优化
4. 一人理发时,其他人需等待,为使总的等待时间尽量短,应让理发所需时间少的人先 理.甲先给需 10 分钟的人理发,然后 15 分钟的,最后 24 分钟的;乙先给需 12 分钟的 人理发,然后 20 分钟的,甲给需 10 分钟的人理发时,有 2 人等待,占用三人的时间和 为(10 3 )分;然后,甲给需 15 分钟的人理发,有 1 人等待,占用两人的时间和为(15 2 ) 分;最后,甲给需 24 分钟的人理发,无人等待.甲理发的三个人,共用(103 15 2 24 ) 分 , 乙 理 发 的 两 个 人 , 共 用 ( 12 2 20 ) 分 . 总 的 占 用 时 间 为 (103 15 2 24)(12 2 20)128(分).
5. 有一家五口人要在夜晚过一座独木桥.他们家里的老爷爷行动非常不便,过桥需要 12 分钟;孩子们的父亲贪吃且不爱运动,体重严重超标,过河需要时间也较长,8 分钟; 母亲则一直坚持劳作,动作还算敏捷,过桥要 6 分钟;两个孩子中姐姐需要 3 分钟,弟
1
弟只要 1 分钟.当时正是初一夜晚又是阴天,不要说月亮,连一点星光都没有,真所谓 伸手不见五指.所幸的是他们有一盏油灯,同时可以有两个人借助灯光过桥.但要命的 灯油将尽,这盏灯只能再维持 30 分钟了!他们焦急万分,该怎样过桥呢?
A1 C
B
A2
A5
A6
D
F
E
公路
A3 A4 A7
5
答案: 1. 在不浪费时间的情况下:两张饼可同时煎完,三张饼也可以:首先 A,B 的正面,然后拿
走 A,煎 B 的反面和 C 的正面,然后拿走 B,煎 A,C 的反面. 2009 21003 3,完全可 以不浪费时间煎完,从而所需时间为: 2009 2 2 2009 分钟.
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

最优化方法大作业---------用优化算法求解函数最值问题摘要最优化(optimization) 是应用数学的重要研究领域.它是研究在给定约束之下如何寻求某些因素(的量),以使某一(或某些)指标达到最优的一些学科的总称。

最优化问题一般包括最小化问题和最大化问题,而最大化问题可以通过简单的转化使之成最最小化问题。

最小化问题分为两类,即约束最小化和无约束最小化问题。

在此报告中,前两个问题属于无约束最小化问题的求解,报告中分别使用了“牛顿法”和“共轭梯度法”。

后两个问题属于有约束最小化问题的求解,报告中分别用“外点法”和“内点法”求解。

虽然命名不一样,其实质都是构造“惩罚函数”或者“障碍函数”,通过拉格朗日乘子法将有约束问题转化为无约束问题进行求解。

再此报告中,“外点法”和“内点法”分别用了直接求导和调用“牛顿法”来求解无约束优化问题。

在此实验中,用“共轭梯度法”对“牛顿法”所解函数进行求解时出现错误,报告中另取一函数用“共轭梯度法”求解得到正确的结果。

此实验中所有的函数其理论值都是显见的,分析计算结果可知程序正确,所求结果误差处于可接受范围内。

报告中对所用到的四种方法在其使用以前都有理论说明,对“外点法”中惩罚函数和“内点法”中障碍函数的选择也有相应的说明,另外,对此次试验中的收获也在报告的三部分给出。

本报告中所用程序代码一律用MATLAB编写。

【关键字】函数最优化牛顿法共轭梯度法内点法外点法 MATLAB一,问题描述1,分别用共轭梯度发法和牛顿法来求解一下优化问题()()()()()441432243221102510min x x x x x x x x x f -+-+-++=2, 分别用外点法和内点发求解一下优化问题⎩⎨⎧≥-++01.min 212231x x t s x x二、问题求解1.1 用牛顿法求解()()()()()441432243221102510min x x x x x x x x x f -+-+-++=1.1.1问题分析:取步长为1而沿着牛顿方向迭代的方法称为牛顿法,在牛顿法中,初始点的取值随意,在以后的每次迭代中,()[]()k k k k x f x f x x ∇∇-=-+121,直到终止条件成立时停止。

1.1.2 问题求解注:本程序编程语言为MATLAB ,终止条件为()162110-≤∇x f ,初始取值为[10 10 10 10]M 文件(求解函数)如下:function s=newton1(f,c,eps)%c 是初值,eps 为允许误差值 if nargin==2 eps=1.0e-16; elseif nargin<1 error('') % return endsyms x1 x2 x3 x4x=[x1 x2 x3 x4].';grad = jacobian(f).';hesse = jacobian(grad);a=grad;b=hesse;i=1;gradk=subs(a,[x1 x2 x3 x4],[c(1) c(2) c(3) c(4)]); hessek=subs(b,[x1 x2 x3 x4],[c(1) c(2) c(3) c(4)]);pk=-1*(hessek\gradk);x=tihuan(c);while norm(gradk)>=epsx=x+pk;gradk=subs(a,[x1 x2 x3 x4],[x(1) x(2) x(3) x(4)]); hessek=subs(b,[x1 x2 x3 x4],[x(1) x(2) x(3) x(4)]); pk=-hessek\gradk;i=i+1;enddisp('the times of iteration is:')disp(i)disp('The grad is:')disp(gradk)disp('and the result is:')x=x.';disp(x)return“tihuan”子函数:function x=tihuan(x)x(1)=x(1);x(2)=x(2);x(3)=x(3);x(4)=x(4);end调用方式如下:syms x1 x2 x3 x4f=(x1+10*x2)^2+5*(x3-x4)^2+(x2-2*x3)^4+10*(x1-x4)^4;c=[10 10 10 10]';%初始值newton1(f,c,eps);1.1.3 计算结果如下:由上述结果可知,当迭代次数达到47次时满足终止条件,此时x 为1.0e-005 * [-0.1111 0.0111 0.0095 0.0095], 显然,此题的理论解为[0 0 0 0],分析上述结果,与理论解的误差处于可接受范围之内。

求解完成。

1.2 用共轭梯度法求解函数()()()()()441432243221102510min x x x x x x x x x f -+-+-++=用共轭梯度法求解上述函数的程序代码如下:1.2.1问题分析: 取()00x f p -∇=,当搜索到1+k x 时,共轭方向()2,...,1,0,11-=+-∇=++n k p x f p k k k k λ,此时,1+k p 与k p A 共轭,用k Ap 右乘上式得()kTk k k k k k Ap p Ap x f Ap p λ+-∇=++11,由1=+k Tk Ap p 得()2,...,1,01-=∇=+n k Ap p Ap x f kT p kTk k λ,若不满足条件,进行下一次迭代。

1.1.2 问题求解注:程序所用语言为MATLAB ,精度为1610-=epssyms x1 x2 x3 x4 t0 t1f=(x1+10*x2)^2+5*(x3-x4)^2+(x2-2*x3)^4+10*(x1-x4)^4;c=[10;10;10;10];grad1 = diff(f,x1);grad2=diff(f,x2);grad3 = diff(f,x3);grad4=diff(f,x4);grad=[grad1;grad2;grad3;grad4];a=grad;i=1;n=40;gradk=subs(a,[x1 x2 x3 x4],[c(1) c(2) c(3) c(4)]);x=tihuan(c);p0=0;while norm(gradk)>=epsp0=-gradk;y=x;x=x+t0*p0;k=0;gradk=subs(a,[x1 x2 x3 x4],[x(1) x(2) x(3) x(4)]);w=solve(gradk(1)+gradk(2)+gradk(3)+gradk(4));t0=real(w);t0=eval(t0);t0=t0(1);x=y+t0*p0;gradk=subs(a,[x1 x2 x3 x4],[x(1) x(2) x(3) x(4)]);while norm(gradk)>=epsif k+1~=ngradk2=subs(a,[x1 x2 x3 x4],[x(1) x(2) x(3) x(4)]); gradk1=subs(a,[x1 x2 x3 x4],[y(1) y(2) y(3) y(4)]); lamda=norm(gradk2).^2/norm(gradk1).^2;p0=-gradk2+lamda*p0;k=k+1;elsek=0;p0=-subs(a,[x1 x2 x3 x4],[x(1) x(2) x(3) x(4)]); endclear y; y=x;x=x+t1*p0;gradk=subs(f,[x1 x2 x3 x4],[x(1) x(2) x(3) x(4)]);m=solve(gradk);t1=real(m); t1=eval(t1(1));x=x+t1*p0;x=eval(x);clear m;clear t1;syms t1gradk=subs(a,[x1 x2 x3 x4],[x(1) x(2) x(3) x(4)]);enddisp(x.') return; enddisp(x.')此程序为一初步程序,假设初值为[10;10;10;10],则第一次运算得t0=0.0011,lamda=0.9291,迭代后的x=NaN 。

现用共轭梯度法求解另一函数 ()222125min x x x f +=对上述程序稍加改动来求解本题的代码如下: 注:程序所用语言为MATLAB ,精度为1610-=epsfunction s=gongegrad2(f,c,eps) %c 是初值,eps 为允许误差值 if nargin==2%eps=1.0e-16; elseif nargin<1 error('') return end ticsyms x1 x2 t0 t1 grad1 = diff(f,x1); grad2=diff(f,x2); grad=[grad1;grad2]; a=grad; i=1;n=40;gradk=subs(a,[x1 x2],[c(1) c(2)]); x=tihuan(c); p0=0;while norm(gradk)>=eps p0=-gradk; y=x;x=x+t0*p0; k=0;gradk=subs(f,[x1 x2],[x(1) x(2)]); w=solve(gradk); t0=real(w); t0=eval(t0); t0=t0(1); x=y+t0*p0;gradk=subs(a,[x1 x2],[x(1) x(2)]);while norm(gradk)>=epsif k+1~=ngradk2=subs(a,[x1 x2],[x(1) x(2)]);gradk1=subs(a,[x1 x2],[y(1) y(2)]);lamda=norm(gradk2)^2/norm(gradk1)^2;p0=-gradk2+lamda*p0;k=k+1;elsek=0;p0=-subs(a,[x1 x2],[x(1) x(2)]);endclear y; y=x;x=x+t1*p0;gradk=subs(f,[x1 x2],[x(1) x(2)]);m=solve(gradk);t1=real(m); t1=eval(t1(1));x=y+t1*p0;clear m;clear t1;syms t1gradk=subs(a,[x1 x2],[x(1) x(2)]);enddisp(sprintf('the last point we want is [%f %f]',x(1),x(2))); disp(sprintf('the times used to recursion is %f',k));disp(sprintf('the function value is %f',x(1)^2+25*x(2)^2));tocreturn;enddisp(sprintf('the last point we want is [%f %f]',x(1),x(2))); disp(sprintf('the times used to recursion is %f',k));disp(sprintf('the function value is %f',x(1)^2+25*x(2)^2)); toc“tihuan”子函数为:function x=tihuan(x)[v,g]=size(x);for i=1:vx(i)=x(i);end程序调用方式为:clear allclcsyms x1 x2 t0 t1f=x1^2+25*x2^2;c=[2;2];%初值gongegrad2(f,c,eps)程序结果如下:由上述结果知,用共轭梯度法对上述函数求解需要迭代三次得到最优解0,此时x 为[0 0];符合理论分析的结果,求解完成。

相关文档
最新文档