用Matlab求解优化问题

用Matlab求解优化问题
用Matlab求解优化问题

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

命令:x=linprog (c ,A ,b ) 2、模型:

beq

AeqX b AX ..min =≤=t s cX z

命令:x=linprog (c ,A ,b ,Aeq,beq )

注意:若没有不等式:b AX ≤存在,则令A=[ ],b=[ ]. 若没有等式约束, 则令Aeq=[ ], beq=[ ]. 3、模型: VUB

X VLB beq AeqX b AX ..min ≤≤=≤=t s cX z

命令:[1] x=linprog (c ,A ,b ,Aeq,beq, VLB ,VUB )

[2] x=linprog (c ,A ,b ,Aeq,beq, VLB ,VUB, X0) 注意:[1] 若没有等式约束, 则令Aeq=[ ], beq=[ ]. [2]其中X0表示初始点 4、命令:[x,fval]=linprog(…)

返回最优解x及x处的目标函数值fval.

例1 max 6543216.064.072.032.028.04.0x x x x x x z +++++=

85003.003.003.001.001.001.0.

.654321≤+++++x x x x x x t s

70005.002.041≤+x x 10005.002.052≤+x x 90008.003.063≤+x x

6,2,10

=≥j x j

解 编写M 文件小xxgh1.m 如下: c=[-0.4 -0.28 -0.32 -0.72 -0.64 -0.6];

A=[0.01 0.01 0.01 0.03 0.03 0.03;0.02 0 0 0.05 0 0;0 0.02 0 0 0.05 0;0 0 0.03 0 0 0.08]; b=[850;700;100;900]; Aeq=[]; beq=[];

vlb=[0;0;0;0;0;0]; vub=[]; [x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)

min z=cX

b

AX t s

≤..1、模型:

例2 321436min x x x z ++=

120.

.321=++x x x t s

301≥x 5002≤≤x 203≥x

解: 编写M 文件xxgh2.m 如下: c=[6 3 4]; A=[0 1 0]; b=[50]; Aeq=[1 1 1]; beq=[120];

vlb=[30,0,20];

vub=[];

[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub

例3 (任务分配问题)某车间有甲、乙两台机床,可用于加工三种工件。 假定这两台车床的可用台时数分别为800和900,三种工件的数量分别为400、 600和500,且已知用三种不同车床加工单位数量不同工件所需的台时数和加工 费用如下表。问怎样分配车床的加工任务,才能既满足加工工件的要求,又使 加工费用最低?

解 设在甲车床上加工工件1、2、3的数量分别为x1、x2、x3,在乙车床上 加工工件1、2、3的数量分别为x4、x5、x6。可建立以下线性规划模型:

6543218121110913min x x x x x x z +++++=

????

?????

??=≥≤++≤++=+=+=+6

,,2,1,0900

3.12.15.08001.1

4.0500

600400x ..6

54321635241 i x x x x x x x x x x x x t s i

编写M 文件xxgh3.m 如下:

f = [13 9 10 11 12 8]; A = [0.4 1.1 1 0 0 0 0 0 0 0.5 1.2 1.3];

b = [800; 900]; Aeq=[1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1]; beq=[400 600 500]; vlb = zeros(6,1); vub=[];

[x,fval] = linprog(f,A,b,Aeq,beq,vlb,vub)

例4.某厂每日8小时的产量不低于1800件。为了进行质量控制,计划聘请两种不同水平的检验员。一级检验员的标准为:速度25件/小时,正确率98%,计时工资4元/小时;二级检验员的标准为:速度15小时/件,正确率95%,计时工资3元/小时。检验员每错检一次,工厂要损失2元。为使总检验费用最省,该工厂应聘一级、二级检验员各几名? 解 设需要一级和二级检验员的人数分别为x1、x2人, 则应付检验员的工资为:

因检验员错检而造成的损失为:

故目标函数为:

约束条件为:

线性规划模型:

编写M 文件xxgh4.m 如下:

c = [40;36]; A=[-5 -3]; b=[-45]; Aeq=[]; beq=[];

212124323848x x x x +=??+??2

1211282)%5158%2258(x x x x +=????+???2121213640)128()2432(min x x x x x x z +=+++=??????

?≥≥≤??≤??≥??+??0

,01800158180025818001582582

1

2121x x x x x x 213640min x x z +=?????

?

?≥≥≤≤≥+0

,015

94535 ..21

2121x x x x x x t s

vlb = zeros(2,1);

vub=[9;15];

%调用linprog函数:

[x,fval] = linprog(c,A,b,Aeq,beq,vlb,vub)

结果为:

x =

9.0000

0.0000

fval =360

即只需聘用9个一级检验员。

Matlab优化工具箱简介

1.MATLAB求解优化问题的主要函数

2.优化函数的输入变量

使用优化函数或优化工具箱中其它优化函数时, 输入变量见下表:

3. 优化函数的输出变量下表:

4.控制参数options 的设置

Options 中常用的几个参数的名称、含义、取值如下:

(1) Display : 显示水平.取值为’off ’时,不显示输出; 取值为’iter ’时,显示每次迭代的信息;取值为’final ’时,显示最终结果.默认值为’final ’.

(2) MaxFunEvals : 允许进行函数评价的最大次数,取值为正整数. (3) MaxIter : 允许进行迭代的最大次数,取值为正整数

控制参数options 可以通过函数optimset 创建或修改。命令的格式如下: (1) options=optimset(‘optimfun ’)

创建一个含有所有参数名,并与优化函数optimfun 相关的默认值的选项结构options. (2)options=optimset(‘param1’,value1,’param2’,value2,...)

创建一个名称为options 的优化选项参数,其中指定的参数具有指定值,所有未指定的参数取默认值.

(3)options=optimset(oldops,‘param1’,value1,’param2’,

value2,...)

创建名称为oldops 的参数的拷贝,用指定的参数值修改oldops 中相应的参数.

例:opts=optimset(‘Display ’,’iter ’,’TolFun ’,1e-8)

该语句创建一个称为opts 的优化选项结构,其中显示参数设为’iter ’, TolFun 参数设为1e-8. 用Matlab 解无约束优化问题

一元函数无约束优化问题21),(min x x x x f ≤≤ 常用格式如下:

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

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

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

(5)[x ,fval ,exitflag ,output]= fminbnd (...) 其中(3)、(4)、(5)的等式右边可选用(1)或(2)的等式右边。

函数fminbnd 的算法基于黄金分割法和二次插值法,它要求目标函数必须是连续函数,并可能只给出局部最优解。

例1 求x e f x sin 2-=在0

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

fplot(f,[0,8]); %作图语句 [xmin,ymin]=fminbnd (f, 0,8) f1='-2*exp(-x).*sin(x)';

[xmax,ymax]=fminbnd (f1, 0,8) 运行结果:

xmin = 3.9270 ymin = -0.0279 xmax = 0.7854 ymax = 0.6448

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

先编写M 文件fun0.m 如下: function f=fun0(x) f=-(3-2*x).^2*x; 主程序为wliti2.m:

[x,fval]=fminbnd('fun0',0,1.5); xmax=x fmax=-fval

运算结果为: xmax = 0.5000,fmax =2.0000.即剪掉的正方形的边长为0.5米时水槽的容积最大,最大容积为2立方米.

2、多元函数无约束优化问题 标准型为:min F(X)

命令格式为:

(1)x= fminunc (fun,X0 );或x=fminsearch (fun,X0 )

(2)x= fminunc (fun,X0 ,options );

或x=fminsearch (fun,X0 ,options )

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

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

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

或[x ,fval ,exitflag]= fminsearch

(5)[x ,fval ,exitflag ,output]= fminunc (...); 或[x ,fval ,exitflag ,output]= fminsearch (...) 说明:

? fminsearch 是用单纯形法寻优. fminunc 的算法见以下几点说明:

[1] fminunc 为无约束优化提供了大型优化和中型优化算法。由options 中的参数LargeScale 控制:

LargeScale=’on ’(默认值),使用大型算法

设剪去的正方形的边长为x ,则水槽的容积为:x x )23(2

-

建立无约束优化模型为:min y=-x x )23(2-, 0

LargeScale=’off’(默认值),使用中型算法

[2] fminunc为中型优化算法的搜索方向提供了4种算法,由

options中的参数HessUpdate控制:

HessUpdate=’bfgs’(默认值),拟牛顿法的BFGS公式;HessUpdate=’dfp’,拟牛顿法的DFP公式;

HessUpdate=’steepdesc’,最速下降法

[3] fminunc为中型优化算法的步长一维搜索提供了两种算法,

由options中参数LineSearchType控制:LineSearchType=’quadcubic’(缺省值),混合的二次和三

次多项式插值;LineSearchType=’cubicpoly’,三次多项式插

?使用fminunc和fminsearch可能会得到局部最优解. 例3 min f(x)=(4x12+2x22+4x1x2+2x2+1)*exp(x1)

1、编写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);

2、输入M文件wliti3.m如下:

x0 = [-1, 1];

x=fminunc(‘fun1’,x0);

y=fun1(x)

3、运行结果:

x= 0.5000 -1.0000

y = 1.3029e-10

例4 Rosenbrock 函数 f(x1,x2)=100(x

2-x

1

2)2+(1-x

1

)2

的最优解(极小)为x*=(1,1),极小值为f*=0.试用

不同算法(搜索方向和步长搜索)求数值最优解.

初值选为x0=(-1.2 , 2).

1.为获得直观认识,先画出Rosenbrock 函数的三维图形,

输入以下命令:

[x,y]=meshgrid(-2:0.1:2,-1:0.1:3);

z=100*(y-x.^2).^2+(1-x).^2;

mesh(x,y,z)

2. 画出Rosenbrock 函数的等高线图,输入命令:

contour(x,y,z,20)

hold on

plot(-1.2,2,' o ');

text(-1.2,2,'start point')

plot(1,1,'o')

text(1,1,'solution')

3.用fminsearch函数求解

输入命令:

f='100*(x(2)-x(1)^2)^2+(1-x(1))^2';

[x,fval,exitflag,output]=fminsearch(f, [-1.2 2])

运行结果:

x =1.0000 1.0000

fval =1.9151e-010

exitflag = 1

output =

iterations: 108

funcCount: 202

algorithm: 'Nelder-Mead simplex direct search'

4.用fminunc 函数

(1)建立M-文件fun2.m

function f=fun2(x)

f=100*(x(2)-x(1)^2)^2+(1-x(1))^2

(2)主程序wliti44.m

可以看出,最速下降法的结果最差.因为最速下降法特别不适合于从一狭长通道到达最优解的情况.

例5产销量的最佳安排

某厂生产一种产品有甲、乙两个牌号,讨论在产销平衡的情况下如何确定各自的产量,使总利润最大. 所谓产销平衡指工厂的产量等于市场上的销量.

符号说明

z(x1,x2)表示总利润;

p 1,q

1

,x

1

分别表示甲的价格、成本、销量;

p 2,q

2

,x

2

分别表示乙的价格、成本、销量;

a

ij ,b

i

,λ

i

,c

i

(i,j =1,2)是待定系数.

基本假设

1.价格与销量成线性关系

利润既取决于销量和价格,也依赖于产量和成本。按照市场规律,

甲的价格p

1会随其销量x

1

的增长而降低,同时乙的销量x

2

的增长也

会使甲的价格有稍微的下降,可以简单地假设价格与销量成线性关系,

即: p 1 = b 1 - a 11 x 1 - a 12 x 2 ,b 1,a 11,a 12 > 0,且a 11 > a 12; 同理, p 2 = b 2 - a 21 x 1- a 22 x 2 ,b 2,a 21,a 22 > 0

2.成本与产量成负指数关系

甲的成本随其产量的增长而降低,且有一个渐进值,可以假设为 负指数关系,即:

0,,,

1111111

1>+=-c r c e r q x λλ 同理, ,,,

2222222

2>

+=-c r c e

r q x λλ

模型建立

总利润为: z (x1,x2)=(p1-q1)x1+(p2-q2)x2

若根据大量的统计数据,求出系数b1=100,a11=1,a12=0.1,b2=280, a21=0.2,a22=2,r1=30,λ1=0.015,c1=20, r2=100,λ2=0.02,c2=30,则 问题转化为无约束优化问题:求甲,乙两个牌号的产量x1,x2,使 总利润z 最大.

为简化模型,先忽略成本,并令a12=0,a21=0,问题转化为求: z1 = ( b1 - a11x1 ) x1 + ( b2 - a22x2 ) x2

的极值. 显然其解为x1 = b1/2a11 = 50, x2 = b2/2a22 = 70, 我们把它作为原问题的初始值. 模型求解

1.建立M-文件fun.m: function f = fun(x)

y1=((100-x(1)- 0.1*x(2))-(30*exp(-0.015*x(1))+20))*x(1); y2=((280-0.2*x(1)- 2*x(2))-(100*exp(-0.02*x(2))+30))*x(2); f=-y1-y2; 2.输入命令:

x0=[50,70];

x=fminunc(‘fun ’,x0), z=fun(x) 3.计算结果:

x=23.9025, 62.4977, z=6.4135e+003

即甲的产量为23.9025,乙的产量为62.4977,最大利润为6413.5. 非线性规划 1、 二次规划

用MATLAB 软件求解,其输入格式如下: 1. x=quadprog(H,C,A,b);

2. x=quadprog(H,C,A,b,Aeq,beq);

3. x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB);

4.

x=quadprog(H,C,A,b, Aeq,beq ,VLB,VUB,X0);

标准型为: Min Z= 21X T HX+c T X s.t. AX<=b beq X Aeq =? VLB ≤X ≤VUB

5. x=quadprog(H,C,A,b, Aeq,beq ,VLB,VUB,X0,options);

6. [x,fval]=quaprog(...);

7. [x,fval,exitflag]=quaprog(...);

8. [x,fval,exitflag,output]=quaprog(...); 例1 min f(x1,x2)=-2x1-6x2+x12-2x1x2+2x22 s.t. x1+x2≤2 -x1+2x2≤2 x1≥0, x2≥0 1、写成标准形式:

2、 输入命令:

H=[1 -1; -1 2];

c=[-2 ;-6];A=[1 1; -1 2];b=[2;2]; Aeq=[];beq=[]; VLB=[0;0];VUB=[];

[x,z]=quadprog(H,c,A,b,Aeq,beq,VLB,VUB) 3、运算结果为:

x =0.6667 1.3333 z = -8.2222

一般非线性规划

标准型为:

min F(X)

s.t AX<=b beq X Aeq =? G(X)0≤

Ceq(X)=0 VLB ≤X ≤VUB

其中X 为n 维变元向量,G(X)与Ceq(X)均为非线性函数组成的向量,其它变量的含义与线性规划、二次规划中相同.用Matlab 求解上述问题,基本步骤分三步: 1. 首先建立M 文件fun.m,定义目标函数F (X ): function f=fun(X); f=F(X);

2. 若约束条件中有非线性约束:G(X)0≤或Ceq(X)=0,则建立M 文件

nonlcon.m 定义函数G(X)与Ceq(X): function [G,Ceq]=nonlcon(X) G=... Ceq=...

???

?

???

??

?

??--+???? ?????? ??-=212121622 11- 1 ),(min x x x x x x z T

?

??

?

??≤???? ?????

?

??≤???? ?????? ??-212100222 11 1 x x x x s.t.

3. 建立主程序.非线性规划求解的函数是fmincon,命令的基本格式如下:

(1) x=fmincon (‘fun’,X0,A,b) (2) x=fmincon (‘fun’,X0,A,b,Aeq,beq)

(3) x=fmincon (‘fun’,X0,A,b, Aeq,beq,VLB,VUB)

(4) x=fmincon (‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’) (5)x=fmincon (‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’,o ptions) (6) [x,fval]= fmincon(...) (7) [x,fval,exitflag]= fmincon(...) (8)[x,fval,exitflag,output]= fmincon(...) 注意:

[1] fmincon 函数提供了大型优化算法和中型优化算法。默认时,若在fun 函数中提供了梯度(options 参数的GradObj 设置为’on’),并且只有上下界存在或只有等式约束,fmincon 函数将选择大型算法。当既有等式约束又有梯度约束时,使用中型算法。

[2] fmincon 函数的中型算法使用的是序列二次规划法。在每一步迭代中求解二次规划子问题,并用BFGS 法更新拉格朗日Hessian 矩阵。 [3] fmincon 函数可能会给出局部最优解,这与初值X0的选取有关。 例2

2

22

1212

1212min x x x x f +

+

--=

s.t.0

,546

32212121≥≤+≤+x x x x x x

2、先建立M-文件 fun3.m: function f=fun3(x);

f=-x(1)-2*x(2)+(1/2)*x(1)^2+(1/2)*x(2)^2 3、再建立主程序youh2.m : x0=[1;1]; A=[2 3 ;1 4]; b=[6;5]; Aeq=[];beq=[]; VLB=[0;0]; VUB=[];

[x,fval]=fmincon('fun3',x0,A,b,Aeq,beq,VLB,VUB) 4、运算结果为:

x = 0.7647 1.0588 fval = -2.0294

1、写成标准形式:

s.t.

??

?

??≤??? ??-+-+00546322121x x x x ?

??

??≤??? ??2100x x 22

212121212min x x x x f ++--=

例3

0 100

5.1

..

)1

2

4

2

4(

)

(

min

2 1

2

1

2

1

2

1

2

2

1

2

2

2

1

1

-

-

-

-

+

=

+

+

+

+

+

=

x

x

x

x

x

x

x

x

t s

x

x

x

x

x

e

x

f x

1.先建立M文件fun4.m,定义目标函数:

function f=fun4(x);

f=exp(x(1))

*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);

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

function [g,ceq]=mycon(x)

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

3.主程序youh3.m为:

x0=[-1;1];

A=[];b=[];

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

vlb=[];vub=[];

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

3. 运算结果为:

x = -1.2250 1.2250

fval = 1.8951

例4.资金使用问题

设有400万元资金, 要求4年内使用完, 若在一年内使用资金x万元, 则可得效益x万元(效益不能再使用),当年不用的资金可存入银行, 年利率为10%. 试制定出资金的使用计划, 以使4年效益之和为最大.

设变量i x 表示第i 年所使用的资金数,则有

4

,3,2,1,04.5321.121.1331.1484

1.121.1440

1.1400

..max 43213212114

321=≥≤+++≤++≤+≤+

+

+

=

i x x x x x x x x x x x t s x x x x z i

1.先建立M 文件 fun44.m,定义目标函数:

function f=fun44(x)

f=-(sqrt(x(1))+sqrt(x(2))+sqrt(x(3))+sqrt(x(4)));

2.再建立M 文件mycon1.m 定义非线性约束: function [g,ceq]=mycon1(x) g(1)=x(1)-400;

g(2)=1.1*x(1)+x(2)-440;

g(3)=1.21*x(1)+1.1*x(2)+x(3)-484;

g(4)=1.331*x(1)+1.21*x(2)+1.1*x(3)+x(4)-532.4; ceq=0

3.主程序youh4.m 为:

x0=[1;1;1;1];vlb=[0;0;0;0];vub=[];A=[];b=[];Aeq=[];beq=[];

[x,fval]=fmincon('fun44',x0,A,b,Aeq,beq,vlb,vub,'mycon1')

得到 1

.438.152,2.126,2.104,2.864321=====z x x x x

应用matlab求解约束优化问题

应用matlab求解约束优化问题 姓名:王铎 学号: 2007021271 班级:机械078 上交日期: 2010/7/2 完成日期: 2010/6/29

一.问题分析 f(x)=x1*x2*x3-x1^6+x2^3+x2*x3-x4^2 s.t x1-x2+3x2<=6 x1+45x2+x4=7 x2*x3*x4-50>=0 x2^2+x4^2=14 目标函数为多元约束函数,约束条件既有线性约束又有非线性约束所以应用fmincon函数来寻求优化,寻找函数最小值。由于非线性不等式约束不能用矩阵表示,要用程序表示,所以创建m文件其中写入非线性不等式约束及非线性等式约束,留作引用。 二.数学模型 F(x)为目标函数求最小值 x1 x2 x3 x4 为未知量 目标函数受约束于 x1-x2+3x2<=6 x1+45x2+x4=7 x2*x3*x4-50>=0 x2^2+x4^2=14 三.fmincon应用方法 这个函数的基本形式为 x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) 其中fun为你要求最小值的函数,可以单写一个文件设置函数,也可是m文件。 1.如果fun中有N个变量,如x y z, 或者是X1, X2,X3, 什么的,自己排个顺序,在fun中统一都是用x(1),x(2)....x(n) 表示的。 2. x0, 表示初始的猜测值,大小要与变量数目相同 3. A b 为线性不等约束,A*x <= b, A应为n*n阶矩阵。 4 Aeq beq为线性相等约束,Aeq*x = beq。 Aeq beq同上可求 5 lb ub为变量的上下边界,正负无穷用 -Inf和Inf表示, lb ub应为N阶数组 6 nonlcon 为非线性约束,可分为两部分,非线性不等约束 c,非线性相等约束,ceq 可按下面的例子设置 function [c,ceq] = nonlcon1(x) c = [] ceq = [] 7,最后是options,可以用OPTIMSET函数设置,具体可见OPTIMSET函数的帮助文件。 四.计算程序

matlab 无约束优化问题

实验八 无约束优化问题 一.实验目的 掌握应用matlab 求解无约束最优化问题的方法 二.实验原理及方法 1:标准形式: 元函数 为其中n R R f X f n R x n →∈:) (min 2.无约束优化问题的基本算法一.最速下降法(共轭梯度法)算法步骤:⑴ 给定初始点 n E X ∈0,允许误差0>ε,令k=0; ⑵ 计算() k X f ?; ⑶ 检验是否满足收敛性的判别准则: () ε≤?k X f , 若满足,则停止迭代,得点k X X ≈*,否则进行⑷; ⑷ 令() k k X f S -?=,从k X 出发,沿k S 进行一维搜索, 即求k λ使得: ()() k k k k k S X f S X f λλλ+=+≥0 min ; ⑸ 令k k k k S X X λ+=+1,k=k+1返回⑵. 最速下降法是一种最基本的算法,它在最优化方法中占有重要地位.最速下降法的优点是工作量小,存储变量较少,初始点要求不高;缺点是收敛慢,最速下降法适用于寻优过程的前期迭代或作为间插步骤,当接近极值点时,宜选用别种收敛快的算法..牛顿法算法步骤: (1) 选定初始点n E X ∈0,给定允许误差0>ε,令k=0; (2) 求()k X f ?,()() 1 2-?k X f ,检验:若() ε

利用Matlab求解机械设计优化问题的分析

利用MATLAB求解机械设计优化问题的分析 周婷婷 (能源与动力学院,油气0701) 摘要:MATLAB是目前国际上最流行的科学与工程计算的软件工具, 它具有强大的数值分析、矩阵运算、信号处理、图形显示、模拟仿真和最优化设计等功能。本文浅谈MATLAB在机械设计优化问题的几点应用。 关键词:MATLAB 约束条件机械设计优化 引言:在线性规划和非线性规划等领域经常遇到求函数极值等最优化问题,当函数或约束条件复杂到一定程度时就无法求解,而只能求助于极值分析算法,如果借助计算器进行手工计算的话,计算量会很大,如果要求遇到求解极值问题的每个人都去用BASIC,C和FORTRAN之类的高级语言编写一套程序的话,那是非一朝一日可以解决的,但如用MATLAB语言实现极值问题的数值解算,就可以避免计算量过大和编程难的两大难题,可以轻松高效地得到极值问题的数值解,而且可以达到足够的精度。 1无约束条件的极值问题的解算方法 设有Rosenbrock函数如下: f(X1,X2)=100(X2-X1*X1)2+(1-X1)2 求向量X取何值时,F(x)的值最小及最小值是多少? 先用MATLAB语言的编辑器编写求解该问题的程序如下: %把函数写成MATLAB语言表达式 fun=’100*(X(2)-X(1)*X(1)2+(1-X(1))2 %猜自变量的初值 X0=[-1 2]; %所有选项取默认值 options=[ ]; %调用最优化函数进行计算。 %函数最小值存放在数组元素options(8)中

%与极值点对应的自变量值存放在向量X里 %计算步数存放在数组元素options(10)中 [X,options]=fmins(fun,X0,options); %显示与极值点对应的自变向量X的值。 %显示函数最小值 options(8) %显示函数计算步数 options(10) 把上面这段程序保存为m文件,然后用“Tools”菜单中的“Run”命令行这段程序,就可以轻松的得到如下结果: X=9.999908938395383e-001 9.99982742178110e-001 ans=1.706171071794760e-001 ans=195 显然,计算结果与理论结果的误差小到e-10级,这里调用了MATLAB的最优化函数fmins(),它采用Nelder-Mead的单纯形算法,就是因为这个函数的采用,使最小值问题的解算变得非常简单。 2.带约束条件的极值问题的解法 设目标函数和约束条件如下: f(x) =-3X1+X2+X3 -X1+2X2-X3>= -11 4X1-X2-2X3<=-3 2X1-X3= -1 X1>=0,X2>=0,X3>=0; 求X向量取何值时函数取极小值? 对条件极值问题通常的做法都是将约束条件标准化(即把等式约束条件写成等号为0的形式,把不等式写成<=0的形式)。然后把条件极值问题转换为非条件极值问题,MATLAB也采用同样的做法。

MATLAB解决线性规划问题

运行环境:Windows+MATLAB 解决问题:线性规划问题(特定题目) 实验简述: MATLAB 可以高效、方便地解决线性规划问题。线性规划是合理利用、调配资源的一种应用数学的方法。它的基本思路就是在满足一定的约束条件下,使预定的目标达到最优。它的研究内容可归纳为两个方面:一是系统的任务已定,如何合理筹划,精细安排,用最少的资源去实现这个任务:二是资源的数量已定,如何利用、分配,使任务完成得最多。前者是求极小,后者是求极大。线性规划是在满足企业内、外部的条件下,实现管理目标和极值问题,就是要以尽少的资源输入来实现更多的社会需要的产品的产出。现在通过专门的数学MATLAB 软件,只要将模型中的目标函数系数、约束条件系数、不等关系输入计算机,就会很快算出结果。 在生活实践中,很多重要的实际问题都是线性的(至少能够用线性函数很好的近似表示),所以我们一般把这些问题化为线性的目标函数和约束条件进行分析,通常将目标函数和约束都是线性表达式的规划问题称为线性规划。 它的一般形式是: ) ,,2,1(0. .min 221122222121112121112211n i x b x a x a x a b x a x a x a b x a x a x a t s x c x c x c f i m n mn m m n n n n n n =>=???????<=+++<=+++<=++++++= 也可以用矩阵形式来表示: 0,..min >=<==x b Ax t s x c f T 线性规划的可行解是满足约束条件的解;线性规划的最优解是使目标函数达到最优的可行解。 线性规划关于解的情况可以是: 1、无可行解,即不存在满足约束条件的解; 2、有唯一最优解,即在可行解中有唯一的最有解; 3、有无穷最优解,即在可行解中有无穷个解都可使目标函数达到最优; 4、有可行解,但由于目标函数值无界而无最优解。 一般求解线性规划的常用方法是单纯形法和改进的单纯形法,这类方法的基

最优化方法的Matlab实现(公式(完整版))

第九章最优化方法的MatIab实现 在生活和工作中,人们对于同一个问题往往会提出多个解决方案,并通过各方面的论证从中提取最佳方案。最优化方法就是专门研究如何从多个方案中科学合理地提取出最佳方案的科学。由于优化问题无所不在,目前最优化方法的应用和研究已经深入到了生产和科研的各个领域,如土木工程、机械工程、化学工程、运输调度、生产控制、经济规划、经济管理等,并取得了显著的经济效益和社会效益。 用最优化方法解决最优化问题的技术称为最优化技术,它包含两个方面的内容: 1)建立数学模型即用数学语言来描述最优化问题。模型中的数学关系式反映了最优化问题所要达到的目标和各种约束条件。 2)数学求解数学模型建好以后,选择合理的最优化方法进行求解。 最优化方法的发展很快,现在已经包含有多个分支,如线性规划、整数规划、非线性规划、动态规划、多目标规划等。 9.1 概述 利用Matlab的优化工具箱,可以求解线性规划、非线性规划和多目标规划问题。 具体而言,包括线性、非线性最小化,最大最小化,二次规划,半无限问题,线性、非线性方程(组)的求解,线性、非线性的最小二乘问题。另外,该工具箱还提供了线性、非线性最小化,方程求解,曲线拟合,二次规划等问题中大型课题的求解方法,为优化方法在工程中的实际应用提供了更方便快捷的途径。 9.1.1优化工具箱中的函数 优化工具箱中的函数包括下面几类: 1 ?最小化函数

2.方程求解函数 3.最小—乘(曲线拟合)函数

4?实用函数 5 ?大型方法的演示函数 6.中型方法的演示函数 9.1.3参数设置 利用OPtimSet函数,可以创建和编辑参数结构;利用OPtimget函数,可以获得o PtiOns优化参数。 ? OPtimget 函数 功能:获得OPtiOns优化参数。 语法:

用MATLAB求解规划问题

§15. 利用Matlab求解线性规划问题 线性规划是一种优化方法,Matlab优化工具箱中有现成函数linprog对如下式描述的LP问题求解: % min f'x % s.t .(约束条件):Ax<=b % (等式约束条件):Aeqx=beq % lb<=x<=ub linprog函数的调用格式如下: x=linprog(f,A,b) 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)返回值x为最优解向量。 x=linprog(f,A,b,Aeq,beq) 作有等式约束的问题。若没有不等式约束,则令 111

A=[ ]、b=[ ] 。 x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options) 中lb ,ub为变量x的下界和上界,x0为初值点,options为指定优化参数进行最小化。 Options的参数描述: Display显示水平。选择’off’ 不显示输出;选择’I ter’显示每一步迭代过程的输出;选择’final’ 显示最终结果。 MaxFunEvals 函数评价的最大允许次数 Maxiter 最大允许迭代次数 TolX x处的终止容限 [x,fval]=linprog(…) 左端fval 返回解x处的目标函数值。 [x,fval,exitflag,output,lambda]=linprog(f,A,b, Aeq,beq,lb,ub,x0) 的输出部分: exitflag描述函数计算的退出条件:若为正值,表示目标函数收敛于解x 处;若为负值,表示目标函数不收敛;若为零值,表示已经达到函数评价或迭代的最大次数。 output 返回优化信息:output.iterations表示迭代次数;output.algorithm表示所采用的算法;outprt.funcCount表示函数评价次数。 lambda返回x处的拉格朗日乘子。它有以下属性: lambda.lower-lambda的下界; lambda.upper-lambda的上界; lambda.ineqlin-lambda的线性不等式; lambda.eqlin-lambda的线性等式。 112

最优化方法的Matlab实现(公式(完整版))

第九章最优化方法的Matlab实现 在生活和工作中,人们对于同一个问题往往会提出多个解决方案,并通过各方面的论证从中提取最佳方案。最优化方法就是专门研究如何从多个方案中科学合理地提取出最佳方案的科学。由于优化问题无所不在,目前最优化方法的应用和研究已经深入到了生产和科研的各个领域,如土木工程、机械工程、化学工程、运输调度、生产控制、经济规划、经济管理等,并取得了显著的经济效益和社会效益。 用最优化方法解决最优化问题的技术称为最优化技术,它包含两个方面的内容:1)建立数学模型即用数学语言来描述最优化问题。模型中的数学关系式反映了最优化问题所要达到的目标和各种约束条件。 2)数学求解数学模型建好以后,选择合理的最优化方法进行求解。 最优化方法的发展很快,现在已经包含有多个分支,如线性规划、整数规划、非线性规划、动态规划、多目标规划等。 9.1 概述 利用Matlab的优化工具箱,可以求解线性规划、非线性规划和多目标规划问题。具体而言,包括线性、非线性最小化,最大最小化,二次规划,半无限问题,线性、非线性方程(组)的求解,线性、非线性的最小二乘问题。另外,该工具箱还提供了线性、非线性最小化,方程求解,曲线拟合,二次规划等问题中大型课题的求解方法,为优化方法在工程中的实际应用提供了更方便快捷的途径。 9.1.1 优化工具箱中的函数 优化工具箱中的函数包括下面几类: 1.最小化函数

表9-1 最小化函数表 2.方程求解函数 表9-2 方程求解函数表 3.最小二乘(曲线拟合)函数 表9-3 最小二乘函数表

4.实用函数 表9-4 实用函数表 5.大型方法的演示函数 表9-5 大型方法的演示函数表 6.中型方法的演示函数 表9-6 中型方法的演示函数表 9.1.3 参数设置 利用optimset函数,可以创建和编辑参数结构;利用optimget函数,可以获得o ptions优化参数。 ● optimget函数 功能:获得options优化参数。

第10章__Matlab在最优化问题中的应用

第10章 Matlab 在最优化问题中的应用 优化理论是一门实践性很强的学科,广泛应用于生产管理、军事指挥和科学试验等各种领域,Matlab 优化工具箱提供了对各种优化问题的一个完整的解决方案。 在数学上,所谓优化问题,就是求解如下形式的最优解: Min fun (x) Sub. to [C.E.] [B.C.] 其中fun (x)称为目标函数,“Sub. to ”为“subject to ”的缩写,由其引导的部分称为约束条件。[C.E.]表示Condition Equations ,即条件方程,可为等式方程,也可为不等式方程。[B.C.]表示Boundary Conditions ,即边界条件,用来约束自变量的求解域,以lb ≤x ≤ub 的形式给出。当[C.E.]为空时,此优化问题称为自由优化或无约束优化问题;当[C.E.]不空时,称为有约束优化或强约束优化问题。 在优化问题中,根据变量、目标函数和约束函数的不同,可以将问题大致分为: ·线性优化 目标函数和约束函数均为线性函数。 ·二次优化 目标函数为二次函数,而约束条件为线性方程。线性优化和二次优化 统称为简单优化。 ·非线性优化 目标函数为非二次的非线性函数,或约束条件为非线性方程。 ·多目标优化 目标函数并非一个时,称为多目标优化问题。 本章将对以上几类优化问题在Matlab 中的实现作比较详细的讲解。另外还将介绍两个利用优化方法解非线性方程的函数。 通过本章的介绍,用户可以不必掌握艰涩的各种优化算法而轻易地解决一些常用的最优化问题了。 10.1 线性规划问题 线性规划问题即目标函数和约束条件均为线性函数的问题。 其标准形式为: min C ’x sub. To Ax = b x ≥0 其中C, b, 0∈R n ,A ∈R m ?n ,均为数值矩阵,x ∈R n 。 若目标函数为:max C ’x ,则转换成:min –C ’x 。 标准形式的线性规划问题简称为LP (Linear Programming )问题。其它形式的线性规划问题经过适当的变换均可以化为此种标准形。线性规划问题虽然简单,但在工农业及其他生产部门中应用十分广泛。 在Matlab 中,线性规划问题由linprog 函数求解。 函数:linprog %求解如下形式的线性规划问题: x f T x min such that b x A ≤? beq x Aeq =? ub x lb ≤≤ 其中f, x, b, beq, lb, ub 为向量,A, Aeq 为矩阵。 格式:x = linprog(f,A,b) x = linprog(f,A,b,Aeq,beq) x = linprog(f,A,b,Aeq,beq,lb,ub)

MATLAB 函数解优化问题

MATLAB 函数在优化问题中的应用 §1 线性规划模型 一、线性规划课题: 实例1:生产计划问题 假设某厂计划生产甲、乙两种产品,现库存主要材料有A类3600公斤,B类2000公斤,C类3000公斤。每件甲产品需用材料A类9公斤,B类4公斤,C类3公斤。每件乙产品,需用材料A类4公斤,B类5公斤,C类10公斤。甲单位产品的利润70元,乙单位产品的利润120元。问如何安排生产,才能使该厂所获的利润最大。 建立数学模型: 设x1、x2分别为生产甲、乙产品的件数。f为该厂所获总润。 max f=70x1+120x2 s.t 9x1+4x2≤3600 4x1+5x2≤2000 3x1+10x2≤3000 x1,x2≥0 实例2:投资问题 某公司有一批资金用于4个工程项目的投资,其投资各项目时所得的净收益(投入资金锪百分比)如下表: 工程项目收益表 由于某种原因,决定用于项目A的投资不大于其他各项投资之和而用于项目B和C的投资要大于项目D的投资。试确定全文该公司收益最大的投资分配方案。 建立数学模型:

设x 1、 x 2 、x 3 、x 4分别代表用于项目A 、B 、C 、D 的投资百分数。 max f=0.15x 1+0.1x 2+0.08 x 3+0.12 x 4 s.t x 1-x 2- x 3- x 4≤0 x 2+ x 3- x 4≥0 x 1+x 2+x 3+ x 4=1 x j ≥0 j=1,2,3,4 实例3:运输问题 有A 、B 、C 三个食品加工厂,负责供给甲、乙、丙、丁四个市场。三个厂每天生产食品箱数上限如下表: 四个市场每天的需求量如下表: 从各厂运到各市场的运输费(元/每箱)由下表给出:

matlab优化工具箱的使用

优化工具箱的使用 MATLAB的优化工具箱提供了各种优化函数,这些优化函数可以通过在命令行输入相应的函数名加以调用;此外为了使用方便,MATLAB还提供了图形界面的优化工具(GUI Optimization tool)。 1 GUI优化工具 1.1 GUI优化工具的启动 有两种启动方法: (1)在命令行输入optimtool; (2)在MATLAB主界面单击左下角的“Start”按钮,然后依次选择“Toolboxes→Optimization→Optimization tool” 1.2 GUI优化工具的界面 界面分为三大块: 左边(Problem Setup and Results)为优化问题的描述及计算结果显示; 中间(Options)为优化选项的设置; 右边(Quick Reference)为帮助。为了界面的简洁,可以单击右上角“<<”、“>>”的按钮将帮助隐藏或显示。 1、优化问题的描述及计算结果显示 此板块主要包括选择求解器、目标函数描述、约束条件描述等部分。 选择合适的求解器以及恰当的优化算法,是进行优化问题求解的首要工作。 ?Solver:选择优化问题的种类,每类优化问题对应不同的求解函数。 ?Algorithm:选择算法,对于不同的求解函数,可用的算法也不同。 Problem框组用于描述优化问题,包括以下内容: ?Objective function: 输入目标函数。 ?Derivatives: 选择目标函数微分(或梯度)的计算方式。 ?Start point: 初始点。 Constraints框组用于描述约束条件,包括以下内容: ?Linear inequalities: 线性不等式约束,其中A为约束系数矩阵,b代表约束向量。 ?Linear equalities: 线性等式约束,其中Aeq为约束系数矩阵,beq代表约束向量。 ?Bounds: 自变量上下界约束。 ?Nonlinear Constraints function; 非线性约束函数。 ?Derivatives: 非线性约束函数的微分(或梯度)的计算方式。 Run solver and view results框组用于显示求解过程和结果。 (对于不同的优化问题类型,此板块可能会不同,这是因为各个求解函数需要的参数个数不一样,如Fminunc 函数就没有Constraints框组。)

用matlab求解200变量优化问题

200变量优化 原创 问题: 某超市有十个收银台,分别标号为1,2,3,4,5,6,7,8,9,10。已知该十个收银台平均每收取100元所需时间为t=[2,1,1,2 ,3,2,2,1,1,3](单位为分钟)。现有顾客20名,已知该20名顾客购物金额分别为p=[1,2,3,4,4,3,1,1,4,1,2,3,4,2,5,4,3,2,1,2](单位为百元)。现已知每个收银台同时最多容纳10名顾客。问如何安排可使总收银时间最少?并求出最小时间值。 数学模型: 建立一个10×20的矩阵A , 令矩阵A 的元素:x(k)=A[i,j]=?? ?号收银台号顾客不选,号收银台号顾客选,j 0j i 1i 则,目标函数为: Min(Z)= [2,1,1,2 ,3,2,2,1,1,3]A [1,2,3,4,4,3,1,1,4,1,2,3,4,2,5,4,3,2,1,2]T 不等式约束条件: ∑=20 1)(k k x 10≤; ;10)(40 21≤∑=k k x ;10)(6041 ≤∑=k k x 10)(8061≤∑=k k x ;10)(200 181≤∑=k k x

等式约束条件: x(1)+x(21)+x(41)+x(61)+ +x(161)+x(181)=1; x(2)+x(22)+x(42)+x(62)+ +x(162)+x(182)=1; x(3)+x(23)+x(43)+x(63)+ +x(163)+x(183)=1; x(4)+x(24)+x(44)+x(64)+ +x(164)+x(184)=1; x(19)+x(39)+x(59)+x(79)+ +x(179)+x(199)=1; x(20)+x(40)+x(60)+x(80)+ +x(180)+x(200)=1;MATLAB计算程序: f=[2 4 6 8 8 6 2 2 8 2 4 6 8 4 10 8 6 4 2 4 ... 1 2 3 4 4 3 1 1 4 1 2 3 4 2 5 4 3 2 1 2 ... 1 2 3 4 4 3 1 1 4 1 2 3 4 2 5 4 3 2 1 2 ... 2 4 6 8 8 6 2 2 8 2 4 6 8 4 10 8 6 4 2 4 ... 3 6 9 12 12 9 3 3 12 3 6 9 12 6 15 12 9 6 3 6 ... 2 4 6 8 8 6 2 2 8 2 4 6 8 4 10 8 6 4 2 4 ... 2 4 6 8 8 6 2 2 8 2 4 6 8 4 10 8 6 4 2 4 ... 1 2 3 4 4 3 1 1 4 1 2 3 4 2 5 4 3 2 1 2 ... 1 2 3 4 4 3 1 1 4 1 2 3 4 2 5 4 3 2 1 2 ... 3 6 9 12 12 9 3 3 12 3 6 9 12 6 15 12 9 6 3 6]; a=zeros(10,200); for i=1:10 for j=1:200 if j>20*(i-1) & j<=20*i a(i,j)=1; else a(i,j)=0; end end end b=[10 10 10 10 10 10 10 10 10 10]; aeq=zeros(20,200); for i=1:20 for j=i:20:200 aeq(i,j)=1; end

Matlab 7最优化问题求解

Matlab 最优化问题求解 1.无约束最优化问题 无约束最优化问题一般描述为: 其中,该数学表示的含义是求一组x,使得目标函数f(x)最小.这种问题也称为最小化问题. Matlab中提供了3个求最小值的函数,调用格式为: ·[x,fval]=fminbnd(@fname,x1,x2,options):求一元函数在(x1,x2)区间中的极小值点x和极小值fval; ·[x,fval]=fminsearch(@fname,x0,options):基于单纯形算法求多元函数的极小值点x和极小值fval; ·[x,fval]=fminunc(@fname,x0,options):基于拟牛顿法求多元函数的极小值点x和极小值fval. 这里讨论的是局域极值问题,fname是定义函数m文件的文件名,fminbnd的输入变量x1,x2分别是研究区间的左右边界;fminsearch和fminunc的输入变量x0是一个向量,表示极值点的初值.options为优化参数,可以通过optimset函数来设置,当目标函数的阶数大于2时,使用fminunc比fminsearch更有效;但是目标函数高度不连续时,使用fminsearch函数效果更好. Matlab中没有专门求最大值的函数,只要-f(x)在(a,b)上的最小值就是f(x)在(a,b)上最大值的相反数.因此用fminbnd(-f,x1,x2)返回函数f(x)在(x1,x2)上的最大值的相反数. --------------------------------------------------------------------- 例如:求函数在区间[0,5]内的极小值和极小值点. function fx=mymin(x) fx=x.^3-2*x-5; [x,fval]=fminbnd(@mymin,0,5) x = 0.8165 fval = -6.0887 因此极小值点为x=0.8165,极小值为-6.0887 --------------------------------------------------------------------- 例如:设 求函数f(x,y,z)在(0.5,0.5,0.5)附近的最小值. function f=fxyz(p)

优化方法MATLAB编程——大连理工大学

优化方法上机大作业 学院: 姓名: 学号: 指导老师:肖现涛

第一题 源程序如下: function zy_x = di1ti(x) %di1ti是用来求解优化作业第一题的函数。 x0=x; yimuxulong=0.000001; g0=g(x0);s0=-g0; A=2*ones(100,100); k=0; while k<100 lanmed=-(g0)'*s0/(s0'*A*s0); x=x0+lanmed*s0; g=g(x); k=k+1; if norm(g)

break; end miu=norm(g)^2/norm(g0)^2; s=-g+miu*s0; g0=g; s0=s;x0=x; end function f=f(x) f=(x'*ones(100,1))^2-x'*ones(100,1); function g=g(x) g=(2*x'*ones(100,1))*ones(100,1)-ones(100,1); 代入x0,运行结果如下: >> x=zeros(100,1); >> di1ti(x) After 1 iterations,obtain the optimal solution. The optimal solution is -0.250000. The optimal "x" is "ans". ans =0.005*ones(100,1).

Matlab求解优化问题(可编辑修改word版)

= + x 预备知识:M 文件简介 在 MATLAB 中,用户可以利用 Edtior (编辑器)建立 M 文件,然后在命令窗口中的“>>”提示符下键入 M 文件的主文件名,回车执行. MATLAB 的 M 文件有两类:命令文件和函数文件。将原本要在 MATLAB 环境下直接输入的语句,放 在一个以 .m 为后缀的文件中,这一文件就称为命令文件;函数文件由五部分组成:函数定义行、H1 行、函数帮助文本、函数体、注释,MATLAB 的内部函数都是由函数文件定义的。 1.11 优化(最值、数学规划) 在数学上,优化问题包括最值问题和数学规划问题等,后者又包括线性规划、整数规划(含 0-1 规划)、二次规划等. 在 MATLAB 中,求解最值问题的命令主要有: fminbnd (f,x1,x2) 求一元函数 f 在区间[x1,x2]上的最小值点[x,fval]=fminbnd(f,x1,x2) 求一元函数 f 在区间[x1,x2]上的最小值点和最小值fminsearch (’f’,x0) 求多元函数 f 在点 x0 附近的最小值点[x,fval]=fminsearch(’f’,x0) 求多元函数 f 在点 x0 附近的最小值点和最小值 例 1.11.1 求函数 f (x ) = x 2 + 3x + 2 在区间[-5,5]上的最小值点和最小值. >> [x,fval]=fminbnd('x^2+3*x+2',-5,5) x = -1.5000 fval = -0.2500 2 例 1.11.2 求函数 f (x 1 , x 2 ) x 1 x 2 1 + 2 在点(1,1) 附近的最小值点和最小值. x 2 >> [x,fval]= fminsearch('x(1)*x(2)+2/x(1)+2/x(2)',[1 1]) x = 1.2599 1.2599 fval = 4.7622

Matlab在最优化问题中的应用举例

在企业生产和日常生活中,人们总是希望用最少的人力、物力、财力和时间去办更多的事,这就是所谓的最优化问题。线性规划方法是解决最优化问题的有效方法之一,因此受到人们的普遍关注。在企业生产过程中,生产计划安排直接影响到企业的经济效益,而生产计划本质就是在目标一定时,对于人力、时间和物质资源的优化配置问题。 1。综述了最优化方法,归纳了最优化闯题中线性规划和非线性规划模型的解法,并给出了相应的matlab求解代码。 2。提出了基于信息增益率的用电客户指标选择方法,根据信息增益率的大小选择对分类有贡献的指标。 关键词:Matlab,最优化方法,应用举例 In enterprise production and daily life, people always hope with the least amount of human, material and financial resources and time to do more things, this is the so-called optimization problem. Linear programming method is to solve the optimal problem, so one of the effective method by people's attention. In enterprise production process, production plan directly affect the enterprise economic benefit, but in essence is the production plan for the target certain human, time and material resources optimization allocation problem. 1·Studying the optimization,summing up the solutions ofoptimization problem for both linear and non-linear programming model and proposing the matlabcode. 2·Proposing a new way based on information-gain-ratio to choose the powercustomer indices,selecting the indices which are more contributive to theclassification,in order to avoid over learning。 K eywords:Matlab,Optimization method,Applied examples 1.1选题背景及研究意义 1.1.1最优化问题的相关应用

最优化方法及其Matlab程序设计

最优化方法及其Matlab程序设计 1.最优化方法概述 在生活和工作中,人们对于同一个问题往往会提出多个解决方案,并通过各方面的论证,从中提取最佳方案。最优化方法就是专门研究如何从多个方案中科学合理地提取出最佳方案的科学。最优化是每个人,每个单位所希望实现的事情。对于产品设计者来说,是考虑如何用最少的材料,最大的性能价格比,设计出满足市场需要的产品。对于企业的管理者来说,则是如何合理、充分使用现有的设备,减少库存,降低能耗,降低成本,以实现企业的最大利润。 由于优化问题无所不在,目前最优化方法的应用和研究已经深入到了生产和科研的各个领域,如土木工程、机械工程、化学工程、运输调度、生产控制、经济规划、经济管理等,并取得了显著的经济效益和社会效益。 用最优化方法解决最优化问题的技术称为最优化技术,它包含两个方面的内容: 1)建立数学模型。 即用数学语言来描述最优化问题。模型中的数学关系式反映了最优化问题所要达到的目标和各种约束条件。 2)数学求解。 数学模型建好以后,选择合理的最优化算法进行求解。 最优化方法的发展很快,现在已经包含有多个分支,如线性规划、整数规划、非线性规划、动态规划、多目标规划等。 2.最优化方法(算法)浅析 最优化方法求解很大程度上依赖于最优化算法的选择。这里,对最优化算法做一个简单的分类,并对一些比较常用的典型算法进行解析,旨在加深对一些最优化算法的理解。 最优化算法的分类方法很多,根据不同的分类依据可以得到不同的结果,这里根据优化算法对计算机技术的依赖程度,可以将最优化算法进行一个系统分类:线性规划与整数规划;非线性规划;智能优化方法;变分法与动态规划。 2.1 线性规划与整数规划 线性规划在工业、农业、商业、交通运输、军事和科研的各个研究领域有广泛应用。例如,在资源有限的情况下,如何合理使用人力、物力和资金等资源,以获取最大效益;如何组织生产、合理安排工艺流程或调制产品成分等,使所消耗的资源(人力、设备台时、资金、原始材料等)为最少等。 线性规划方法有单纯形方法、大M法、两阶段法等。 整数规划有割平面法、分枝定界法等。 2.2 非线性规划 20世纪中期,随着计算机技术的发展,出现了许多有效的算法——如一些非线性规划算法。非线性规划广泛用于机械设计、工程管理、经济生产、科学研究和军事等方面。 非线性规划问题包括:

(完整word版)Matlab求解优化问题

预备知识:M 文件简介 在MATLAB 中,用户可以利用Edtior (编辑器)建立M 文件,然后在命令窗口中的“>>”提示符下键入M 文件的主文件名,回车执行. MATLAB 的M 文件有两类:命令文件和函数文件。将原本要在MATLAB 环境下直接输入的语句,放在一个以 .m 为后缀的文件中,这一文件就称为命令文件;函数文件由五部分组成:函数定义行、H1行、函数帮助文本、函数体、注释,MATLAB 的内部函数都是由函数文件定义的。 1.11 优化(最值、数学规划) 在数学上,优化问题包括最值问题和数学规划问题等,后者又包括线性规划、整数规划(含0-1规划)、二次规划等. 在MATLAB 中,求解最值问题的命令主要有: fminbnd (f,x1,x2) 求一元函数f 在区间[x1,x2]上的最小值点 [x,fval]=fminbnd(f,x1,x2) 求一元函数f 在区间[x1,x2]上的最小值点和最小值 fminsearch (’f’,x0) 求多元函数f 在点x0附近的最小值点 [x,fval]=fminsearch(’f’,x0) 求多元函数f 在点x0附近的最小值点和最小值 例1.11.1 求函数23)(2 ++=x x x f 在区间]5,5[-上的最小值点和最小值. >> [x,fval]=fminbnd('x^2+3*x+2',-5,5) x = -1.5000 fval = -0.2500 例1.11.2 求函数2 121212 2),(x x x x x x f ++ =在点)1,1(附近的最小值点和最小值. >> [x,fval]= fminsearch('x(1)*x(2)+2/x(1)+2/x(2)',[1 1]) x = 1.2599 1.2599 fval = 4.7622

最优化各种方法MATLAB代码

最优化程序MATLAB 代码 程序 1.目标任务 分别用最速下降法、FR 共轭梯度法、DFP 法和BFGS 法求解无约束最值问题: 22 112212minf (x)x 2x x 4x x 3x =-++- 取初始点(1)T x (1,1)=和(2)T x (2,2)=,分别通过Matlab 编程实现求解过程。 2.程序实现(程序文件见附件) 2.1公用函数 1) function f= fun( X ) %所求问题目标函数 f=X(1)^2-2*X(1)*X(2)+4*X(2)^2+X(1)-3*X(2); end 2) function g= gfun( X ) %所求问题目标函数梯度 g=[2*X(1)-2*X(2)+1,-2*X(1)+8*X(2)-3]; end 3) function He = Hess( X ) %所求问题目标函数Hesse 矩阵 n=length(X); He=zeros(n,n); He=[2,-2; -2,4]; End 2.2其他函数

图2.2 函数程序文件图 1) 最速下降法的文件名为 :grad.m 。 2) FR 共轭梯度法的文件名为:frcg.m 。 3) DFP 法的文件名为:dfp.m 。 4) BFGS 法的文件名为:bfgs.m 。 3.程序运行结果 3.1最速下降法 3.1.1 初值为(1)T x (1,1) 图3.1.1.1 最速下降法求解最小值输出结果图

图3.1.1.2最速下降法求解最小值过程图 3.1.2初值为(2)T x (2,2) 图3.1.2.1最速下降法求解最小值输出结果图

Matlab环境下的遗传算法程序设计及优化问题求解

本栏目责任编辑:谢媛媛 开发研究与设计技术 遗传算法(GA)是借鉴生物界自然选择和群体进化机制而形成的一种全局寻优算法,其本质上是一种基于概率的随机搜索算法。与其它的优化算法相比较,遗传算法具有以下优点:(1)通用性;(2)并行性;(3)简单性和可操作性;(4)稳定性和全局性。 1遗传算法概述 在遗传算法中,首先将空间问题中的决策变量通过一定的编码表示成遗传空间的一个个体,它是一个基因型串结构数据;然后将目标函数转换成适应度值,用来评价每个个体的优劣,并将其作为遗传操作的依据。遗传操作包括三个算子:选择、重组和变异。选择是从当前群体中选择适应值高的个体以生成交配池的过程,交配池是当前代与下一代之间的中间群体。选择算子的作用是用来提高群体的平均适应度值。重组算子的作用是将原有的优良基因遗传给下一代个体,并生成包含更复杂基因的新个体,它先从交配池中的个体随机配对,然后将两两配对的个体按一定方式相互交换部分基因。变异算子是对个体的某一个或几位按某一较小的概率进行反转其二进制字符,模拟自然界的基因突变现象。 遗传算法的基本程序实现流程如下: (1)先确定待优化的参数大致范围,然后对搜索空间进行编码;(2)随机产生包含各个个体的初始种群; (3)将种群中各个个体解码成对应的参数值,用解码后的参数求代价函数和适应度函数,运用适应度函数评估检测各个个体适应度; (4)对收敛条件进行判断,如果已经找到最佳个体,则停止,否则继续进行遗传操作; (5)进行选择操作,让适应度大的个体在种群中占有较大的比例,一些适应度较小的个体将会被淘汰; (6)随机交叉,两个个体按一定的交叉概率进行交叉操作,并产生两个新的子个体; (7)按照一定的变异概率变异,使个体的某个或某些位的性质发生改变; (8)重复步骤(3)至(7),直至参数收敛达到预定的指标。使用遗传算法需要确定的运行参数有:编码串长度、交叉和变异概率、种群规模。编码串长度由问题的所要求的精度来决定。交叉概率控制着交叉操作的频率,交叉操作是遗传算法中产生新 个体的主要方法,所以交叉概率通常应取较大值,但如果交叉概率太大的话又可能反过来会破坏群体的优良模式,一般取0.4- 0.99。变异概率也是影响新个体产生的一个因素,如果变异概率 太小,则产生新个体较少;如果变异概率太大,则又会使遗传算法变成随机搜索,为保证个体变异后与其父体不会产生太大的差异,通常取变异概率为0.0001-0.1以保证种群发展的稳定性。种群规模太大时,计算量会很大,使遗传算法的运行效率降低,种群规模太小时,可以提高遗传算法的运行速度,但却种群的多样性却降低了,有可能找不出最优解,通常取种群数目20-100。从理论上讲,不存在一组适用于所有问题的最佳参数值,随着问题参数的变化,有效问参数的差异往往是十分显著的。 2用Matlab语言来实现遗传算法 Matlab是一个高性能的计算软件,配备有功能强大的数学函 数支持库,适用范围大,编程效率高,语句简单,功能齐备,是世界上顶级的计算与仿真程序软件。利用Matlab来编写遗传算法程序简单而且易于操作。 2.1编码 编码就是把一个问题的可行解从其解空间转换到遗传算法能够处理的搜索空间的转化方法,编码形式决定了重组算子的操作。遗传算法是对编码后的个体作选择与交叉运算,然后通过这些反复运算达到优化目标。遗传算法首要的问题是通过编码将决策变量表示成串结构数据。我们常用的是二进制编码,即用二进制数构成的符号串来表示每个个体。通常根据搜索精度(sca_var)、决策变量上界(range(2))的和下界(range(1))来确定各个二进制字符串的长度(bit_n), 搜索精度为sca_var=(range(2)-range(1))./ (2^bit_n—1),然后再随机产生一个的初始种群(be_gen),其规模为popusize。下面用encoding函数来实现编码和产生初始的种群: function[be_gen,bit_n]=encoding(sca_var,range(1),range(2),popusize) bit_n=ceil(log2((range(2)-range(1))./sca_var));be_gen=randint(popusize,sum(bit_n));2.2译码 决策变量经过编码之后,各个个体构成的种群be_gen要通过解码才能转换成原问题空间的决策变量构成的种群vgen,这样才 收稿日期:2006-01-05 作者简介:梁科(1981-),硕士研究生,研究方向:智能计算与优化方法;夏定纯(1963-),教授,研究方向:人工智能,计算机在线检测。 Matlab 环境下的遗传算法程序设计及优化问题求解 梁科,夏定纯 (武汉科技学院计算机科学学院,湖北武汉430073) 摘要:本文介绍了遗传算法的流程及几个算子,给出了在matlab语言环境下实现编码、译码、选择、重组和变异各算子的编程方法,最后用一个实例来说明遗传算法在寻找全局最优解中的应用。 关键词:遗传算法;matlab;程序设计中图分类号:TP312 文献标识码:A 文章编号:1009-3044(2007)04-11049-03 GeneticAlgorithmProgrammingByMatlabAndOptimizingProblemSolving LIANGKe,XIADing-chun (DepartmentofComputerscience,WuhanUniversityofScience&Engineering,Wuhan430073,China) Abstract:Theseveralfactorsofgeneticalgorithmhavebeenpresentedinthispaper,andtheprogrammingofencoding、decoding、choice、crossoverandmutationofmatlabhavebeengiven,finally,afunctionoptimizingproblemhasbeenpresentedtodemonstratedtheapplicationaboutglobaloptimizingofgeneticalgorithm. Keywords:GA;matlab;programming 1049

相关文档
最新文档