1 / 23

线性规划

线性规划. 一、问题 求线性规划与非线性规划问题。. 二、实验目的 1 、学会由实际问题建立(非)线性规划模型; 2 、掌握用 Matlab 软件求解线性规划问题。. 三、预备知识 在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济效益的问题。此类问题构成了运筹学的一个重要分支 ------ 数学规划。. 线性规划问题是在一组线性约束条件的限制下,求一线性目标函数最大或最小的问题。线性规划( Linear Programming ,简记为 LP )是数学规划的一个重要分支。. s.t. (约束条件). ( 2 ).

liseli
Download Presentation

线性规划

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 线性规划

  2. 一、问题 求线性规划与非线性规划问题。 • 二、实验目的 1、学会由实际问题建立(非)线性规划模型; 2、掌握用Matlab软件求解线性规划问题。

  3. 三、预备知识 在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济效益的问题。此类问题构成了运筹学的一个重要分支------数学规划。 线性规划问题是在一组线性约束条件的限制下,求一线性目标函数最大或最小的问题。线性规划(Linear Programming,简记为LP)是数学规划的一个重要分支。

  4. s.t.(约束条件) (2) • 例1:(生产计划问题)某机床厂生产甲、乙两种机床,每种机床的利润分别为4000元和3000元。生产甲机床需用A、B机器加工,加工时间分别为每台2小时和1小时;生产乙机床需用A、B、C三种机器加工,加工时间为每台各1小时。若每天可用于加工的机器小时数分别为A机器10小时、B机器8小时和C机器7小时,问该厂应生产甲、乙机床各几台,才能使总利润最大? 解:上述问题可抽象成数学模型:设该厂生产x1台甲机床和x2台乙机床时总利润最大,则x1,x2应满足: (目标函数)max z=4000x1+3000x2 (1)

  5. s.t. • 这里变量x1,x2称为决策变量,式(1)称为问题的目标函数,式(2)中的几个不等式是问题的约束条件,记为s.t.(即 subject to)。上述即为一规划问题数学模型的三个要素。由于上面的目标函数及约束条件均为线性函数,故称为线性规划问题。 线性规划的目标函数可以是求最大值,也可以是求最小值,约束条件的不等号可以是小于号也可以是大于号。为了避免这种形式多样性带来的不便,Matlab中规定线性规划的标准形式为: 其中c 和x为n维列向量,b为m维列向量,A为 m*n 矩阵。

  6. s.t. • 例如线性规划: s.t. 的Matlab标准型为:

  7. 线性规划模型的解法 • 一般线性规划问题的标准型为: min s.t.

  8. Matlab 7.0解决的线性规划问题的标准形式为: min s.t. 为向量, 为矩阵。 其中 其他形式的线性规划问题都可经过适当变化为此标准形式。

  9. 在Matlab 7.0中,解线性规划问题的函数为linprog,其使用格式如下: 函数 linprog 格式 x=linprog(c,A,b) %求min c’*x s.t Ax<=b最优解; x=linprog(c,A,b,Aeq,beq) %若没有不等式约束,则A=[],b=[]; x=linprog(c,A,b,Aeq,beq,lb,ub) %若没有等式约束,则Aeq=[],beq=[]; x=linprog(c,A,b,Aeq,beq,lb,ub,x0) %设置初始值x0; [x,fval]=linprog() %返回目标函数最优值。

  10. 非线性规划

  11. 非线性规划 • 如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划问题。一般说来,解非线性规划比解线性规划问题困难得多。非线性规划目前还没有适用于各种问题的一般算法,各个方法都有自己特定的适用范围。

  12. 其中, 称为模型的决策变量, 称为目标函数, 和 称为不等式 称为约束条件, 称为等式约束, • 非线性规划问题(简记为NP),可概括为一般形式: min s.t. 约束。

  13. 由于线性规划的目标函数为线性函数,可行域为凸集,因而求出的最优解就是整个可行域上的全局最优解。非线性规划则不然,有时求出的某个解虽是一部分可行域上的极值点,但不一定是整个可行域上的全局最优解。由于线性规划的目标函数为线性函数,可行域为凸集,因而求出的最优解就是整个可行域上的全局最优解。非线性规划则不然,有时求出的某个解虽是一部分可行域上的极值点,但不一定是整个可行域上的全局最优解。 对于非线性规划模型,可以采用迭代方法求它的最优解。

  14. 非线性规划的Matlab解法 • Matlab中非线性规划的数学模型可以写成如下形式: min s.t. 其中, 是标量函数, 是相应维数的矩阵和向量, 是非线性向量函数。

  15. 函数 fmincon • 格式 x=fmincon(fun,x0,A,B,Aeq,Beq,LB,UB,nonlcon,options) 其中fun是用M文件定义的函数f(x);x0是x的初始值;A,B,Aeq,Beq定义了线性约束A*X<=B,Aeq*X=Beq。如果没有等式约束,则A=[],B=[],Aeq=[],Beq=[];LB和UB是变量x的上界和下界。如果上界和下界没有约束,则LB=[],UB=[],如果x无下界,则LB=-inf,如果x无上界,则UB=inf;nonlcon是用M文件定义的非线性向量函数C(x),Ceq(x);options定义了优化参数,可以使用Matlab默认的参数设置。

  16. 例:求解下列非线性规划问题: 解:(1)编写M文件fun1.m function f=fun1(x) f=x(1)^2+x(2)^2+8;

  17. M文件fun2.m function [g,h]=fun2(x) g=-x(1)^2+x(2); h=-x(1)-x(2)^2+2 (2) 在Matlab命令窗口输入: options=optimset; [x,y]=fmincon(‘fun1’,rand(2,1),[],[],[],[],zeros(2,1),[],… ’fun2’,options) 就可以求得当 x1=x2=1,y=10.

  18. s.t. 其中, 为矩阵, 为向量。 二次规划的Matlab解法 • 若某非线性规划的目标函数为自变量x的二次函数,约束条件又全是线性的,就称这种规划为二次规划。二次规划也是非线性规划的一个重要特殊情形。 二次规划问题(quadratic programming )的标准形式为:

  19. 解二次规划的Matlab命令为: 函数: quadprog 格式: x=quadprog(H,c,A,b) x=quadprog(H,c,A,b,Aeq,beq) x=quadprog(H,c,A,b,Aeq,beq,lb,ub) x=quadprog(H,c,A,b,Aeq,beq,lb,ub,x0) x=quadprog(H,c,A,b,Aeq,beq,lb,ub,x0,options) %上述字符A,b,Aeq,beq,lb,ub,x0,options与线性规划的意义相同。

  20. min • 例:求解下列二次规划问题: 解:写成标准形式:

  21. 在Matlab窗口输入: H=[4,-1;-1,2]; c=[-4;-3]; A=[1,1;-1,3]; b=[4;3]; aeq=[]; beq=[]; vlb=[0;0]; vub=[]; [x,z]=quadprog(H,c,A,b,aeq,beq,vlb,vub) 运行结果: x=1.5000 1.5000 z=-6

  22. 练习1 (运输问题):设有三个工厂A,B,C同时需要某种原料,需要量分别是17万吨,18万吨和15万吨。现有两厂X,Y分别有该原料23万吨,27万吨。每万吨运费如下表所示(单位:元) 问应如何调运才能使总运费最少?

  23. 练习2:求解二次规划

More Related