MATLAB论文 1245322罗慧彪Word文档格式.docx

上传人:b****8 文档编号:22714318 上传时间:2023-02-05 格式:DOCX 页数:19 大小:31.94KB
下载 相关 举报
MATLAB论文 1245322罗慧彪Word文档格式.docx_第1页
第1页 / 共19页
MATLAB论文 1245322罗慧彪Word文档格式.docx_第2页
第2页 / 共19页
MATLAB论文 1245322罗慧彪Word文档格式.docx_第3页
第3页 / 共19页
MATLAB论文 1245322罗慧彪Word文档格式.docx_第4页
第4页 / 共19页
MATLAB论文 1245322罗慧彪Word文档格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

MATLAB论文 1245322罗慧彪Word文档格式.docx

《MATLAB论文 1245322罗慧彪Word文档格式.docx》由会员分享,可在线阅读,更多相关《MATLAB论文 1245322罗慧彪Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。

MATLAB论文 1245322罗慧彪Word文档格式.docx

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

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

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

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

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

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

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

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

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

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

问题一:

求解下列优化问题

首先编写一个M文件,返回x处的函数值opt25_1o.m。

functionf=myfun(x)

f=-x

(1)*x

(2)*x(3);

然后将约束条件改写成下面形式的不等式

因为两个约束条件都是线性的,将它们表达为矩阵不等式的形式,其中,

下一步给定初值,并调用优化过程

x0=[10;

10;

10];

%初值

A=[-1–2–2122];

%定义一个矩阵

b=[0;

72];

[x,fval]=fmincon(opt25_1o,x0,A,b)%将目标值返回到fval中

经过66次函数评价以后,得到问题的解为:

x=

24.0000

12.0000

函数值为:

fval=

-3.4560e+03

而且线性不等式约束的值<

=0

A*x-b=

-72

0

磁盘中本问题的M文件为opt25_1.m。

三,在求最大最小化中的应用

(一)、fminimax函数

求解最大最小化问题。

(三)、语法:

1.x=fminimax(fun,x0)

2.x=fminimax(fun,x0,A,b)

3.x=fminimax(fun,x0,A,b,Aeq,beq)

4.x=fminimax(fun,x0,A,b,Aeq,beq,lb,ub)

5.x=fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)

6.x=fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

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

8.[x,fval]=fminimax(...)

9.[x,fval,maxfval]=fminimax(...)

10.[x,fval,maxfval,exitflag]=fminimax(...)

11.[x,fval,maxfval,exitflag,output]=fminimax(...)

12.[x,fval,maxfval,exitflag,output,lambda]=fminimax(...)

(四)、描述:

1.fminimax使多目标函数中的最坏情况达到最小化。

给定初值估计,该值必须服从一定的约束条件。

2.x=fminimax(fun,x0)初值为x0,找到fun函数的最大最小化解x。

3.x=fminimax(fun,x0,A,b)给定线性不等式A*x<

=b,求解最大最小化问题。

4.x=fminimax(fun,x,A,b,Aeq,beq)给定线性等式,Aeq*x=beq,求解最大最小化问题。

如果没有不等式存在,设置A=[]、b=[]。

5.x=fminimax(fun,x,A,b,Aeq,beq,lb,ub)为设计变量定义一系列下限lb和上限ub,使得总有lb<

=x<

=ub。

6.x=fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)在nonlcon参数中给定非线性不等式约束c(x)或等式约束ceq(x),fminimax函数要求c(x)<

=0且ceq(x)=0。

若没有边界存在,设置lb=[]和(或)ub=[]。

7.x=fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)用options给定的参数进行优化。

8.x=fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2,...)将问题参数P1,P2等直接传递给函数fun和nonlcon。

如果不需要变量A,b,Aeq,beq,lb,ub,nonlcon和options将它们设置为空矩阵。

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

10.[x,fval,maxfval]=fminimax(...)返回解x处的最大函数值。

11.[x,fval,maxfval,exitflag]=fminimax(...)返回exitflag参数,描述函数计算的退出条件。

12.[x,fval,maxfval,exitflag,output]=fminimax(...)返回描述优化信息的结构输出output参数。

13.[x,fval,maxfval,exitflag,output,lambda]=fminimax(...)返回包含解x处拉格朗日乘子的lambda参数。

问题二:

假设某种商品的需求量Q是单价p(单位:

元)的函数

,商品的总成本c是需求量Q的函数

.每单位商品需要纳税2元,试求:

使销售利润达到最大的商品单价和最大利润额.

分析:

用传统方法解决此问题需要列出传统的方程,解题过程繁琐,容易出错。

现在我们利用MATLAB语言对此题做出解答:

利用MATLAB求解的过程:

symspq%定义符号变量

L=((12000-q)/80)*q-(25000+50*q)-2*q;

%总收入函数

dL=diff(L);

%边际函数

dL=-1/40*q+98;

Pq=solve(dL);

%dL函数的驻点

dL2=diff(dL);

dL2=-1/40;

P1=solve(12000-80*p-3920);

%价格

L0=((12000-Pq)/80)*Pq-(25000+50*Pq)-2*Pq;

%最大利润

P1;

L0;

运算结果为:

dL=

-1/40*q+98

Pq=

3920

dL2=

-1/40

-0.0250

P1=

101

L0=

167080

P1=

结论:

当商品价格P为101元时达最大利润,最大利润为167080元。

问题三:

某厂生产甲乙两种产品,已知制成一吨产品甲需用资源A3吨,资源B4m3;

制成一吨产品乙需用资源A2吨,资源B6m3,资源C7个单位。

若一吨产品甲和乙的经济价值分别为7万元和5万元,三种资源的限制量分别为90吨、200m3和210个单位,试决定应生产这两种产品各多少吨才能使创造的总经济价值最高?

令生产产品甲的数量为x1,生产产品乙的数量为x2。

由题意可以建立下面的模型:

该模型中要求目标函数最大化,需要按照Matlab的要求进行转换,即目标函数为

首先输入下列系数:

f=[-7;

-5];

%输入单位变量

A=[324607];

%将个单位数命名为矩阵

b=[90;

200;

210];

%个单位制量定义一个矩阵

lb=zeros(2,1);

%定义一个全零矩阵

然后调用linprog函数:

[x,fval,exitflag,output,lambda]=linprog(f,A,b,[],[],lb)%将解x处的拉格朗日乘子返回到lambda参数中。

x=

14.0000

24.0000

fval=

-218.0000

exitflag=

1

output=

iterations:

5

cgiterations:

algorithm:

'

lipsol'

lambda=

ineqlin:

[3x1double]

eqlin:

[0x1double]

upper:

[2x1double]

lower:

[2x1double]

由上可知,生产甲种产品14吨、乙种产品24吨可使创建的总经济价值最高。

最高经济价值为218万元。

exitflag=1表示过程正常收敛于解x处。

磁盘中本问题的M文件为opt22_2.m。

问题四:

已知有一梯形截面管道,其参数如下:

底边长度是c,高度是h,斜边与底边的夹角是θ,横截面积是A=64516mm2,如图1管道内的液体的流速与管道截面的周长s的倒数成正比关系。

试按照使流速最大确定该管道的参数。

图1梯形截面管道

建立优化设计的数学模型:

管道截面的周长:

s=c+2h/sinθ

由管道横截面面积:

A=ch+h2cotθ=64516

得到底边长度的关系式(与h和θ相关):

c=(64516-h2cotθ)/h=64516/h-hcotθ

将上式代入管道横截面周长的计算式中,得到

s=64516/h-hcotθ+2h/sinθ=64516/h-h/tanθ+2h/sinθ

因此,取与管道截面周长有关的独立参数h和θ作为设计变量,即:

X=[x1;

x2]=[h;

θ]

为使液体流速最大,取管道截面周长最小作为目标函数,即

Minf(X)=64516/x1-x1/tanx2+2x1//sinx2

这是一个二维无约束非线性优化问题。

(1)建立目标函数文件fmin.m

functionf=fminx(x)%定义求解最大变量值

a=64516;

%定义横截面积A

f=a/x

(1)-x

(1)/tan(x

(2)*pi/180)+2*x

(1)/sin(x

(2)*pi/180);

%定义目标函数f

(2)调用fminsearch函数求解

x0=[25;

45];

%定义设计变量h和θ

[x,fval]=fminsearch(‘fminx’,x0)%调用函数

程序运行后得到优化结果:

192.9982

60.0000

668.5656

梯形的截面高度h=192.9982,梯形截面斜边与底边的夹角θ=60o,梯形截

问题五:

一辆公共汽车能容纳60人,租用该辆车每次旅行乘客人数x和支付的费用p(元)之间的关系由法则

2给出.写出公共汽车公司得到的每次旅行的总收入r(x)的表达式,使边界收入

等于零的每次旅行的人数为多少?

相应的费用为多少?

(这个费用是使收入最大的费用,所以公共汽车公司或许应重新考虑其政策)。

载客人数x与支付费用的关系式:

20≤x≤60

编写MATLAB程序如下:

symsxr%定义符号变量

r=x*(3-(x/40))^2;

dr1=diff(r);

dr1=(3-1/40*x)^2-1/20*x*(3-1/40*x);

%定义目标函数

pr=solve(dr1);

%边际函数dr1的驻点

x=pr;

%赋值

dr2=diff(dr1);

%总收入函数的二阶导数

dr2=-3/10+3/800*x;

dr2

程序运行后得到优化结果为:

dr1=

(3-1/40*x)^2-1/20*x*(3-1/40*x)

Pr=

[40]

[120]

dr2=

-3/10+3/800*x

[-3/20]

[3/20]

当人数为40的时候dr2小雨零取得最大值可采用,此时乘客所支付的费用为4元;

当人数为120的时候dr2大于零不符合要求。

问题六:

在某建筑工程施工中需要制作10000套钢筋,每套钢筋由2.9m、2.1m和1.5m三种不同长度的钢筋各一根组成,它们的直径和材质不同。

目前在市场上采购到的同类钢筋的长度每根均为7.4m,问应购进多少根7.4m长的钢筋才能满足工程的需要?

首先分析共有多少种不同的套裁方法,该问题的可能材料方案如表9-13所示。

表1材料方案表

下料长度

(m)

裁料方案编号i

1

2

3

4

5

6

7

8

2.9

2.1

1.5

料头长度

0.1

0.3

0.9

1.1

0.2

0.8

1.4

设以xi(i=1,2,…,8)表示按第i种裁料方案下料的原材料数量,则可得该问题的数学模型为:

f=[1;

1;

1];

Aeq=[20000000

02103210

10130234];

%定义变量矩阵

beq=[100001000010000];

%限制变量

lb=zeros(8,1);

%定义一个零矩阵

然后调用linprog函数:

[x,fval,exitflag,output,lambda]=linprog(f,[],[],Aeq,beq,lb);

%返回包含解x处拉格朗日乘子的lambda参数

运行结果为:

1.0e+003*

5.0000

0.0000

1.6667

2.5000

9.1667e+003

所以最节省的情况需要9167根7.4m长的钢筋,其中第一种方案使用5000,第五种方案使用1667根,第六种方案使用2500根。

磁盘中本问题的M文件为opt22_5.m。

四、解决线性优化问题

在Matlab中,线性规划问题由linprog函数求解。

linprog函数

求解线性规划问题。

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

(四)、语法:

1.x=linprog(f,A,b,Aeq,beq)

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

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

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

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

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

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

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

1.x=linprog(f,A,b)求解问题minf'

*x,约束条件为A*x<

=b。

2.x=linprog(f,A,b,Aeq,beq)求解上面的问题,但增加等式约束,即Aeq*x=b若没有不等式存在,则令A=[]、b=[]。

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

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

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

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

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

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

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

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

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

(六)、变量:

exitflag参数

描述退出条件:

>

0表示目标函数收敛于x处:

=0表示已经到达函数评价或迭代的最大次数:

<

0表示目标函数不收敛。

output参数

该参数包含下列优化信息:

output.iterations迭代次数:

output.cgiterationsPPG迭代次数(只适用于大型规划问题):

output.algorithm所采用的算法。

lambda参数

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

它有以下一些属性:

lambda.lower–lambda的下界。

lambda.upper–lambda的上界。

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

lambda.eqlin–lambda的线性等式。

其它参数意义同前。

问题七:

某车间有两台机床甲和乙,可用于加工三种工件。

假定这两台机床的可用台时数分别为700和800,三种工件的数量分别为300、500和400,且已知用三种不同机床加工单位数量的不同工件所需的台时数和加工费用(如表所示),问怎样分配机床的加工任务,才能既满足加工工件的要求,又使总加工费用最低?

表2机床加工情况表

机床类型

单位工作所需加工台时数

单位工件的加工费用

可用

台时数

工件1

工件2

工件3

0.4

1.0

13

9

10

700

0.5

1.2

1.3

11

12

800

设在甲机床上加工工件1、2和3的数量分别为x1、x2和x3,在乙机床上加工工件1、2和3的数量分别为x4、x5和x6。

根据三种工种的数量限制,有

x1+x4=300(对工件1)

x2+x5=500(对工件2)

x3+x6=400(对工件3)

再根据机床甲和乙的可用总台时限制,可以得到其它约束条件。

以总加工费用最少为目标函数,组合约束条件,可以得到下面的数学模型:

f=[13;

9;

10;

11;

12;

8];

%目标函数系数

A=[0.41.11000%约束条件系数

0000.51.21.3];

%约束条件系数

b=[700;

800];

Aeq=[100100

010010

001001];

%输入条件矩阵

beq=[300500400];

%工种的数量限制

lb=zeros(6,1);

%产生全零矩阵

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

%将解x处的拉格朗日乘子返回到lambda参数中。

500.0000

300.0000

400.0000

1.1000e+004

exitflag=

1

可见,在甲机床上加工500个工件2,在乙机床上加工300个工件1、加工400个工件3可在满足条件的情况下使总加工费最小。

最小费用为11000元。

收敛正常。

磁盘中本问题的M文件为opt22_4.m。

问题八:

min-400x1-1000x2-300x3+200x4

-2x2+x3+x4=0;

2x1+3x2≤16;

3x1+4x2≤24;

x1,x1,x3,x4≥0;

x3≤5;

c=[-400,-1000,-300,200];

%目标函数系数

A=[0,-2,1,1;

2,3,0,0;

3,4,0,0];

16;

24];

xLB=

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

当前位置:首页 > 高等教育 > 文学

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

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