数学建模优化实验课件

发布 2023-05-17 21:20:28 阅读 2124

用matlab优化工具包求解无约束非线性规划时必须先化为如下形式:

min f(x) (nlp)

求解程序名为fminunc,其最简单的调用格式为:

x = fminuncn('fun',x0)

其最复杂的调用格式为:

x,fval,exitflag,output,grad,hessian] =fminunc(@f,x0,options,p1,p2,..

输出参数输入参数注意事项。

1.4.1 程序fminunc输出变量。

其中输出变量的含义为:

1) x : 最优解。

2) fval : 最优解处的函数值。

3) exitflag : 程序结束时的状态指示:

>0:收敛

0:函数调用次数或迭代次数达到最大值(该值在options中指定)

<0:不收敛

4) output: 包含以下数据的一个结构变量。

funccount 函数调用次数

iterations 实际迭代次数

cgiterations 实际pcg迭代次数(大规模计算用)

algorithm 实际使用的算法

stepsize 最后迭代步长(中等规模计算用)

5) grad: 目标函数梯度。

6) hessian: 目标函数的hessian矩阵。

1.4.2 程序fminunc输入参数。

其中输入变量的含义为:

x0为初始解(缺省时程序自动取x0=0)

给出目标函数,当gradobj='on时必须给出其梯度,当hessian='on时还必须给出其jacobi矩阵,一般形式为。

function [f,g,h] =fun(x)

f = objective function value

if nargout > 1

g = gradient of the function

if nargout > 2

h = hessian of the function

end options:包含算法控制参数的结构。

设定(或显示)控制参数的命令为optimset,有以下一些用法:

optimset //显示控制参数。

optimset optfun //显示程序'optfun的控制参数。

opt=optimset //控制参数设为(即缺省值。

opt=optimset(optfun)//设定为程序'optfun的控制参数缺省值。

opt=optimset('par1',val1,'par2',val2,..

opt=optimset(oldopts,'par1',val1,..

opt=optimset(oldopts,newopts)

可以设定的参数比较多,对fminunc,常用的有以下一些参数:

diagnostics 是否显示诊断信息( 'on' 或'off)

display 显示信息的级别('off' ,iter' ,final,'notify)

largescale 是否采用大规模算法( 'on' 或'off)缺省值为on

maxiter 最大迭代次数。

tolfun 函数计算的误差限。

tolx 决策变量的误差限

gradobj 目标函数是否采用分析梯度('on' ,off)

hessian 目标函数是否采用分析hess矩阵('on' ,off)

maxfunevals 目标函数最大调用次数。

hessupdate 拟牛顿法修改方法(’bfgs’(缺省值),’dfp’,’gillmurray’,’steepdesc’)

linesearchtype 线搜索方法(‘cubicpoly’,’quadcubic’(缺省值))

1.4.3 注意事项。

fminunc中输出变量、输入参数不一定写全,可以缺省。采用缺省值效果一般会很好。

当中间某个输入参数缺省时,需用占据其位置。

当函数高度非线性或严重不连续时,用程序fminsearch代替fminunc。

l 非线性最小二乘问题。

min v1xv2

求解程序名为lsqnonlin,其最简单的调用格式为:

x=lsqnonlin(@f,x0, v1,v2)

其最复杂的调用格式为:

x,norm,res,ef,out,lam,jac] =lsqnonlin(@f,x0,v1,v2,opt,p1,p2, .

l 非线性拟合问题。

min v1xv2

求解程序名为lsqcurvefit,其最简单的调用格式为:

x=lsqcurvefit(@f, x0,t,y,v1,v2)

其最复杂的调用格式为:

x,norm,res,ef,out,lam,jac] =lsqcurvefit(@f,x0,t,y,v1,v2,opt,p1,p2,..

输出参数输入参数注意事项。

2.3.1 程序lsqnonlin和lsqcurvefit的输出参数。

其中输出变量的含义为:

1) x : 最优解。

2) norm : 误差的平方和。

3)res: 误差向量。

4) ef : 程序结束时的状态指示:

>0:收敛

0:函数调用次数或迭代次数达到最大值(该值在options中指定)

<0:不收敛

5) out: 包含以下数据的一个结构变量。

funccount 函数调用次数

iterations 实际迭代次数

cgiterations 实际pcg迭代次数(大规模计算用)

algorithm 实际使用的算法

stepsize 最后迭代步长(中等规模计算用)

firstorderopt 一阶最优条件满足的情况(大规模计算用)

6) lam:上下界所对应的lagrange乘子。

7) jac:结果(x点)处的雅可比矩阵。

2.3.2程序lsqnonlin和lsqcurvefit的输入参数。

其中输入变量的含义为:

x0为初始解(缺省时程序自动取x0=0)

f给出目标函数的m文件,当jacobian='on时必须给出其jacobi矩阵,一般形式为:

function [f,j] =fun(x)(对程序lsqcurvefit为fun(x,t))

f = objective function values at x

if nargout > 1 % two output arguments

j = jacobian of the function evaluated at x

end t,y: 拟合数据。

v1,v2: 上下界。

options:包含算法控制参数的结构。

设定(或显示)控制参数的命令为optimset,有以下一些用法:

optimset //显示控制参数。

optimset optfun //显示程序'optfun的控制参数。

opt=optimset //控制参数设为(即缺省值。

opt=optimset(optfun)//设定为程序'optfun的控制参数缺省值。

opt=optimset('par1',val1,'par2',val2,..

opt=optimset(oldopts,'par1',val1,..

opt=optimset(oldopts,newopts)

可以设定的参数比较多,对lsqnonlin和lsqcurvefit,常用的有以下一些参数:

diagnostics 是否显示诊断信息( 'on' 或'off)

display 显示信息的级别('off' ,iter' ,final,'notify)

largescale 是否采用大规模算法( 'on' 或'off)缺省值为on

maxiter 最大迭代次数。

tolfun 函数计算的误差限。

tolx 决策变量的误差限

jacobian 目标函数是否采用分析jacobi矩阵('on' ,off)

maxfunevals 目标函数最大调用次数。

levenbergmarquardt 搜索方向选用lm法(‘on’),gn法(‘off’,缺省值)

linesearchtype 线搜索方法(‘cubicpoly’,’quadcubic’(缺省值))

2.3.3 注意事项。

fminunc中输出变量、输入参数不一定写全,可以缺省。

当中间某个输入参数缺省时,需用占据其位置。

用matlab优化工具包求解线性规划时必须先化为如下形式:

lp)求解程序名为linprog,其最简单的调用格式为:

x = linprog(c,a1,b1) (用于不含有等式约束和上下解约束的问题)

其最复杂的调用格式为:

x,fval,exitflag,output,lambda] =linprog(c,a1,b1,a2,b2,v1,v2,x0,options)

4 用matlab优化工具包解二次规划。

用matlab优化工具包求解二次规划时必须先化为如下形式:

(qp)求解程序名为quadprog,其最简单的调用格式为:

x = quadprog(h,c,a1,b1) (用于不含有等式约束和上下解约束的问题)其最复杂的调用格式为:

x,fval,exitflag,output,lambda] =quadprog(h,c,a1,b1,a2,b2,v1,v2,x0,options)

5插值方法的matlab实现。

a.对于lagrange插值必须自编程序。

b.低次插值的matlab命令。

分段线性插值:

y=inter1(x0, y0, x),其中输入离散数据x0、y0、x,输出对应x的插值y。

三次样条插值:

y=inter1(x0, y0, 'spline')

或 y=spline(x0, y0, x)

其中,x0、y0、x和y的意义同上。

6数值积分的matlab实现。

trapz(x)

用梯形公式计算(h=1),输入数组x为各区间端点的函数值。

trapz(x,y)

数学建模组合优化实验

第四章组合优化实验。第一题 最短路问题的应用 设备更新问题。解 解 用五个点 1,2,3,4,5 代表各年的开始,各点之间的连线表示从边左端点到右端点结束所花费的费用,用cij表示从第i年开始到第j 1年结束所花费的费用。model sets nodes 1.5 arcs nodes,nodes 1...

数学建模课件

第一章线性差分方程。这一章我们将要研究线性差分方程解的基本性质及常系数线性差分方程的各种解法 往下我们将看出,要研究线性差分方程解的各种性质,可归结为研究一个序列的性质 为此,我们先简单地介绍实数系列的一些基本性质 在这章中,我们仍用表示所有非整数的集合。1.1 序列与线性差分方程。定义1.1 序列...

数学建模优化类型题

某厂生产的某种产品有甲 乙两个型号,假设该工厂的产品都能售出,并等于市场上的销量。工厂的利润既取决于销量和 单件 也依赖于产量和 单件 成本,按照市场经济规律,甲的 会随其销量的增长而降低,同时乙的销量的增长也会使甲的 有一定的下降 乙的 遵循同样的规律。而甲 乙的成本都随其各自产量的增长而降低,且...