最优化方法(基于lingo)之 求解非线性规划问题(5/6)
问题描述:飞机在飞行过程中,能够收到地面上各个监控台发来的关于飞机当前位置的 信息,根据这些信息可以比较精确地确定飞机的位置。启动 LINGO 的全局最优求解程序求解(即点击solver->options->Global Solver->点击Use Global Solver),得到全局最优解 x=978.3071,y= 723.9841,对应的目标函数的值为 0.668035。(从图中可以看出,
一、实验目的: 1. 练习建立实际问题的非线性规划模型; 2. 掌握用MATLAB 优化工具箱解非线性规划的方法,会利用fmincon、fminbnd、fminunc、fminsearch函数求解非线性规划问题; 3. 实验从算法思想、实验步骤与程序、运行结果、结果分析与讨论等几方面完成; 4. 预习非线性规划的基本理论内容,及利用数学软件优化工具箱函数选用的内容。 | ||
二、实验内容
程序代码: model: min=x1^2+x2^2+x3^2+8; x1^2+x2^2+x3^2>0; x1+x2^2+x3^3<20; -x1-x2^2+x=0; x2+2*x3^2=3; end 程序执行结果: 结果解释: 当x1=0,x2=0.25,x3=1.172605时,该非线性规划求得全局最优解 为9.437502
数学模型:
程序代码: model: max=(3-2*x)*(3-2*x)*x; x<1.5; end 程序执行结果: 结果解释: x=0.5时,该非线性规划取得全局最优解2,即当四边分别减去边长为0.5m的正方形铁皮时,即水槽最大容量为2立方米。
一时的新肥料,只用两种基本原料来制造. 公司想利用这个机会生产尽可能多的这种新肥料,公司目前有资金40000美元,可购买单价分别为8000美元的原料A和5000美元的原料B. 当用数量为x1和x2两种原料合成时,肥料的数量Q 由下式给出: Q =4x1+2x2-0.5x12 -0.25x22 试确定购买原料的计划,使合成肥料的数量最多. 数学模型:
程序代码: model: max=4*x1+2*x2-0.5*x1^2-0.25*x2^2; 8000*x1+5000*x2<40000; @gin(x1);@gin(x2); end 程序执行结果: 结果解释: 当x1=3,x2=3时,该非线性规划取得全局最优解11.25。即当原料A买3份,原料B买3份时,最多可合成肥料11.25份。
程序代码: min=3*(x1^2)+2*x1*x2+x2^2; 程序执行结果: 结果解释: 当x1=x2=0时,函数取得最小值0。 题目:验证书P466例题7.1.2 飞机的精确定位。问题描述:飞机在飞行过程中,能够收到地面上各个监控台发来的关于飞机当前位置的 信息,根据这些信息可以比较精确地确定飞机的位置。如图3所示,VOR 是高频多向导航设备的英文缩写,它能够得到飞机与该设备连线的角度信息;DME 是距离测量装 置的英文缩写,它能够得到飞机与该设备的举例信息。图中飞机接收到来自 3 个 VOR 给出的角度和 1 个 DME 给出的距离(括号内是测量误差限),并已知这 4 种设备的 x, y 坐标(假设飞机和这些设备在同一平面上)。如何根据这些信息精确地确定当前飞机的位置? 数学模型: 记 4 种设备 VOR1、VOR2、VOR3、DME 的坐标为 (x,y)(以 km 为单位),i=1,2,3,4 ;VOR1、VOR2、VOR3 测量得到的角度为(从图中可以看出,按照航空飞行管理的惯例,该角度是从北开始,沿顺时针方向的角度,取值在 之间),角度的误差限为,i=1,2,3,4;DME 测量得到的距离为(单位:km),距离的误差限为 。飞机当前位置的坐标为 ,则:
程序代码: MODEL: SETS: VOR/1..3/:x0,y0,cita,sigma,alpha; ENDSETS INIT: x=1000; y=900; ENDINIT DATA: x0, y0, cita, sigma = 746 1393 161.2 0.8 629 375 45.1 0.6 1571 259 309.0 1.3; x4 y4 d4 sigma4=155,987,864.3,2.0; ENDDATA calc: @for(VOR:cita=cita*3.14159/180;sigma=sigma*3.14159/180); endcalc min=@sum(VOR:((alpha-cita)/sigma)^2)+((d4-((x-x4)^2+(y-y4)^2)^.5 )/ sigma4 )^2; @for(VOR: @tan(alpha)=(x-x0)/(y-y0) ); END 程序执行结果: 结果解释: 启动 LINGO 的全局最优求解程序求解(即点击solver->options->Global Solver->点击Use Global Solver),得到全局最优解 x=978.3071,y= 723.9841,对应的目标函数的值为 0.668035。说明飞机的最优位置为(978.3071,723.9841) | ||
分析与讨论:
目前我们学过的方法主要有以下三种,其过程如下:
预处理->确定初始可行解->确定单纯形表格->选择入基变量与出基变量->计算更新单纯形表格->判断优化终止条件->输出最优解
- 初始化参数向量θ,设置学习率α和迭代次数T - 循环执行以下操作,直到收敛: - 计算当前参数向量θ的梯度g - 更新θ:θ=θ−α*g - 当损失函数收敛或达到最大迭代次数时停止循环
- 初始化参数向量θ,设置迭代次数T - 循环执行以下操作,直到收敛: - 计算当前参数向量θ的梯度g和海森矩阵Hess - 计算步长d=-inv(Hess)*g,其中inv为矩阵的逆操作 - 更新θ:θ=θ+d - 当损失函数收敛或达到最大迭代次数时停止循环 |
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)