习题解答
- 某厂向用户提供发动机。合同规定,第一、二、三季度末分别交货40台、60台、80台。每季度的生产费用为f(x)=ax+bx2 ( 元 ),其中x是该季生产的台数。若交货后有剩余,可用于下季度交货,但需支付存储费,每台每季度c元。已知该厂每季度最大生产能力为100台,第一季度开始时无存货,设a=50、b=0.2、c=4,问工厂应如何安排生产计划,才能既满足合同又使总费用最低?讨论a,b,c变化对计划的影响。
解:设x1,x2,x3分别表示工厂三季度生产的发动机数量。建立模型如下:
minf=a(x1+x2+x3)+b(x21+x22+x23)+c(2x1+x2−140)
s.t.x1≥40x1+x2⩾100x1+x2+x3⩾1800⩽x1,x2,x3⩽100(整数)
问题的最优解为(50,60,70)。
- 求解下面无约束非线性规划问题:
minf(x)=x21+25x22
其中x=(x1,x2)T。要求选取初始点x(0)=(2,2)T,精度ϵ=10−6。
问题的最优解为(0,0)。
- 试写出非线性规划问题
minf(X)=x21+x22−4x1−8x2
s.t.x1+x2≤2x1≥0,x2≥0
的Kuhn-Tucker条件(不求解)。
解: (1)改写非线性规划为标准形式,上述约束问题可改写为:
minf(X)=x21+x22−4x1−8x2
s.t.g1(X)=x1+x2−2≤0x1≥0,x2≥0
(2)求目标函数和约束条件的梯度
∇f(X)=(2x1−42x2−8),∇g1(X)=(11)
(3)KT条件
∇f(X)+γ1∇g1(X)=(2x1−42x2−8)+γ1(11)=0γ1≥0
注意:两个变量的取值都是非负,为KT条件更为约减,没有变成约束。
- 求解下面非线性规划问题
minf(x)=x21+x22+x23+8s.t.⎧⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪⎨⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪⎩x21−x2+x23≥0x1+x22+x33≤20−x1−x22+2=0x2+2x23=3x1,x2,x3≥0
最优解为(0.552,1.203,0.948),最优值为10.651。
- 考虑非线性规划问题
min(x1−3)2+(x2−2)2−x21−x22⩾5x1+2x2=4x1,x2⩾0
检验X(1)=(2,1)T,是否为KT点。
解:(1)改写非线性规划为标准形式,上述约束问题可改写为:
minf(X)=(x1−3)2+(x2−2)2g1(X)=x21+x22−5⩽0g2(X)=x1+2x2−4=0x1,x2⩾0
将X(1)=(2,1)T代入上述约束条件,发现X(1)正好在前两个约束条件的边界上,因此前两个约束是起作用约束。
(2)求目标函数和约束条件的梯度
∇f(X)=(2(x1−3)2(x2−2)),∇g1(X)=(2x12x2),∇g2(X)=(12)
(3)判断是否满足KT条件
∇f(X(1))+γ1∇g1(X(1))+μ1∇g2(X(1))=(−2−2)+γ1(42)+μ1(12)=(00)
得 γ1=13>0,μ1=23, 故 X(1)=(2,1)T 满足 Kuhn-Tucker 条 件。
- 用梯度法(最速下降法)求下述函数的极小点。
f(X)=(x1−2)2+(x2−1)2
解:取初始点 X(0)=(0,0)T。
∇f(X)=[2(x1−2),2(x2−1)]T,∇f(X(0))=(−4,−2)T
∇2f(X)=(2002)
λ0=∇f(X(0))T∇f(X(0))∇f(X(0))T∇2f(X)∇f(X(0))=(−4,−2)(−4−2)(−4,−2)(2002)(−4−2)=2040=12
X(1)=X(0)−λ0∇f(X(0))=(00)−12(−4−2)=(21)
∇f(X(1))=(0,0)T,故 X(1)为极小点,其极小值 f(X(1))=0。
- 用梯度法(最速下降法)求函数f(X)=x21+5x22的极小点,取允误差ε=0.7。
解:取初始点 X(0)=(2,1)T。
∇f(X)=(2x1,10x2)T,∇f(X(0))=(4,10)T
∇2f(X)=(20010)
λ0=∇f(X(0))T∇f(X(0))∇f(X(0))T∇2f(X)∇f(X(0))=(4,10)(410)(4,10)(20010)(410)=0.1124
X(1)=X(0)−λ0∇f(X(0))=(21)−0.1124(410)=(1.5504−0.1240)
∇f(X(1))=(3.1008−1.2400)
∥∇f(X(1))∥2=11.1526>ε
由于梯度的平方范数大于允许误差ε,算法未收敛,需继续迭代。
λ1=∇f(X(1))T∇f(X(1))∇f(X(1))T∇2f(X)∇f(X(1))=(3.1008−1.2400)T(3.1008−1.2400)(3.1008−1.2400)T(20010)(3.1008−1.2400)=0.3223
更新点 X(2):
X(2)=X(1)−λ1∇f(X(1))=(1.5504−0.1240)−0.3223(3.1008−1.2400)=(0.55100.2757)
计算新的梯度 ∇f(X(2)):
∇f(X(2))=(1.1022.757),∥∇f(X(2))∥2=8.815>ε
λ2=(1.1022.757)T(1.1022.757)(1.1022.757)T(20010)(1.1022.757)=0.1124
更新点 X(3):
X(3)=X(2)−λ2∇f(X(2))=(0.55100.2757)−0.1124(1.1022.757)=(0.4271−0.03419)
计算新的梯度 ∇f(X(3)):
∇f(X(3))=(0.8542−0.3419),∥∇f(X(3))∥2=0.8466>ε
λ3=(0.8542−0.3419)T(0.8542−0.3419)(0.8542−0.3419)T(20010)(0.8542−0.3419)=0.3221
更新点 X(4):
X(4)=X(3)−λ3∇f(X(3))=(0.4271−0.03419)−0.3221(0.8542−0.3419)=(0.1520.0759)
计算新的梯度 ∇f(X(4)):
∇f(X(4))=(0.3040.759),∥∇f(X(4))∥2=0.6685<ε
故 X(4)=(0.152,0.0759)T 为近似极小点,此时的函数值为:f(X(4))=0.0519。
- 用库恩—塔克条件求解下面非线性规划
maxf(x)=(x−4)21≤x≤6
解:先将其变为问题标准的形式:
⎧⎨⎩minf(x)=−(x−4)2,g1(x)=x−1≥0,g2(x)=6−x≥0.
设K−T点为x∗,各函数的梯度为:
∇f(x)=−2(x−4),∇g1(x)=1,∇g2(x)=−1.
对第一个和第二个约束条件分别引入广义拉格朗日乘子u∗1、u∗2,则得该问题的K−T条件如下:
⎧⎪
⎪
⎪⎨⎪
⎪
⎪⎩−2(x∗−4)−u∗1−u∗2=0,u∗1(x∗−1)=0,u∗2(6−x∗)=0,u∗1≥0, u∗2≥0.
为解该方程组,需要考虑以下几种情况:
-
u∗1>0,u∗2>0:无解。
-
u∗1>0,u∗2=0:x∗=1, f(x∗)=9
-
u∗1=0,u∗2=0:x∗=4, f(x∗)=0
-
u∗1=0,u∗2>0:x∗=6, f(x∗)=4
对应上述后面三种情形,我们得到了三个K−T 点,其中:
- x∗=1和 x∗=6 为极大值点,且 x∗=1为最大值点,最大值f(x∗)=9;
- x∗=4为可行域的内点,它不是该问题的极大值点,而是极小点。
- 用罚函数法求解
{minf(x)=(x−12)2,x≤0
解 构造罚函数
P(x,M)=f(x)+M[min(0,g(x))]2=(x−12)2+M[min(0,−x)]2
对于固定的M,令
dP(x,M)dx=2(x−12)−2M[min(0,−x)]=0
对于不满足约束条件的点x,有
2(x−12)+2Mx=0
从而求得其最小值点x(M)如下:
x(M)=12(1+M)
当 M=0时,x(M)=12;当M=1时,x(M)=14;
当M=10时,x(M)=122;当M→∞时,x(M)→0,说明原约束问题的极小点是x∗=0。
10 用罚函数法求解
⎧⎪
⎪
⎪
⎪
⎪
⎪⎨⎪
⎪
⎪
⎪
⎪
⎪⎩minf(X)=x1g1(X)=2−x2−(x1−1)3≥0g2(X)=x2−2−(x1−1)3≥0g3(X)=x1≥0g4(X)=x2≥0
解 构造罚函数
P(X,M)=−x1+M[2−x2−(x1−1)3]2u1(g1(X))+M[x2−2−(x1−1)3]2u2(g2(X))+Mx21u3(g3(X))+Mx22u4(g4(X))
∂P(X,M)∂x1=−1−6M[2−x2−(x1−1)3](x1−1)2u1(g1(X))−6M[x2−2−(x1−1)3](x1−1)2u2(g2(X))+2Mx1u3(g3(X))
∂P(X,M)∂x2=−2M[2−x2−(x1−1)3]u1(g1(X))+2M[x2−2−(x1−1)3]u2(g2(X))
+2Mx2u4(g4(X))
现考虑第一象限中的点,可令
u1(g1(X))=u2(g2(X))=1
u3(g3(X))=u4(g4(X))=0
为求极值点,令
∂P(X,M)∂x2=0
得到x∗2=2
再令 ∂P(X,M)∂x1=0,并代入上述结果,得
(x1−1)5=112M
令 M→∞,得 x∗1=1,即该问题的最优点是X∗=(1,2)T。
- 用共轭下降法计算函数 f(x1,x2)=x21+x22−x1x2+x1+x2+1 的极小点和极小值,设初始点为 x0=(0,0)T,迭代误差为 ε=0.05。
解 因为函数 f(x1,x2) 的梯度为:∇f(x1,x2)=(2x1−x2+1 2x2−x1+1),那么在点 x0=(0 0) 的梯度值等于:∇f(x0)=(1 1)。令 d0=−∇f(x0)=(−1 −1),则有
x1=x0+αd0=(00)+α(−1−1)=(−α−α)
将 x1 代入目标函数中,有:f(x1)=α2+2α+1,求解步长 α0,使得
f(x0+α0d0)=minα≥0{α2+2α+1}
为此,令 ddα(α2+2α+1)=2α+2=0,求得 α0=−1,所以,
x1=x0+α0d0=(00)−1(−1−1)=(11)
计算 f(x1,x2) 在点 x1 处的梯度值,有 ∇f(x1)=(2 2)。计算 f(x1,x2) 在点 x1 处的搜索方向:
β1=(∥∇f(x1)∥∥∇f(x0)∥)2=(√(2)2+(2)2√12+12)2=4d1=−∇f(x1)+β1d0=−(22)+4(−1−1)=(−6−6)x2=x1+αd1=(11)+α(−6−6)=(1−6α1−6α)
将 x2 代入目标函数中,有:f(x2)=36α2−24α+4,求解步长 α1,使得
f(x1+α1d1)=minα≥0{36α2−24α+4}
为此,令 ddα(36α2−24α+4)=72α−24=0,求得 α1=13,所以,
x2=x1+α1d1=(11)+13(−6−6)=(−1−1)
计算 f(x1,x2) 在点 x2 处的梯度值:∇f(x2)=(0 0),由于 |∇f(x2)|=0≤0.05,那么 x2 是局部极小点,对应 x2 的局部极小值为 f(−1,−1)=0,迭代结束。
- 文化传播公司预算 10,000 元的广告投入。电视广告费为每分钟 3,000 元;电台广告费为每分钟 1,000 元。如果公司购买 x 分钟电视广告,和 y 分钟电台广告,其销售收入为:
f(x,y)=−2x2−y2+xy+8x+3y
问公司是否有增加广告预算的余地?
解 我们将它表示成下述非线性规划问题:
minf(x,y)=−2x2−y2+xy+8x+3y
s.t.{3x+y=10x≥0,y≥0
那么 L(x,y,λ)=−2x2−y2+xy+8x+3y+λ(10−3x−y)
我们设:
∂L∂x=∂L∂y=∂L∂λ=0
则:
∂L∂x=−4x+y+8−3λ=0∂L∂y=−2y+x+3−λ=0∂L∂λ=10−3x−y=0
求解后,获得:
x∗=6928,y∗=7328,λ∗=14
因为 λ∗=14,这说明如果该公司继续增加广告预算,比如说,δ(元),就可增加 0.25δ(元)销售收入。
- 假设你是一家公司的销售经理,负责优化某个产品的销售策略。根据历史数据和市场分析,你确定了一个销售指标公式 f(x)=−x1−x2+2x21+2x1x2+x22 来评估不同的销售策略,其中,销售策略的参数由 x1 和 x2 描述,表示采用不同的促销手段和定价策略,为了确保销售策略的可行性,促销手段和定价策略均不能为负值。根据给定的指标公式,你应该如何确定最佳的销售策略参数,以使得该指标最小?(终止误差 ε=0.3 )
解 根据题目可得出
minf(x)=−x1−x2+2x21+2x1x2+x22
取初始点为 X(1)=(0,0)T,ε=0.3
目标函数 f(x) 的梯度为:
∇f(x)=⎡⎢⎣∂f(x)∂x1∂f(x)∂x2⎤⎥⎦=[−1+4x1+2x2−1+2x1+2x2]
即 ∇f(X(1))=[−1 −1],由于 |∇f(X(1))|≈1.4142>0.3,令搜索方向 d(1)=−∇f(X(1))=[1 1],再从 X(1) 出发,沿 d(1) 方向作一维寻优,令步长变量为 λ,最优步长为 λ1,则有
X(1)+λd(1)=[00]+λ[11]=[λλ]
故 f(x)=f(X(1)+λd(1))=−λ−λ+2λ2+2λλ+λ2=5λ2−2λ=φ1(λ) 令 φ′1(λ)=10λ−2=0,可得 λ1=15,X(2)=X(1)+λ1d(1)=[0 0]+15[1 1]=[0.2 0.2] 求出 X(2) 点之后,与上类似地,进行第二次迭代:∇f(X(2))=[0.2 −0.2]
由于 |∇f(X(2))|≈0.2828<0.3,故 X(2)=[0.2 0.2] 为近似极小点,此时的函数值 f(X∗)=0.48。
- 某一施工单位希望设计一座跨越一条河流的桥梁,为了提高桥梁的性能,需要使得函数 f(x)=2x21+2x1x2+x22−10x1−10x2 最小,希望桥梁在材料使用和结构设计上能够达到最佳的效果,以提高桥梁的承重能力、稳定性和耐久性。其中,变量 x1 和 x2 分别代表桥梁的设计参数。为了避免过分复杂的结构和不切实际的设计,桥梁的设计参数的取值必须满足 x21+x22≤5。另外,桥梁的设计参数 x1 和 x2 的线性组合必须满足 3x1+x2≤6。
根据上述对问题的描述,可以明确的看出该优化问题是在有约束条件下求取最小值,我们可以使用库恩-塔克条件来解决。通过对约束条件引入广义拉格朗日乘子,分情况对引入的约束条件进行讨论,如果可以找到一组满足库恩-塔克条件的可行点和广义拉格朗日乘子,就能够找到该问题的最优点。
minf(X)=2x21+2x1x2+x22−10x1−10x2s.t.{x21+x22≤53x1+x2≤6
解 将约束条件化成一般形式:
{g1(X)=−x21−x22+5≥0g2(X)=−3x1−x2+6≥0
设库恩-塔克点位 X∗=(x1,x2)T,各函数梯度为
∇f(X∗)=[4x1+2x2−102x1+2x2−10],∇g1(X∗)=[−2x1−2x2],∇g2(X∗)=[−3−1]
对约束条件进入广义拉格朗日乘子 μ∗1 和 μ∗2,得该问题的库恩-塔克条件如下:
⎧⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪⎨⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪⎩[4x1+2x2−102x1+2x2−10]−μ1[−2x1−2x2]−μ2[−3−1]=0μ1(5−x21−x22)=0μ2(6−3x1−x2)=0μ1≥0μ2≥0
⎧⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪⎨⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪⎩4x1+2x2−10+2μ1x1+3μ2=02x1+2x2−10+2μ1x2+μ2=0μ1(5−x21−x22)=0μ2(6−3x1−x2)=0μ1≥0μ2≥0
(1) 两个约束都是不起作用约束,则有 μ1=0,μ2=0,得到方程组:
{4x1+2x2−10=02x1+2x2−10=0
解得:
{x1=0x2=5
代入约束条件,不满足 gi(X)≥0,因此该点不是可行点。
(2) g1(X)≥0 是起作用约束,g2(X)≥0 是不起作用约束,则有 μ2=0,得到方程组:
⎧⎪
⎪
⎪
⎪⎨⎪
⎪
⎪
⎪⎩4x1+2x2−10+2μ1x1=02x1+2x2−10+2μ1x2=0μ1(5−x21−x22)=0μ1≥0
解得:
⎧⎪
⎪
⎪
⎪⎨⎪
⎪
⎪
⎪⎩x1=1x2=2μ1=1μ2=0
代入原问题检验,可知该点为可行点,且满足 K-T 定理的条件,又是一个正则点,故它是一个 K-T 点。
因为 g1(X)≥0 是起作用约束,此时可以是 μ1>0,也可以是 μ1=0,后一种情况与(1)相同,已知不可行。
(3) g1(X)≥0 是不起作用约束,g2(X)≥0 是起作用约束,则 μ1=0
⎧⎪
⎪
⎪
⎪⎨⎪
⎪
⎪
⎪⎩4x1+2x2−10+3μ2=02x1+2x2−10+μ2=0μ2(6−3x1−x2)=0μ2≥0
解得 μ2=0,同(1)的结果;或 μ2=−25,舍去。
(4) 两个约束都是起作用约束,则 μ1>0,μ2>0
⎧⎪
⎪
⎪
⎪⎨⎪
⎪
⎪
⎪⎩4x1+2x2−10+2μ1x1+3μ2=02x1+2x2−10+2μ1x2+μ2=05−x21−x22=06−3x1−x2=0
解得
⎧⎪
⎪
⎪
⎪⎨⎪
⎪
⎪
⎪⎩x1=1.43x2=1.72μ1=1.37μ2=−1.02
舍去。
因此本题的 K-T 点为 X∗=(1,2)T,同时本题 f(X) 为凸函数,而 g1(X)≥0 为凹函数,g2(X)≥0 为线性函数,也可视为凹函数,所以此题为凸规划。对于凸规划 K-T 条件也是充分条件,所以 X∗=(1,2)T 也是本题的全局最小点,最小值。
- 利用可行方向法求解以下非线性规划问题
minf(X)=x21+x22−4x1−4x2+8,x1+2x2−4≤0
从初始点 X(0)=[0 0] 出发,进行迭代求解。
初始化
- 初始点:X(0)=[0 0]
- 约束检查: g(X(0))=x1+2x2−4=0+2⋅0−4=−4≤0 初始点满足约束条件,可行。
可行方向法步骤
目标函数:
f(X)=x21+x22−4x1−4x2+8
其梯度为:
∇f(X)=[2x1−42x2−4]
约束函数:
g(X)=x1+2x2−4
其梯度为:
∇g(X)=[12]
在初始点 X(0)=[0 0] 处:
∇f(X(0))=[−4−4],∇g(X(0))=[12]
可行方向需满足以下条件:
dT∇f(X)<0(目标函数下降)。
dT∇g(X)≤0(满足约束条件)。
设下降方向为 d=[d1 d2],联立解得:
d=−∇f(X(0))=[44]
在线搜索中,寻找步长 α,使得 f(X(0)+αd) 最小。
将方向 d=[4 4] 和初始点 X(0)=[0 0] 代入目标函数:
f(X(0)+αd)=f([4α4α])
目标函数展开为:
f(X)=x21+x22−4x1−4x2+8
代入 X=[4α 4α]:
f(α)=(4α)2+(4α)2−4(4α)−4(4α)+8
化简为:
f(α)=32α2−32α+8
这是一个开口向上的二次函数,最小值对应顶点:
α=−b2a=−−322⋅32=12
根据更新公式:
X(1)=X(0)+αd=[00]+12[44]=[22]
在新点 X(1)=[2 2] 处:
g(X(1))=x1+2x2−4=2+2⋅2−4=2≤0
约束条件仍然满足。
在 X(1) 处,计算目标函数梯度:
∇f(X(1))=[2x1−42x2−4]=[2⋅2−42⋅2−4]=[00]
梯度为零,说明已经达到最优解。
最优解为:
X∗=[22]
目标函数值:
f(X∗)=22+22−4⋅2−4⋅2+8=0
- 使用共轭梯度法求解以下二次函数的极小点
f(X)=12XTAX
其中:
A=[1112]
共轭梯度法的主要步骤包括:
初始化变量和参数。
计算初始梯度,确定搜索方向。
使用线搜索更新步长。
更新搜索方向并继续迭代,直至梯度收敛到零。
初始化点设为:
X(0)=[00]
初始梯度为:
g(0)=∇f(X(0))=AX(0)=[1112][00]=[00]
初始搜索方向:
d(0)=−g(0)=[00]
假设当前迭代点为 X(k),对应梯度为 g(k),搜索方向为 d(k)。
(1)线搜索
确定步长 αk:
αk=−g(k)Td(k)d(k)TAd(k)
(2)更新变量
更新点:
X(k+1)=X(k)+αkd(k)
(3)更新梯度
计算新的梯度:
g(k+1)=∇f(X(k+1))=AX(k+1)
(4)更新搜索方向
搜索方向使用以下公式:
βk=g(k+1)Tg(k+1)g(k)Tg(k)
d(k+1)=−g(k+1)+βkd(k)
迭代至梯度满足 |g(k)|<ϵ 为止。
根据矩阵 A=[1112],详细迭代如下:
第 0 步:
- 初始点:X(0)=[0 0]
- 梯度:g(0)=AX(0)=[0 0]
- 搜索方向:d(0)=−g(0)=[0 0]
停止条件已满足。
由于初始点 X(0) 即为零点,梯度也为零,因此最优解为:
X∗=[00]
最小值:
f(X∗)=12X∗TAX∗=0
[16道题解答下载链接](https://wwxh.lanzoum.com/igY660yqgc1a密码:74z9)

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!