一、线性规划的概 念
Download
1 / 34

实验七 最优化方法 - PowerPoint PPT Presentation


  • 135 Views
  • Uploaded on

一、线性规划的概 念. 二、线性规划的图解法. 三、用 MATLAB 优化工具箱解线性规划. 四、整数规划. 实验七 最优化方法. 实验 7.1 线性规划. 设计化生产甲产品 件 ,乙产品 件,满足条件. 且使 达到最大. 一、线性规划的概 念. 例 1 资源的最佳利用问题:某工厂有 A 、 B 、 C 、 D 四种机床,可生产甲、乙两种产品.一件产品需经各台机床加工的时间和利润情况如表所示,问如何安排生产才能使得到的利润最高?.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' 实验七 最优化方法' - mandek


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

一、线性规划的概 念

二、线性规划的图解法

三、用MATLAB优化工具箱解线性规划

四、整数规划

实验七 最优化方法

实验7.1 线性规划


设计化生产甲产品 件 ,乙产品 件,满足条件

且使 达到最大

一、线性规划的概 念

例1资源的最佳利用问题:某工厂有A、B、C、D四种机床,可生产甲、乙两种产品.一件产品需经各台机床加工的时间和利润情况如表所示,问如何安排生产才能使得到的利润最高?


设由砖厂 件,满足条件Ai运往工地Bj的运量为 (单位:万块),问题的数学模型为:求 的值,要求满足条件:

且使 具有最小值。

例2运输问题:设有两个砖厂A1、A2,生产砖产量分别为23万块与27万块,将砖供应B1、B2、B3三个工地,其需要量分别为17万块、18万块和15万块,自产地到工地的运价如表所示


以上两个例子,虽然有着不同的实际内容,但它们都具有三个共同的特征:以上两个例子,虽然有着不同的实际内容,但它们都具有三个共同的特征:

① 需要确定一组变量的值,这些变量通常称为决策变量,简称变量,它们通常是非负的.

② 对于决策变量,存在着可用一组线性等式或不等式来表达的限制条件,这些条件称为约束条件.

③ 有一个可以表示为决策变量的线性函数的目标要求,这一函数称为目标函数.按问题的不同要求,可要求目标函数达到最大值或最小值.

在线性约束条件下,要求一组决策变量的值,使线性目标函数达到最大值或最小值的问题,就叫做线性规划问题,常用符号LP(Linear Programming )表示。


线性规划的一般数学模型为:以上两个例子,虽然有着不同的实际内容,但它们都具有三个共同的特征:求决策变量

的一组值,满足约束条件

使目标函数

达到所要求的最小值maxz或最小值minz.

也称非负条件,有时对某些变量没有非负要求,cj 称为价值系数,满足约束条件的决策变量的一组值,称为线性规划的可行解,使目标函数达到所要求的最大值或最小值的可行解,成为线性规划的最优解,也就是线性规划的解,其线性规划的解的过程叫做解线性规划。


标准形式以上两个例子,虽然有着不同的实际内容,但它们都具有三个共同的特征:

矩阵形式


以上两个例子,虽然有着不同的实际内容,但它们都具有三个共同的特征:1 约束条件

目标函数

二、线性规划的图解法

解:如图可行域:OABCD

当红线移动到B(4,2)时,z 达到最大值14

注:线性规划有唯一解、无穷解或无解这三种情况.对于决策变量两个以上的线性规划就不能用图解法,最常用、最有效的算法之一是单纯形方法。


模型以上两个例子,虽然有着不同的实际内容,但它们都具有三个共同的特征:1

命令

x=linprog(c,A,b)

模型2

命令

x=linprog(c,A,b,Aeq,beq)

三、用MATLAB优化工具箱解线性规划

注:若没有不等式Ax≤b存在,则令A=[ ],b=[ ]


模型以上两个例子,虽然有着不同的实际内容,但它们都具有三个共同的特征:3

命令

x=linprog(c,A,b,Aeq,beq,VLB,VUB)

x=linprog(c,A,b,Aeq,beq,VLB,VUB,X0)

[x,fval=linprog(…)返回最优解x及x处的目标函数值fval

注:1.若没有等式约束Aeqx=beq,则令Aeq=[ ],

beq=[ ]

2.其中X0表示初始点


以上两个例子,虽然有着不同的实际内容,但它们都具有三个共同的特征:1

且使 达到最大

A=[1 1;1 2;1 0;0 1];

b=[6,8,4,3];

c=-[2,3];

A1=[];

b1=[];

v1=[0,0];

x=linprog(c,A,b,A1,b1,v1) ↙

Optimization terminated.

x =

4.0000

2.0000

[x,fval]=linprog(c,A,b,A1,b1,v1) ↙

Optimization terminated.

x =

4.0000

2.0000

fval =

-14.0000


且使 具有最小值。

例2

x =

0

8.0000

15.0000

17.0000

10.0000

0

z =

3.6500e+003

a=[1,1,1,0,0,0;0,0,0,1,1,1;1,0,0,1,0,0;0,1,0,0,1,0;0,0,1,0,0,1];

b=[23,27,17,18,15];

c=[50,60,70,60,110,160];

v1=zeros(1,6);

[x,feval]=linprog(c,[],[],a,b,v1) ↙


具有最小值。3解线性规划

目标函数

a=[-2,1;1,-1];

b=[4,2];

c=-[1,1];

v1=[0,0];

x=linprog(c,a,b,[ ],[ ],v1) ↙

Exiting: One or more of the residuals, duality gap, or total relative error has stalled:

the dual appears to be infeasible (and the primal unbounded).

(The primal residual < TolFun=1.00e-008.)

x =

1.0e+009 *

1.4007

2.8007

表明此线性规划无最优解


四、整数规划 具有最小值。

当线性规划中要求决策变量为整数解时,称为整数规划,MATLAB中没有解整数规划的命令,但可以先解线性规划,再在它的最优解附近试探。

例4某服务部门一周中每天需要不同数目的雇员:周一到周四每天至少50人,周五和周日每天至少80人,周六至少90人.现规定应聘者需连续工作5天,试确定聘用方案,即周一到周日每天聘用多少人,使在满足需要的条件下聘用总人数最少.如果周日的需求量由80增至90人,方案怎样改变.

解:先考虑只聘用全时雇员的方案,设周一到周日每天聘用的人数为x1,x2,…,x7,由于每人连续工作5天,所以周一工作的雇员应是周四到周一聘用的,按照需要至少50人,于是


Optimization terminated. 具有最小值。

x =

0.0000

10.0000

30.0000

10.0000

30.0000

10.0000

0.0000

fval =

90.0000

c=ones(1,7);

a=ones(7);

a1=triu(a,1);a3=triu(a,3);a5=tril(a,-5);

A=-(a-a1+a3-a5);

b=-[50 50 50 50 80 90 80];

v1=zeros(1,7);

[x,fval]=linprog(c,A,b,[],[],v1)↙

即周二、四、六各聘用10人,三、五各聘用30人,共聘用90人。


如果周日的需求量由 具有最小值。80人增至90人,计算结果为

x =

0.0000

3.3333

33.3333

10.0000

33.3333

10.0000

3.3333

fval =

93.3333

必须处理出现小数的问题,若将小数全部进位,聘用方案为(0,4,34,10,34,10,4),共96人,这不是最优的,实际上可以发现有只用94人的方案:(0,3,34,10,34,10,3)或(0,4,33,10,33,10,4).


实验任务 具有最小值。

1.某厂用两台机床加工三种零件,情况如下表所示,问怎样安排两台机床一个生产周期的加工任务,才能使加工成本最低?


2. 具有最小值。有四个煤产地A1,A2,A3,A4,今年产量(单位:万吨)分别为35,45,55,65;有6个销地B1~B6 ,今年销量分别为40,20,30,40,30,40,预计明年6个销地的销量各增加5万吨。计划部门为了使产销平衡,打算增加年产30万吨的采煤设备,把它分别拨给煤产地A1,A2,A3,A4使用,因此增加了生产成本(单位:万元)分别为20,30,15,25。问应将这套设备拨给哪个产地能使增加的总成本(生产成本和运输成本)最低?运价如下表:


一、非线性规划的概念 具有最小值。

二、二次规划

三、无约束非线性规划

四、带约束非线性规划

实验7.2 非线性规划


一、非线性规划的概念 具有最小值。

如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划问题,一般来说,解非线性规划要比解线性规划问题困难得多,非线性规划目前还没有适于各种问题的一般算法,各个方法都有自己特定的适用范围。

我们先来讨论最简单的非线性规划——二次规划


二、二次规划 具有最小值。

二次规划(Quadratic Programming ,记作QP)指目标函数是二次函数,约束条件为线性的,其一般形式为:

其中,x,A,b,Aeq,beq与线性规划相同;H为n 阶对称矩阵。


具有最小值。1求解

解二次规划的命令:

x=quadprog (H,c,A,b)

x=quadprog (H,c,A,Aeq,beq)

x=quadprog (H,c,A, Aeq,beq,VLB,VUB)

x=quadprog (H,c,A, Aeq,beq,VLB,VUB,X0)

[x,fval] =quadprog (H,c,A,b,…)


H=[1,-1;-1,2]; 具有最小值。

c=[-2,-6];

A=[-1,2;2,1];b=[2;3];

Aeq=[1,1];beq=[2];VLB=[0,0];VUB=[];

[x,z]=quadprog(H,c,A,b,Aeq,beq,VLB,VUB)↙

Optimization terminated.

x =

0.6667

1.3333

z =

-8.2222


三、无约束非线性规划 具有最小值。

无约束非线性规划的一般形式是

其中 f 可以是非线性的,这实际上就是多元函数极值问题

1.求单变量有界非线性函数在区间上的极小值

[x,fval]=fminbnd(fun,x1,x2,options)

它的返回值是极小点 x 和函数的极小值,这里fun是用M文件定义的函数或MATLAB中的单变量数学函数.


具有最小值。[0,8]上的最大值与最小值.

例2求

解先编写文件“f.m”定义函数:

function y=f(x)

y=2*exp(-x)*sin(x);

在MATLAB命令窗口中输入:

[xmin,ymin]=fminbnd('f',0,8) ↙

xmin =

3.9270

ymin =

-0.0279


要求最大值,只需对 具有最小值。-f(x)求最小值

f1='-2*exp(-x).*sin(x)';

[xmax,ymax]=fminbnd(f1,0,8) ↙

xmax =

0.7854

ymax =

-0.6448

故最大值为0.6448,最小值为-0.0279


2. 具有最小值。求多变量函数的极小值

[x,fval]=fminunc(fun,x0,options,p1,p2,…)

它的返回值是向量x的值和函数的极小值。fun是一个M文件,x0是向量x的初始值,options是优化参数,p1,p2是可以传递给fun 的一些参数。


具有最小值。3求最小值

解 编写M文件

function f=fun1(x)

f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);

x0=[-1,1];

x=fminunc(‘fun1’,x0) ↙

x =

0.5000 -1.0000

y=fun1(x) ↙

y =

1.4644e-015


四、带约束非线性规划 具有最小值。

带有约束条件的极值问题称为约束极值问题,也叫约束规划问题。

带约束非线性规划的一般形式为

标准型为


具有最小值。4求

用MATLAB解非线性规划的一般步骤是

(1)建立M文件,定义目标函数

(2)若约束条件中有非线性约束:C(x)<=0或Ceqx=0,则建立M文件定义函数C(x)与Ceq(x)

(3)建立主程序,非线性规划求解的函数是fmincon


具有最小值。 先建立M文件fun1.m,定义目标函数

function f=fun1(x)

f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);

再建立M文件mycon.m,定义非线性约束

function [g,ceq]=mycon(x)

g=[1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10];

ceq=0;

主程序为

x0=[-1,1];A=[];b=[];

Aeq=[1,1];beq=[0];

vlb=[];vub=[];

[x,fval]=fmincon('fun1',x0,A,b,Aeq,beq,vlb,vub,'mycon') ↙


x = 具有最小值。

-1.2247 1.2247

fval =

1.8951


实验任务 具有最小值。

1.求极值

2.对边长为3米的正方形铁板,在四个角剪去相等的正方形以制成无盖水槽,问如何剪法是水槽的容积最大?

3.解下列二次规划


选作 具有最小值。:求解非线性规划


ad