运用MATLAB解决优化问题的研究.docx

上传人:b****0 文档编号:12847038 上传时间:2023-04-22 格式:DOCX 页数:18 大小:36.91KB
下载 相关 举报
运用MATLAB解决优化问题的研究.docx_第1页
第1页 / 共18页
运用MATLAB解决优化问题的研究.docx_第2页
第2页 / 共18页
运用MATLAB解决优化问题的研究.docx_第3页
第3页 / 共18页
运用MATLAB解决优化问题的研究.docx_第4页
第4页 / 共18页
运用MATLAB解决优化问题的研究.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

运用MATLAB解决优化问题的研究.docx

《运用MATLAB解决优化问题的研究.docx》由会员分享,可在线阅读,更多相关《运用MATLAB解决优化问题的研究.docx(18页珍藏版)》请在冰豆网上搜索。

运用MATLAB解决优化问题的研究.docx

运用MATLAB解决优化问题的研究

运用MATLAB解决优化问题的研究(四)

摘要

在日常生活和实际工作中,人们对于同一个问题往往会提出多个解决方案,并通过各方面的论证从中提取最佳方案。

最优化方法就是专门研究如何从多个方案中科学、合理的提取出最佳方案的科学。

由于优化问题无所不在,目前最优化方法的应用和研究已经深入到了生产和科研的各个领域,如土木工程、运输调度、生产控制、经济规划、经济管理等并取得了显著地经济效益和社会效益。

用最优化方法解决最优化问题的技术称为最优化技术,它包含两个方面的内容:

(1)建立数学模型即用数学语言来描述最优化问题模型中的数学关系式反应了最优化问题所要达到的目标和各种约束条件。

(2)数学求解数学模型建好以后,选择合理的最优化方法进行求解。

最优化方法的发展很快,现在已经包含有多个分支,如线性规划、非线性规划、无约束最优化问题求解、有约束最优化问题求解、多目标规划等。

关键词:

优化方法;最优化技术;有约束条件;无约束条件;线性规划

 

USINGMATLABOPTIMIZATIONPROBLEMOFRESERCH(FOUR)

ABSTRACT

Indailylifeandinpracticalwork,peopleforthesamequestionoftenwillproposeseveralsolutions,andthroughvariousaspectsoftheargumentextractoptimalscheme.

Anoptimizationmethodisspecializedstudyhowfrommultiplesolutionsinscientificandreasonableextracttheoptimalschemeofscience.Duetotheoptimizationproblemomnipresent,currentlyoptimizationmethodsintheapplicationandresearchesofreachesdeepintoproductionandresearchofeachdomain,suchascivilengineering,transportationscheduling,productioncontrol,economicplanning,economicmanagement,etcandhaveachievedremarkableeconomicbenefitsandsocialbenefits.Withoptimizationmethodtosolveoptimizationproblemoftechnology,calledthemostoptimizationtechnique,itcontainstwoaspectsofcontent:

(1)Establishedthemathematicalmodelwhichmathematicallanguagetodescribethemathematicalrelationshipmodeloptimizationproblemofreactiontotheoptimizationproblemofgoalstoachieveandthatallconstraintconditions.

(2)Mathematicssolvingmathematicalmodelbuiltgoodlater,therationalchoiceofoptimizationalgorithm.

Anoptimizationmethodoffastdevelopment,nowalreadycontainsmultiplebranch,suchaslinearprogramming,nonlinearprogramming,unconstrainedoptimizationproblemsolving,haveconstrainedoptimizationproblemsolving,multi-objectiveprogramming,etc.

Keywords:

optimizationmethod;theoptimumtechnology;abindingcondition;unconstrainedconditions;linearprogramming

 

1概述………………………..……………………………….……………………….1

1.1优化工具箱中的函数…………………………………………………………………1

样张4

1.2优化问题中涉及到的几类问题………………………………………………………..2

2优化问题的求解……………………………………………………………………...3

2.1线性规化问题……..…………………………………………………………..5

2.1.1基本数学原理…………………………………………...…………………….5

2.1.2相关函数介绍………….……………………………………………………6

2.1.3应用实例…………………………………………………………………….6

2.2无约束优化问题求解………........................................................................................7

2.2.1基本数学原理…………………………………………………………….…...7

2.2.2相关函数介绍…………………………………………………………………8

2.2.3应用实例………………………………………………..................................9

2.3有约束优化问题求解………………………………………………………………..10

2.3.1基本数学原理………………………………………………………………...11

2.3.2相关函数介绍………………………………………………………………...12

2.3.3应用实例……………………………………………………………………...13

参考文献……………………………………………………………………………………...18

附录…………………………………………………………………………………………...19

 

1优化问题求解的概述

有了MATLAB这个强大的计算平台,既可以利用MATLAB优化工具(OptimizationToolbox)中的函数,又可以通过对算法编程实现相应的最优化计算。

利用Matlab的优化工具箱,可以求解线性规划、非线性规划和多目标规划问题。

具体而言,包括线性、非线性最小化,最大最小化,二次规划,半无限问题,线性、非线性方程(组)的求解,线性非线性的最小二乘问题。

另外该工具箱还提供了线性、非线性最小化,方程求解,曲线拟合,二次规划等问题中大型课题的求解方法,为优化方法在工程中的实际应用提供了更方便快捷的途径。

1.1优化工具箱中的函数

优化工具箱中的函数包括下面几类:

1.1.1最小化函数

表1-1最小化函数表

函数

描述

fgoalattain

多目标达到问题

fminbnd

有边界的标量非线性

fmincon

有约束的非线性最小化

fminimax

最大最小化

fminsearch

fminunc

无约束非线性最小化

fseminf

半无限问题

linprog

线性课题

 

样张6

 

1.1.2方程求解函数

表1-2方程求解函数表

函数

描述

\

线性方程求解

fsolve

非线性方程求解

fzero

标量非线性方程求解

1.1.3最小二乘(曲线拟合)函数

表1-3最小二乘曲线拟合函数表

函数

描述

\

线性最小二乘

lsqlin

有约束线性最小二乘

lsqcurvefit

非线性曲线拟合

lsqnonlin

非线性最小二乘

lsqnonneg

非负线性最小二乘

1.2优化问题中的涉及到的几类问题:

(1).线性规划问题

(2).无约束最优化问题求解

(3).有约束最优化问题求解

(4).最大最小化问题

2.优化问题的求解

2.1线性规划问题

2.1.1基本数学原理

线性规划是处理线性目标函数和线性约束的一种较为成熟的方法,目前已经广泛应用于军事、经济、工业、农业、教育、商业和社会科学等许多方面。

线性规划问题的标准形式为:

其中f、x、b、beq、lb、ub、为向量,A、Aeq为矩阵。

其它形式的线性规划问题都可以经过适当变化为此标准形式。

在MATLAB6.0版中,线性规划问题(LinearProgramming)已用函数linprog取代了MATLAB5.x版中的lp函数。

当然,由于版本的向下兼容性,一般来说,低版本中的函数在6.0版中任可使用。

线性规划的标准形式要求目标函数最小化,约束条件取等式,变量非负。

不符合这几个条件的线性模型要首先转化成标准形。

线性规划的求解方法主要是单纯形法(SimpleMethod),该法由Dantzig于1947年提出,以后经过多次改进。

单纯形法是一种迭代算法,它从所有基本可行解的一个较小部分中通过迭代过程选出最优解。

其迭代过程的一般描述为:

(1).将线性规划化为典范形式,从而可以得到一个初始基本可行解x(0)(初始顶点),将它作为迭代过程的出发点,其目标值为z(x(0))。

(2).寻找一个基本可行解x

(1),使z(x

(1))≤z(x(0))。

方法是通过消去法将产生x(0)的典范形式化为产生x

(1)的典范形式。

(3).继续寻找较好的基本可行解x

(2),x(3),…,使目标函数值不断改进,即z(x

(1))≥z(x

(2))≥z(x(3))≥…。

当某个基本可行解再也不能被其它基本可行解改进时,它就是所求的最优解。

Matlab优化工具箱中才用的是投影法,它是单纯形法的一种变种。

2.1.2相关函数介绍

函数linprog

格式x=linprog(f,A,b,Aeq,beq)

x=linprog(f,A,b,Aeq,beq,lb,ub)

x=linprog(f,A,b,Aeq,beq,lb,ub,x0)

x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)

[x,fval]=linprog(...)

[x,fval,exitflag]=linprog(...)

[x,fval,exitflag,output]=linprog(...)

[x,fval,exitflag,output,lambda]=linprog(...)

说明x=linprog(f,A,b)求解问题minf'*x,约束条件为A*x≤b。

x=linprog(f,A,b,Aeq,beq)求解上面的问题,但增加等式约束,即Aeq*x=beq。

若没有不等式存在,则令A=[]、b=[]。

x=linprog(f,A,b,Aeq,beq,lb,ub)定义设计变量x的下界lb和上界ub,使得x始终在该范围内。

若没有等式约束,令Aeq=[]、beq=[]。

x=linprog(f,A,b,Aeq,beq,lb,ub,x0)设置初值为x0。

该选项只适用于中型问题,缺省时大型算法将忽略初值。

x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)用options指定的优化参数进行最小化。

[x,fval]=linprog(...)返回解x处的目标函数值fval。

[x,lambda,exitflag]=linprog(...)返回exitflag值,描述函数计算的退出条件。

[x,lambda,exitflag,output]=linprog(...)返回包含优化信息的输出变量output。

[x,fval,exitflag,output,lambda]=linprog(...)将解x处的拉格朗日乘子返回函数值。

变量

lambda参数

lambda参数是解x处的拉格朗日乘子。

它有以下一些属性:

      lambda.lower–lambda的下界。

      lambda.upper–lambda的上界。

      lambda.ineqlin–lambda的线性不等式。

      lambda.eqlin–lambda的线性等式。

2.1.3应用实例

例1工作人员计划安排问题

某昼夜服务的公共交通系统每天各时间段(每4小时为一个时间段)所需的值班人数如表所示,这些值班人员在某一时段开始上班后要连续工作8个小时(包括轮流用膳时间),问该公交系统至少需要多少名工作人员才能满足值班的需要?

表3-1各时段所需值班人数表

班次

时间段

所需人数

1

6:

00—10:

00

60

2

10:

00—14:

00

70

3

14:

00—18:

00

60

4

18:

00—22:

00

50

5

22:

00—2:

00

20

6

2:

00—6:

00

30

设xi为第i个时段开始上班的人员数,据题意建立下面的数学模型:

需要对前面六个约束条件进行形式变换,是不等式为非正不等式。

只需要在不等式两侧取负即可。

首先输入下列系数:

f=[1;1;1;1;1;1];

A=[-10000-1

-1-10000

0-1-1000

00-1-100

000-1-10

0000-1-1];

b=[-60;-70;-60;-50;-20;-30];

lb=zeros(6,1);

然后调用linprog函数:

[x,fval,exitflag,output,lambda]=linprog(f,A,b,[],[],lb);

x=

41.9176

28.0824

35.0494

14.9506

9.8606

20.1394

fval=

150.0000

exitflag=

1

可见,只要六个时段分别安排42人、28人、35人、15人、10人和20人就可以满足值班的需要。

共计150人。

计算收敛。

2.2无约束优化问题求解

2.2.1基本数学原理

无约束线最优化问题的一般描述为

其中,

,该数学表示的含义亦即求取一组x,使得目标函数f(x)为最小,故这样的问题又称为最小化问题。

在实际应用中,许多科学研究和工程计算问题都可以归结为一个最小化问题,如能量最小、时间最短但呢个。

2.2.2相关函数介绍

(1)函数fminbnd

格式x=fminbnd(fun,x1,x2)

x=fminbnd(fun,x1,x2,options)

x=fminbnd(fun,x1,x2,options,P1,P2,...)

[x,fval]=fminbnd(...)

[x,fval,exitflag]=fminbnd(...)

[x,fval,exitflag,output]=fminbnd(...)

说明fminbnd求取固定区间内单变量函数的最小值。

x=fminbnd(fun,x1,x2)返回区间{x1,x2}上fun参数描述的标量函数的最小值x。

x=fminbnd(fun,x1,x2,options)用options参数指定的优化参数进行最小化。

x=fminbnd(fun,x1,x2,options,P1,P2,...)提供另外的参数P1,P2等,传输给目标函数fun。

如果没有设置options选项,则令options=[]。

[x,fval]=fminbnd(...)返回解x处目标函数的值。

[x,fval,exitflag]=fminbnd(...)返回exitflag值描述fminbnd函数的退出条件。

[x,fval,exitflag,output]=fminbnd(...)返回包含优化信息的结构输出。

(2)函数fminsearch

格式x=fminsearch(fun,x0)

x=fminsearch(fun,x0,options)

x=fminsearch(fun,x0,options,P1,P2,...)

[x,fval]=fminsearch(...)

[x,fval,exitflag]=fminsearch(...)

[x,fval,exitflag,output]=fminsearch(...)

说明fminsearch求解多变量无约束函数的最小值。

该函数常用于无约束非线性最优化问题。

x=fminsearch(fun,x0)初值为x0,求fun函数的局部极小点x。

x0可以是标量、向量或矩阵。

x=fminsearch(fun,x0,options)用options参数指定的优化参数进行最小化。

x=fminsearch(fun,x0,options,P1,P2,...)将问题参数p1、p2等直接输给目标函数fun,将options参数设置为空矩阵,作为options参数的缺省值。

[x,fval]=fminsearch(...)将x处的目标函数值返回到fval参数中。

[x,fval,exitflag]=fminsearch(...)返回exitflag值,描述函数的退出条件。

[x,fval,exitflag,output]=fminsearch(...)返回包含优化信息的输出参数output。

(3)函数fminunc

格式x=fminunc(fun,x0)

x=fminunc(fun,x0,options)

x=fminunc(fun,x0,options,P1,P2,...)

[x,fval]=fminunc(...)

[x,fval,exitflag]=fminunc(...)

[x,fval,exitflag,output,grad]=fminunc(...)

[x,fval,exitflag,output,grad,hessian]=fminunc(...)

说明fminunc给定初值,求多变量标量函数的最小值。

常用于无约束非线性最优化问题。

x=fminunc(fun,x0)给定初值x0,求fun函数的局部极小点x。

x0可以是标量、向量或矩阵。

x=fminunc(fun,x0,options)用options参数中指定的优化参数进行最小化。

x=fminunc(fun,x0,options,P1,P2,...)将问题参数p1、p2等直接输给目标函数fun,将options参数设置为空矩阵,作为options参数的缺省值。

[x,fval]=fminunc(...)将解x处目标函数的值返回到fval参数中。

[x,fval,exitflag]=fminunc(...)返回exitflag值,描述函数的输出条件。

[x,fval,exitflag,output]=fminunc(...)返回包含优化信息的结构输出。

[x,fval,exitflag,output,grad]=fminunc(...)将解x处fun函数的梯度值返回到grad参数中。

[x,fval,exitflag,output,grad,hessian]=fminunc(...)将解x处目标函数的Hessian矩阵信息返回到hessian参数中。

2.2.3应用实例

例2求

的最小值。

>>fun='3*x

(1)^2+2*x

(1)*x

(2)+x

(2)^2';

>>x0=[11];

>>[x,fval,exitflag,output,grad,hessian]=fminunc(fun,x0)

结果为:

x=

1.0e-006*

0.2541-0.2029

fval=

1.3173e-013

exitflag=

1

output=

iterations:

8

funcCount:

27

stepsize:

1

firstorderopt:

1.1633e-006

algorithm:

'medium-scale:

Quasi-Newtonlinesearch'

grad=

1.0e-005*

0.1163

0.0087

hessian=

6.00002.0000

2.00002.0000

或用下面的方法:

>>fun=inline('3*x

(1)^2+2*x

(1)*x

(2)+x

(2)^2')

fun=

Inlinefunction:

fun(x)=3*x

(1)^2+2*x

(1)*x

(2)+x

(2)^2

>>x0=[11];

>>x=fminunc(fun,x0)

x=

1.0e-006*

0.2541-0.2029

2.3有约束优化问题求解

2.3.1基本数学原理

有约束最优化问题的一般描述为

其中,

,该数学表示的含义亦即求取一组x,使得目标函数f(x)为最小,且满足约束条件G(x)≤0。

记号s.t.是英文subjectto的缩写,表示x要满足后面的约束条件。

约束条件可以进一步细化为:

(1)线性不等式约束:

(2)线性等式约束:

(3)非线性不等式约束:

(4)非线性等式约束:

(5)x的下界和上界:

MATLAB最优化工具箱提供了一个fmincon函数,专门用于求解各种约束下的最优化问题。

2.3.2相关函数介绍

函数fmincon

格式x=fmincon(fun,x0,A,b)

x=fmincon(fun,x0,A,b,Aeq,beq)

x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub)

x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)

x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2,...)

[x,fval]=fmincon(...)

[x,fval,exitflag]=fmincon(...)

[x,fval,exitflag,output]=fmincon(...)

[x,fval,exitflag,output,lambda]=fmincon(...)

[x,fval,exitflag,output,lambda,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1