最优化计算方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在生活实践中,很多重要的实际问题都是线性的( 在生活实践中,很多重要的实际问题都是线性的(至少能 够用线性函数很好的近似表示),所以我们一般把这些问 够用线性函数很好的近似表示),所以我们一般把这些问 ), 题化为线性的目标函数和约束条件进行分析, 题化为线性的目标函数和约束条件进行分析,通常将目标 函数和约束都是线性表达式的规划问题称为线性规划 。
s.t.
也可以用矩阵形式来表示: 也可以用矩阵形式来表示:
min s.t.
f = cT x Ax <= b , x >= 0
线性规划的可行解是满足约束条件的解; 线性规划的可行解是满足约束条件的解;线性规划 的最优解是使目标函数达到最优的可行解。 的最优解是使目标函数达到最优的可行解。 线性规划关于解的情况可以是: 线性规划关于解的情况可以是: 1、无可行解,即不存在满足约束条件的解; 、无可行解,即不存在满足约束条件的解; 2、有唯一最优解,即在可行解中有唯一的最有解; 、有唯一最优解,即在可行解中有唯一的最有解; 3、有无穷最优解,即在可行解中有无穷个解都可使目 、有无穷最优解, 标函数达到最优; 标函数达到最优; 4、有可行解,但由于目标函数值无界而无最优解。 、有可行解,但由于目标函数值无界而无最优解。
三、内容与步骤: 内容与步骤:
优化工具箱中, 在Matlab优化工具箱中,linprog函数是使用单纯形法求解 优化工具箱中 函数是使用单纯形法求解 下述线性规划问题的函数。 下述线性规划问题的函数。
min s .t .
f = cT x Ax <= b , aeqx = beq ; vlb <= x <= vub
如没有不等式,而只有等式时, 如没有不等式,而只有等式时,A=[ ],b=[ ]; 输出的结果: 表示最优解向量 表示最优解向量; 表示最优值。 输出的结果:x表示最优解向量;fval表示最优值。 表示最优值
【例 1】 求解线性规划问题: 】 求解线性规划问题:
max
f = 3x1 x 2 x 3 x1 2x 2 + x 3 <= 11 4x + x + 2x >= 3 1 2 3 2x1 x 3 = 1 x i >= 0, i = 1,2,3
第二节 无约束规划计算方法
一、实验目的
1、了解无约束规划问题的求解原理与方法 ; 、 2、会用Matlab软件求解无约束规划问题。 、会用 软件求解无约束规划问题。 软件求解无约束规划问题
二、实验原理和方法
无约束规划问题的解法一般按目标函数的形式分为两大类: 无约束规划问题的解法一般按目标函数的形式分为两大类: 一类是一元函数的一维搜索法,如黄金分割法、插值法等; 一类是一元函数的一维搜索法,如黄金分割法、插值法等; 另一类是求解多元函数的下降迭代法。 另一类是求解多元函数的下降迭代法。
【例 2】 求解 min 】 取
3 2 1 2 f ( x ) = x1 + x 2 x1x 2 2 x1 2 2
x ( 0) = (2,4) T
解:首先建立函数文件fun702.m 首先建立函数文件
function f = fun702( x) f = 3 / 2 x(1)^ 2 + 1 / 2 x(2)^ 2 x(1) x(2) 2 x(1)
s.t.
解:考虑到linprog函数只解决形如 考虑到 函数只解决形如
min s.t.
f = cT x Ax <= b , aeqx = beq; x >= 0
的线性规划。 的线性规划。所以先要将线性规划 变为如下形式: 变为如下形式:
min
f = 3x 1 + x 2 + x 3 2 x1 x 3 = 1 x 2 x + x <= 11 1 2 3 4 x 1 x 2 2 x 3 <= 3 x i >= 0 , i = 1, 2 ,3
即极小值为-1, 时取得。 即极小值为 ,是x1=1,x2=1时取得。 时取得
【例 3】 解非线性方程组 】
x1 2 x 2 1 = 0 ( x1 2) 2 + ( x 2 0.5) 2 1 = 0
解:解此非线性方程组等价于求解无约束非线性规划问题: 解此非线性方程组等价于求解无约束非线性规划问题:
Matlab程序: 程序: 程序 ch701.m
s .t .
然后建立M文件如下: 然后建立 文件如下: 文件如下
c=[-3;1;1];A=[1 -2 1;4 -1 -2];b=[11;-3]; aeq=[2 0 -1];beq=-1;vlb=[0;0;0]; [x,fval]=linprog(c,A,b,aeq,beq,vlb)
优化工具箱中, 函数是用SQP算法来 在Matlab优化工具箱中,fmincon函数是用 优化工具箱中 函数是用 算法来 解决一般的约束非线性规划的函数,它的命令格式为: 解决一般的约束非线性规划的函数,它的命令格式为:
x=fmincon(‘fun’,x0,A,b) x=fmincon(‘fun’,x0,A,b,Aeq,beq) x=fmincon(‘fun’,x0,A,b,Aeq,beq,lb,ub) x=fmincon(‘fun’,x0,A,b,Aeq,beq,lb,ub,nonlco n)
min ( x1 x 2 1) 2 + (( x1 2) 2 + ( x 2 0.5) 2 1) 2
2
然后建立函数文件fun703.m 然后建立函数文件
function f = fun 703 ( x ) f = ( x (1)^ 2 x ( 2 ) 1)^ 2 + (( x (1) 2 )^ 2 + ( x ( 2 ) 0 .5)^ 2 1)^ 2
一般求解线性规划的常用方法是单纯形法和改进 的单纯形法, 的单纯形法,这类方法的基本思路是先求得一个可行 解,检验是否为最优解;若不是,可用迭代的方法找 检验是否为最优解;若不是, 到另一个更优的可行解,经过有限次迭代后, 到另一个更优的可行解,经过有限次迭代后,可以找 到可行解中的最优解或者判定无最优解。 到可行解中的最优解或者判定无最优解。
它的命令格式为: 它的命令格式为:
[ x, fval] = linprog(c, A, b, aeq, beq, vlb, vub) [ x, fval] = linprog(c, A, b, aeq, beq, vlb, vub, x0)
其中: 为约束条件矩阵 为约束条件矩阵, 分别为目标函数的系数向量和 其中:A为约束条件矩阵,b,c分别为目标函数的系数向量和 约束条件中最右边的数值向量;也可设置解向量的上界 和 约束条件中最右边的数值向量;也可设置解向量的上界vlb和 下界vub,即解向量必须满足vlb<=x<=vub;还可预先设置 ,即解向量必须满足 下界 ; 初始解向量x0。 初始解向量 。
作为文件名保存此M文件后 以ch701作为文件名保存此 文件后,在命令窗口 作为文件名保存此 文件后, 输入ch701后即可得到结果: 后即可得到结果: 输入 后即可得到结果 x = 4.0000 1.0000 9.0000
同时返回fval=-2 同时返回
对应到原来的线性规划中即知目标函数的最大值为2, 对应到原来的线性规划中即知目标函数的最大值为 ,此时 x1=4,x2=1,x3=9。 。
在命令窗口输入: 在命令窗口输入: x0=[0;0]; x=fminunc(‘fun703’,x0) 结果显示: 结果显示: f =5.2979e-011 x =1.0673 0.1392 则非线性方程组的解为x1=1.0673,x2=0.1392。 。 则非线性方程组的解为
Matlab程序: 程序: 程序 ch703.m
第七章 最优化计算方法
第一节 线性方程组的应用
一、实验目的: 实验目的:
1、了解线性规划问题及可行解、最优解的概念 ; 、了解线性规划问题及可行解、 2、掌握Matlab软件关于求解线性规划的语句和方法。 、掌握 软件关于求解线性规划的语句和方法。 软件关于求解线性规划的语句和方法
二、实验原理和方法: 实验原理和方法:
第三节 约束非线性规划计算方法 一、实验目的
1、了解约束非线性规划问题的求解原理与方法; 、了解约束非线性规划问题的求解原理与方法; 2、会用Matlab软件求解约束非线性规划问题。 、会用 软件求解约束非线性规划问题。 软件求解约束非线性规划问题
二、实验原理和方法
对于约束非线性规划,随着目标函数和约束条件的不同, 对于约束非线性规划,随着目标函数和约束条件的不同, 解法也不同,一般来说,有两类方法: 解法也不同,一般来说,有两类方法: )、将约束问题化为无约束问题的求解方法 (1)、将约束问题化为无约束问题的求解方法; )、将约束问题化为无约束问题的求解方法; )、用线性规划来逼近非线性规划 (2)、用线性规划来逼近非线性规划; )、用线性规划来逼近非线性规划;
三、实验内容与步骤
软件中, 在Matlab软件中,求解无约束规划的常用命令是: 软件中 求解无约束规划的常用命令是: x=fminunc(‘fun’,x0) 其中,fun函数应预先定义到 文件中,并设置初始 函数应预先定义到M文件中 其中, 函数应预先定义到 文件中, 解向量为x0。 解向量为 。
三、实验内容与步骤
约束非线性规划的一般形式为: 约束非线性规划的一般形式为:
min f ( x)
x
Biblioteka Baidu
s.t
Ax ≤ b, aeq* x = beq (线性约束 ) g( x) ≤ 0, ceq( x) = 0 (非线性约束) lb ≤ x ≤ ub
其中, 为多元实值函数;g(x)为向量函数 并且 为向量函数,并且 其中,f(x)为多元实值函数 为多元实值函数 为向量函数 并且f(x),g(x)中至 中至 少有一个函数是非线性函数的(否则成为线性规划问题) 少有一个函数是非线性函数的(否则成为线性规划问题)。
【例 4】 求解约束非线性规划: 】 求解约束非线性规划:
max e x1 x2 2 (3 e x1 x2 2 ) s.t. e x1 + x2 2 = 3
(初值为 初值为[1;1]) 初值为
首先将问题转化为matlab要求的格式 即求出 要求的格式;即求出 首先将问题转化为 要求的格式 fun,A,b,Aeq,Beq,X0,Lb,Ub 文件fun7041.m 解:首先建立一个m文件 首先建立一个 文件 function y=fun7041(x) y=-exp(x(1))*x(2)^2*(3-exp(x(1))-x(2)^2); 存储为fun7041.m 存储为
迭代的基本思想和步骤大致可分为以下四步: 迭代的基本思想和步骤大致可分为以下四步:
1) 2) 3) 选取初始点x 0 , 并令k = 0; 得到x k 后,选取一个搜索方向P k , 使得沿着这个方向的 目标函数f ( x)的值时下降的; 由x k出发,沿P k 方向选取适当的步长λk , 使得 f ( x k + λk P k ) < f ( x k ) 由此得到下一个点x k +1 = x k + λk P k 4) 检验新得到的点x k +1是否满足精度要求的最优解。 如果是,则结束运算;否则,令k = k + 1, 返回(2)继续迭代
为文件名保存此函数文件。 以fun702为文件名保存此函数文件。 为文件名保存此函数文件 在命令窗口输入: 在命令窗口输入: x0=[-2;4]; x=fminunc('fun702',x0) 结果显示: 结果显示:
f= -1.0000 x= 1.0000 1.0000
Matlab程序: 程序: 程序 ch702.m
它的一般形式是: 它的一般形式是:
min
f = c1x1 + c 2 x 2 + + c n x n a 11x1 + a 12 x 2 + + a1n x n <= b1 a x + a x + + a x <= b 21 1 22 2 2n n 2 a m1x1 + a m 2 x 2 + + a mn x n <= b m x i >= 0 (i = 1,2,, n )
s.t.
也可以用矩阵形式来表示: 也可以用矩阵形式来表示:
min s.t.
f = cT x Ax <= b , x >= 0
线性规划的可行解是满足约束条件的解; 线性规划的可行解是满足约束条件的解;线性规划 的最优解是使目标函数达到最优的可行解。 的最优解是使目标函数达到最优的可行解。 线性规划关于解的情况可以是: 线性规划关于解的情况可以是: 1、无可行解,即不存在满足约束条件的解; 、无可行解,即不存在满足约束条件的解; 2、有唯一最优解,即在可行解中有唯一的最有解; 、有唯一最优解,即在可行解中有唯一的最有解; 3、有无穷最优解,即在可行解中有无穷个解都可使目 、有无穷最优解, 标函数达到最优; 标函数达到最优; 4、有可行解,但由于目标函数值无界而无最优解。 、有可行解,但由于目标函数值无界而无最优解。
三、内容与步骤: 内容与步骤:
优化工具箱中, 在Matlab优化工具箱中,linprog函数是使用单纯形法求解 优化工具箱中 函数是使用单纯形法求解 下述线性规划问题的函数。 下述线性规划问题的函数。
min s .t .
f = cT x Ax <= b , aeqx = beq ; vlb <= x <= vub
如没有不等式,而只有等式时, 如没有不等式,而只有等式时,A=[ ],b=[ ]; 输出的结果: 表示最优解向量 表示最优解向量; 表示最优值。 输出的结果:x表示最优解向量;fval表示最优值。 表示最优值
【例 1】 求解线性规划问题: 】 求解线性规划问题:
max
f = 3x1 x 2 x 3 x1 2x 2 + x 3 <= 11 4x + x + 2x >= 3 1 2 3 2x1 x 3 = 1 x i >= 0, i = 1,2,3
第二节 无约束规划计算方法
一、实验目的
1、了解无约束规划问题的求解原理与方法 ; 、 2、会用Matlab软件求解无约束规划问题。 、会用 软件求解无约束规划问题。 软件求解无约束规划问题
二、实验原理和方法
无约束规划问题的解法一般按目标函数的形式分为两大类: 无约束规划问题的解法一般按目标函数的形式分为两大类: 一类是一元函数的一维搜索法,如黄金分割法、插值法等; 一类是一元函数的一维搜索法,如黄金分割法、插值法等; 另一类是求解多元函数的下降迭代法。 另一类是求解多元函数的下降迭代法。
【例 2】 求解 min 】 取
3 2 1 2 f ( x ) = x1 + x 2 x1x 2 2 x1 2 2
x ( 0) = (2,4) T
解:首先建立函数文件fun702.m 首先建立函数文件
function f = fun702( x) f = 3 / 2 x(1)^ 2 + 1 / 2 x(2)^ 2 x(1) x(2) 2 x(1)
s.t.
解:考虑到linprog函数只解决形如 考虑到 函数只解决形如
min s.t.
f = cT x Ax <= b , aeqx = beq; x >= 0
的线性规划。 的线性规划。所以先要将线性规划 变为如下形式: 变为如下形式:
min
f = 3x 1 + x 2 + x 3 2 x1 x 3 = 1 x 2 x + x <= 11 1 2 3 4 x 1 x 2 2 x 3 <= 3 x i >= 0 , i = 1, 2 ,3
即极小值为-1, 时取得。 即极小值为 ,是x1=1,x2=1时取得。 时取得
【例 3】 解非线性方程组 】
x1 2 x 2 1 = 0 ( x1 2) 2 + ( x 2 0.5) 2 1 = 0
解:解此非线性方程组等价于求解无约束非线性规划问题: 解此非线性方程组等价于求解无约束非线性规划问题:
Matlab程序: 程序: 程序 ch701.m
s .t .
然后建立M文件如下: 然后建立 文件如下: 文件如下
c=[-3;1;1];A=[1 -2 1;4 -1 -2];b=[11;-3]; aeq=[2 0 -1];beq=-1;vlb=[0;0;0]; [x,fval]=linprog(c,A,b,aeq,beq,vlb)
优化工具箱中, 函数是用SQP算法来 在Matlab优化工具箱中,fmincon函数是用 优化工具箱中 函数是用 算法来 解决一般的约束非线性规划的函数,它的命令格式为: 解决一般的约束非线性规划的函数,它的命令格式为:
x=fmincon(‘fun’,x0,A,b) x=fmincon(‘fun’,x0,A,b,Aeq,beq) x=fmincon(‘fun’,x0,A,b,Aeq,beq,lb,ub) x=fmincon(‘fun’,x0,A,b,Aeq,beq,lb,ub,nonlco n)
min ( x1 x 2 1) 2 + (( x1 2) 2 + ( x 2 0.5) 2 1) 2
2
然后建立函数文件fun703.m 然后建立函数文件
function f = fun 703 ( x ) f = ( x (1)^ 2 x ( 2 ) 1)^ 2 + (( x (1) 2 )^ 2 + ( x ( 2 ) 0 .5)^ 2 1)^ 2
一般求解线性规划的常用方法是单纯形法和改进 的单纯形法, 的单纯形法,这类方法的基本思路是先求得一个可行 解,检验是否为最优解;若不是,可用迭代的方法找 检验是否为最优解;若不是, 到另一个更优的可行解,经过有限次迭代后, 到另一个更优的可行解,经过有限次迭代后,可以找 到可行解中的最优解或者判定无最优解。 到可行解中的最优解或者判定无最优解。
它的命令格式为: 它的命令格式为:
[ x, fval] = linprog(c, A, b, aeq, beq, vlb, vub) [ x, fval] = linprog(c, A, b, aeq, beq, vlb, vub, x0)
其中: 为约束条件矩阵 为约束条件矩阵, 分别为目标函数的系数向量和 其中:A为约束条件矩阵,b,c分别为目标函数的系数向量和 约束条件中最右边的数值向量;也可设置解向量的上界 和 约束条件中最右边的数值向量;也可设置解向量的上界vlb和 下界vub,即解向量必须满足vlb<=x<=vub;还可预先设置 ,即解向量必须满足 下界 ; 初始解向量x0。 初始解向量 。
作为文件名保存此M文件后 以ch701作为文件名保存此 文件后,在命令窗口 作为文件名保存此 文件后, 输入ch701后即可得到结果: 后即可得到结果: 输入 后即可得到结果 x = 4.0000 1.0000 9.0000
同时返回fval=-2 同时返回
对应到原来的线性规划中即知目标函数的最大值为2, 对应到原来的线性规划中即知目标函数的最大值为 ,此时 x1=4,x2=1,x3=9。 。
在命令窗口输入: 在命令窗口输入: x0=[0;0]; x=fminunc(‘fun703’,x0) 结果显示: 结果显示: f =5.2979e-011 x =1.0673 0.1392 则非线性方程组的解为x1=1.0673,x2=0.1392。 。 则非线性方程组的解为
Matlab程序: 程序: 程序 ch703.m
第七章 最优化计算方法
第一节 线性方程组的应用
一、实验目的: 实验目的:
1、了解线性规划问题及可行解、最优解的概念 ; 、了解线性规划问题及可行解、 2、掌握Matlab软件关于求解线性规划的语句和方法。 、掌握 软件关于求解线性规划的语句和方法。 软件关于求解线性规划的语句和方法
二、实验原理和方法: 实验原理和方法:
第三节 约束非线性规划计算方法 一、实验目的
1、了解约束非线性规划问题的求解原理与方法; 、了解约束非线性规划问题的求解原理与方法; 2、会用Matlab软件求解约束非线性规划问题。 、会用 软件求解约束非线性规划问题。 软件求解约束非线性规划问题
二、实验原理和方法
对于约束非线性规划,随着目标函数和约束条件的不同, 对于约束非线性规划,随着目标函数和约束条件的不同, 解法也不同,一般来说,有两类方法: 解法也不同,一般来说,有两类方法: )、将约束问题化为无约束问题的求解方法 (1)、将约束问题化为无约束问题的求解方法; )、将约束问题化为无约束问题的求解方法; )、用线性规划来逼近非线性规划 (2)、用线性规划来逼近非线性规划; )、用线性规划来逼近非线性规划;
三、实验内容与步骤
软件中, 在Matlab软件中,求解无约束规划的常用命令是: 软件中 求解无约束规划的常用命令是: x=fminunc(‘fun’,x0) 其中,fun函数应预先定义到 文件中,并设置初始 函数应预先定义到M文件中 其中, 函数应预先定义到 文件中, 解向量为x0。 解向量为 。
三、实验内容与步骤
约束非线性规划的一般形式为: 约束非线性规划的一般形式为:
min f ( x)
x
Biblioteka Baidu
s.t
Ax ≤ b, aeq* x = beq (线性约束 ) g( x) ≤ 0, ceq( x) = 0 (非线性约束) lb ≤ x ≤ ub
其中, 为多元实值函数;g(x)为向量函数 并且 为向量函数,并且 其中,f(x)为多元实值函数 为多元实值函数 为向量函数 并且f(x),g(x)中至 中至 少有一个函数是非线性函数的(否则成为线性规划问题) 少有一个函数是非线性函数的(否则成为线性规划问题)。
【例 4】 求解约束非线性规划: 】 求解约束非线性规划:
max e x1 x2 2 (3 e x1 x2 2 ) s.t. e x1 + x2 2 = 3
(初值为 初值为[1;1]) 初值为
首先将问题转化为matlab要求的格式 即求出 要求的格式;即求出 首先将问题转化为 要求的格式 fun,A,b,Aeq,Beq,X0,Lb,Ub 文件fun7041.m 解:首先建立一个m文件 首先建立一个 文件 function y=fun7041(x) y=-exp(x(1))*x(2)^2*(3-exp(x(1))-x(2)^2); 存储为fun7041.m 存储为
迭代的基本思想和步骤大致可分为以下四步: 迭代的基本思想和步骤大致可分为以下四步:
1) 2) 3) 选取初始点x 0 , 并令k = 0; 得到x k 后,选取一个搜索方向P k , 使得沿着这个方向的 目标函数f ( x)的值时下降的; 由x k出发,沿P k 方向选取适当的步长λk , 使得 f ( x k + λk P k ) < f ( x k ) 由此得到下一个点x k +1 = x k + λk P k 4) 检验新得到的点x k +1是否满足精度要求的最优解。 如果是,则结束运算;否则,令k = k + 1, 返回(2)继续迭代
为文件名保存此函数文件。 以fun702为文件名保存此函数文件。 为文件名保存此函数文件 在命令窗口输入: 在命令窗口输入: x0=[-2;4]; x=fminunc('fun702',x0) 结果显示: 结果显示:
f= -1.0000 x= 1.0000 1.0000
Matlab程序: 程序: 程序 ch702.m
它的一般形式是: 它的一般形式是:
min
f = c1x1 + c 2 x 2 + + c n x n a 11x1 + a 12 x 2 + + a1n x n <= b1 a x + a x + + a x <= b 21 1 22 2 2n n 2 a m1x1 + a m 2 x 2 + + a mn x n <= b m x i >= 0 (i = 1,2,, n )