一、实验目的:

1. 练习建立实际问题的非线性规划模型;

2. 掌握用MATLAB 优化工具箱解非线性规划的方法,会利用fmincon、fminbnd、fminunc、fminsearch函数求解非线性规划问题;

3. 实验从算法思想、实验步骤与程序、运行结果、结果分析与讨论等几方面完成;

4. 预习非线性规划的基本理论内容,及利用数学软件优化工具箱函数选用的内容。

二、实验内容

  1. 题目:求解非线性规划:

 

程序代码:

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

  1. 题目:对边长为3米的正方形铁板,在4个角处剪切相等的正方形以制成方形无盖水槽,问如何剪法使水槽的容积最大?

数学模型:

 

程序代码:

model:

  max=(3-2*x)*(3-2*x)*x;

  x<1.5;

end

程序执行结果:

结果解释:

x=0.5时,该非线性规划取得全局最优解2,即当四边分别减去边长为0.5m的正方形铁皮时,即水槽最大容量为2立方米。

  1. 题目:卡隆(Carron)化学公司的年轻工程师R 和D 合成了一种轰动

一时的新肥料,只用两种基本原料来制造. 公司想利用这个机会生产尽可能多的这种新肥料,公司目前有资金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份。

  1. 题目:求下列函数最小值

 

程序代码:

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)

分析与讨论:

  1. 总结非线性规划问题的求解方法及求解过程。

目前我们学过的方法主要有以下三种,其过程如下:

  1. 单纯形法是一种用来求解线性规划问题的方法,对于非线性规划问题,需要利用其他算法进行预处理,然后再采用单纯形法来进行计算。以下是单纯形法求解非线性规划问题的过程:

预处理->确定初始可行解->确定单纯形表格->选择入基变量与出基变量->计算更新单纯形表格->判断优化终止条件->输出最优解

  1. 梯度下降法:梯度下降法是基于目标函数的梯度信息进行优化的方法,通过更新变量使目标函数值不断降低。具体步骤包括初始化变量,计算梯度,更新变量,重复迭代直至收敛。

- 初始化参数向量θ,设置学习率α和迭代次数T

- 循环执行以下操作,直到收敛:

- 计算当前参数向量θ的梯度g

- 更新θ:θ=θα*g

- 当损失函数收敛或达到最大迭代次数时停止循环

  1. 牛顿法:牛顿法是基于目标函数的二阶导数信息进行优化的方法,能够更快地收敛。具体步骤包括初始化变量,计算目标函数的一阶和二阶导数,求解方程组得到变量更新值,重复迭代直至收敛。

- 初始化参数向量θ,设置迭代次数T

- 循环执行以下操作,直到收敛:

- 计算当前参数向量θ的梯度g和海森矩阵Hess

- 计算步长d=-inv(Hess)*g,其中inv为矩阵的逆操作

- 更新θ:θ=θ+d

- 当损失函数收敛或达到最大迭代次数时停止循环

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐