北航最优化方法有关大作业参考

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1流量工程问题
重述
定一个有向网 G=(N,E) ,此中 N 是点集, E 是弧集。

令 A 是网 G 的点弧关矩,即 N×E 矩,且第 l 列与弧里 (I,j) ,第 i 行元素 1 ,第 j 行元素 -1 ,其他元素 0。

再令
b m=(b m1 ,⋯,b mN )T,f m =(f m1,⋯ ,f mE )T,可将等式束表示成:
Af m=b m
本算例一典 TE 算例。

算例网有 7 个点和 13 条弧,每条弧的容量是 5 个位。

别的有四
个需求量均 4 个位的源一目的,详细的源点、目的点信息如所
示。

里了,省区了未用到的弧。

别的,弧上的数字表示弧的号。

此,c=((5,5 ⋯,5) 1 )T,
×13
依据上述四个束条件,分求得四个状况下的最决议量x=((x 12 ,x13,⋯ ,x75)1×13 )。

1 网拓扑和流量需求
7 节点算例求解
算例1(b1=[4;-4;0;0;0;0;0]T)
转变为线性规划问题:
Minimize c T x1
Subject to Ax1=b1
x1>=0 利用 Matlab 编写对偶纯真形法程序,可求得:
最优解为 x1*=[4 0 0 0 0 0 0 0 0 0 0 0 0] T
对应的最优值 c T x1=20
1.2.2 算例 2(b2=[4;0;-4;0;0;0;0] T)
Minimize c T x2
Subject to Ax2=b2
X2>=0 利用 Matlab 编写对偶纯真形法程序,可求得:
最优解为 x2*=[0 4 0 0 0 0 0 0 0 0 0 0 0]T
对应的最优值 c T x2=20
1.2.3 算例 3(b3=[0;-4;4;0;0;0;0] T)
Minimize
T
c x3
Subject to Ax3=b3
X3>=0 利用 Matlab 编写对偶纯真形法程序,可求得:
最优解为 x3*=[4 0 0 0 4 0 0 0 0 0 0 0 0] T
对应的最优值 c T x3=40
算例4(b4=[4;0;0;0;0;0;-4]T )
Minimize c T x4
Subject to Ax4=b4
X4>=0
利用 Matlab 编写对偶纯真形法程序,可求得:
最优解为 x4*=[4 0 0 4 0 0 0 0 0 4 0 0 0] T
对应的最优值 c T x4=60
1.3 计算结果及结果说明
算例1(b1=[4;-4;0;0;0;0;0]T)
算例 1 中,由 b1 可知,节点 2 为需求节点,节点 1 为供应节点,由节点 1 将信息传输至节点 2 的最短路径为弧 1。

图 2 算例 1 最优传输表示图
求得的最优解为 x1*=[4 0 0 0 0 0 0 0 0 0 0 0 0]T,即只经过弧1运输4个单位流量,其他弧无流量。

又由于,每条弧的花费均为 5 ,所以最小花费为20。

经剖析,计算结果合理可信。

算例2(b2=[4;0;-4;0;0;0;0]T)
算例 2 中,由 b2 可知,节点 3 为需求节点,节点 1 为供应节点,由节点 1 将信息传输至节点 2 的最短路径为弧 2。

图 3 算例 2 最优传输表示图
求得的最优解为 x2*=[0 4 0 0 0 0 0 0 0 0 0 0 0]T,即只经过弧2运输4个单位流量,其他弧无流量。

又由于,每条弧的花费均为 5 ,所以最小花费为20。

经剖析,计算结果合理可信。

算例3(b3=[0;-4;4;0;0;0;0]T)
算例 3 中,由 b3 可知,节点 2 为需求节点,节点 3 为供应节点,由节点 3 将信息传输至节点 2 的最短路径为弧 5->弧 1 。

图 4 算例 3 最优传输表示图
求得的最优解为 x3*=[4 0 0 0 4 0 0 0 0 0 0 0 0]T,即经过弧5运输4个单位流量至节点 1,再经弧 1 运输 4 个单位流量至节点 2,其他弧无流量。

又由于,每条弧的花费均为 5,所以最小花费为 40 。

经剖析,计算结果合理可信。

算例4(b4=[4;0;0;0;0;0;-4]T )
算例 4 中,由 b4 可知,节点 7 为需求节点,节点 1 为供应节点,由节点 1 将信息传输至节点 7 的最短路径为弧 1->弧 4-> 弧 10 。

图 5 算例 3 最优传输表示图
求得的最优解为 x4*=[4 0 0 4 0 0 0 0 0 4 0 0 0]T,即经过弧1运输4个单位流量至节点 2,再经弧 4 运输 4 个单位流量至节点 5,最后经弧 5 运输 4 个单位流量至节点 7,其他弧无流量。

又由于,每条弧的花费均为 5 ,所以最小花费为 60。

经剖析,计算结果合理可信。

2重要算法编写与察看
习题
( a)初值为( 0,0 )时
-4
本算法律 g 的 2 范数在 <10时,停止迭代,经过86 次迭代收敛。

图 6 收敛因子截图
(b)初值为( -0.4,0 )时
-4
本算法律 g 的 2 范数在 <10时,停止迭代,经过112 次迭代收敛。

图 7 收敛因子截图
( c)初值为( 10,0 )时
本算法律 g 的 2 范数在 <10 -4时,停止迭代,经过 5 次迭代收敛。

收敛因子( f(k+1) -f*) /(f(k)-f*)
图 8 收敛因子截图
( d)初值为( 11,0 )时
本算法律 g 的 2 范数在 <10 -4时,停止迭代,经过 2 次迭代收敛。

收敛因子( f(k+1) -f*) /(f(k)-f*)= 0
图 9 收敛因子截图
图 10 自变量( x1,x2)截图
总结:最速降线法的收敛因子跟着初值的不一样而变化,关于个别初值(如本习题初值取(11,0)时),算法可快速收敛。

所以,初值的选用关于最速降线法的收敛速度有较大影响。

习题
()由 f ( x) 9x 4ln( x 7) 可得:
a
4
f '( x)9
x 7
4
f "( x)
( x7)2
故,牛顿迭代法确实切公式为:
4
9
s x 7 4
( x7)2
(b)从以下五个初值开始迭代
(1)
表 1 初值 1 牛顿法迭代结果表
迭代次数x 值梯度值
1 -1
2
3
4
5
(2)
表 2 初值 2 牛顿法迭代结果表
迭代次数x 值梯度值
1-11
2
3
4
5
(3)
表 3 初值 3 牛顿法迭代结果表
迭代
次数x 值梯度值
1-391
2
3 -94.
4 -4.51E+01
5 -20.
(4)
表 4 初值 4 牛顿法迭代结果表
迭代次数x 值梯度值
1 4
2-16
3
47.369879 -1.81E+00
5
(5)
表 5 初值 5 牛顿法迭代结果表
迭代次数x 值梯度值
1
2
3
4 -5.13E+01
5 -23.
( c)本问题的最优值为7.4444444 。

由上述五个初值点的前五步迭代能够看出:
当初值点在区间(7.4444444 ,7.8888 )内时,第二次迭代点将落在(7,7.4444444 )之间,随后渐渐增添,直至迫近最优值。

当初值点在区间( 7,7.4444444 )内时,则迭代点渐渐增添,迫近最优值。

当取初值不在( 7,7.8888 )内时,牛顿法不收敛。

习题
(a)没有线搜寻的牛顿法
μ=0.1 时,
μ=1 时,
(b)拥有线搜寻的牛顿法
μ=0.1 时,
μ=1 时,
(未达成)
习题
(a)初值选( 1.2,1.2 )时,
最速降线法:
本算法律 g 的 2 范数在 <10 -2时,停止迭代,经过3262 次迭代获得以下结果。

图 11 最速降线法初值为()的等值线图及迭代轨迹牛顿法:
本算法律 s 的 4 范数在 <10-6时,停止迭代,经过 4 次迭代获得以下结果。

图 12 牛顿法初值为()的等值线图及迭代轨迹
(b)初值选( -1.2,1 )时,
最速降线法:
本算法律 g 的 4 范数在 <10 -2时,停止迭代,经过6835 次迭代获得以下结果。

图 13 最速降线法初值为( -1.2,1)的等值线图及迭代轨迹
牛顿法:
本算法律 s 的 4 范数在 <10-6时,停止迭代,经过 6 次迭代获得以下结果。

图 14 牛顿法初值为( -1.2,1)的等值线图及迭代轨迹
2.5 习题
N=5
迭代 6 次后,知足收敛条件。

表 6 N=5 时,各迭代点 x 值
迭代次数 / 重量 1 4 4 4 5
1 0 0 0 0 0
4
4
4
5
6 -140 -1140
7 5 -140 640 -1140 640
N=8
迭代 19 次后,知足收敛条件。

表 7 N=8 时,各迭代点 x 值
迭代次数 / 重量 1 4 4 4 5 6 7 8
1 0 0 0 0 0 0 0 0
4
4
4
5
6
7
8
9
10
11
14
14
14
15
16 -148600 -168167
17 -148600 -168168
18 -148600 -168168
19 -7560 46400 -148600 416416 -168168 51480
40 -7560 46400 -148600 416416 -168168 51480 N=14
迭代 49 次后,知足收敛条件。

(表略)
N=40
迭代 74 次后,知足收敛条件。

(表略)
习题
调用 MATLAB 自带的 lsqnonlin.m 函数,计算可得对应的 x(1) 、x(2) 和标准差以下表所示。

表 8 选用各初值的计算结果
初值x1 虚实部x1 虚部x2 实部x2 虚部标准差
[1 1] 0
[0.1 0.1] 0
[0.01 0.01] 0
由上可知,标准差值较为恒定,随初值变化不十分明显; x1 和 x2 值随初值选用的不一
样而不一样。

习题
(未达成)
3附录
对偶纯真形法函数MATLAB 程序
function [sol,val,kk]=duioudanchun(A,N)
B=A;
[mA,nA]=size(A);
kk=0;
flag=1;
while flag
kk=kk+1;
if A(:,nA)>=0
flag=0;
sol=zeros(1,nA);
for i=1:mA-1
sol(N(i))=A(i,nA);
end
val=sol*(B(mA,:))';
else
for i=1:mA-1
if A(i,nA)<0&A(i,1:nA-1)>=0
disp( 'have infinite solution!' );
flag=0;
break ;
end
end
if flag
temp=0;
for i=1:mA-1
if A(i,nA)<temp
temp=A(i,nA);
outb=i;
end
end
sita=zeros(1,nA-1);
for i=1:nA-1
if A(outb,i)<0
sita(i)=A(mA,i)/A(outb,i);
end
end
temp=-inf;
for i=1:nA-1
if sita(i)<0&sita(i)>temp
temp=sita(i);
inb=i;
end
end
for i=1:mA-1
if i==outb
N(i)=inb;
end
end
A(outb,:)=A(outb,:)/A(outb,inb);
for i=1:mA
if i~=outb
A(i,:)=A(i,:)-A(outb,:)*A(i,inb);
A(mA,nA)=0;
end
end
end
end
end
最速降线法求Rosenbrock函数最小值matlab程序以下:function rb = rbfun(x,y)
rb=100*(y-x^2)^2+(1-x)^2
end
clear
clc
syms x y g G
g=gradient(rb(x,y),[x y]) %定义梯度向量
G=hessian(rb(x,y),[x y])% 定义海森阵
X(1,:)=[-1.4 1];% 定义初始点
x=X(1,1);y=X(1,4);
A(1,:)=subs(g)%给梯度赋初值
i=1
while(norm(A(i,:),4)>10^(-4)) %收敛条件
f(i)=rb(x,y) %记录函数值
P(i,:)=-A(i,:) %获得迭代方向
fz(i)=-A(i,:)*P(i,:)' %-gT*p % 精准搜寻法步长的分子fm(i)=P(i,:)*subs(G)*P(i,:)' %精准搜寻法步长的分母a(i)=fz(i)/fm(i) % 精准搜寻法步长
X(i+1,:) = X(i,:)+a(i)*P(i,:) % 产生新的点
x=X(i+1,1);y=X(i+1,4)
A(i+1,:)=subs(g) %产生新的梯度
i=i+1
end
牛顿法求Rosenbrock函数最小值matlab程序以下:function rb = rbfun(x,y)
rb=100*(y-x^2)^2+(1-x)^2
end
clear
clc
syms x y g G
g=gradient(rb(x,y),[x y]) %定义梯度向量
G=hessian(rb(x,y),[x y])% 定义海森阵
X(1,:)=[-1.4 1];% 定义初值
x=X(1,1);y=X(1,4);
A(1,:)=subs(g) % 给梯度赋初值
H=subs(inv(G))% 获得海森阵初值
S(1,:)=-A(1,:)*H% 获得 s 初值
i=1
while (norm(S(i,:),4)>10^(-6)) %收敛条件
f(i)=rb(x,y) %定义函数值
X(i+1,:) = X(i,:)+S(i,:) % 获得下一迭代点x=X(i+1,1);y=X(i+1,4) %给 x,y 分别赋值A(i+1,:)=subs(g) % 获得新的梯度值H=subs(inv(G)) %获得新的海森阵S(i+1,:)=-A(i+1,:)*H % 获得新的增量 s i=i+1
end
共轭梯度法求解习题 5.19 程序以下:
clear
clc
K=40
G=zeros(K,K)
for m = 1: K
for n = 1: K
G(m,n)=1/(m+n-1)
end
end
X(1,:)=zeros(1,K)
b=ones(1,K)
A(1,:)=X(1,:)*G-b
P(1,:)=-A(1,:)
i=1
while (norm(A(i,:),4)>10^(-6)) %收敛条件
d=P(i,:)*G
fz(i)=A(i,:)*A(i,:)' % 精准搜寻法步长的分子
fm(i)=P(i,:)*d'% 精准搜寻法步长的分母
a(i)=fz(i)/fm(i)% 精准搜寻法步长X(i+1,:) = X(i,:)+a(i)*P(i,:)% 产生新的点
A(i+1,:)=A(i,:)+a(i)*d
beta(i+1)=(A(i+1,:)*A(i+1,:)')/(A(i,:)*A(i,:)')
P(i+1,:)=-A(i+1,:)+beta(i+1)*P(i,:)
i=i+1
end。

相关文档
最新文档