1、线线 性性 规规 划划 Linear ProgrammingPage 2第七章第七章 数学实验数学实验Page 3 一一 用用Mathematica求解线性规划求解线性规划Page 4例例7.1 用用Mathematica求解求解12341234123412341234max32858236523s.t.7331,0zxxxxxxxxxxxxxxxxx xxx Page 512343551,0,0,222xxxx123412341234123412341234=Maximize-3-2+8-5,+8+-=2&3-6+5-23&7-3-+3-1&0&0&0&0,zxxxx xxx xxxxxxx
2、xxxxxxxxxx输入:输入:运行得出结果:运行得出结果:Page 6例例7.2 用用Mathematica求解求解12min1000800Sxx112121210.81.6.21.4,0 xxxs txxxx Page 712112121212=Minimize1000+800,1&0.81.6&2&1.4&0&0,Sxx xxxxxxxxx输入:输入:运行得出结果:运行得出结果:Page 8 二二 用用MATLAB求解线性规划求解线性规划Page 9 MATLAB简介简介 MATLAB自自19841984年由美国年由美国MathWorks公司研公司研发,现已成为国际公认的最优秀的工程应用
3、开发发,现已成为国际公认的最优秀的工程应用开发环境。环境。它它功能强大、简单易学、编程效率高。功能强大、简单易学、编程效率高。在在欧美,欧美,MATLAB已成为线性代数、自动控制理论、已成为线性代数、自动控制理论、数字信号处理、时间序列分析、动态系统仿真、数字信号处理、时间序列分析、动态系统仿真、图像处理等课程的基本教学工具,成为本硕博必图像处理等课程的基本教学工具,成为本硕博必须掌握的基本技能。须掌握的基本技能。Page 10n MATLAB它作为一种编程语言和可视化工具,它作为一种编程语言和可视化工具,可解决可解决工程、科学计算和数学工程、科学计算和数学学科中许多问题。学科中许多问题。n
4、MATLAB建立在建立在向量向量、数组数组和和矩阵矩阵的基础上,的基础上,使用方便,人机界面直观,输出结果可视化。使用方便,人机界面直观,输出结果可视化。n 矩阵矩阵是是MATLAB的核心的核心。MATLAB简介简介Page 11n数值计算和符号计算功能数值计算和符号计算功能 数值计算功能包括:矩阵运算、多项式和有理分数值计算功能包括:矩阵运算、多项式和有理分式运算、数据统计分析、数值积分、优化处理等。式运算、数据统计分析、数值积分、优化处理等。符号计算将得到问题的符号计算将得到问题的解析解析解。解。n图形功能图形功能 可绘制二维、三维乃至四维图形,并可进行图形可绘制二维、三维乃至四维图形,并
5、可进行图形和坐标的标识、视角和光照设计、色彩精细控制等。和坐标的标识、视角和光照设计、色彩精细控制等。MATLAB功能功能Page 12nMATLAB语言语言(1)命令行的交互式操作:用户在命令行的交互式操作:用户在MatlabMatlab的命令窗的命令窗口键入一个命令,及时返回结果;口键入一个命令,及时返回结果;(2)程序方式:可以由程序方式:可以由Matlab定义的语言在编辑器定义的语言在编辑器中编写程序,运行后返回结果中编写程序,运行后返回结果.Matlab其语法与其语法与C语言极为类似,但编程效率比语言极为类似,但编程效率比C高高且语言简单可读性强、调试容易、调用方便。且语言简单可读性
6、强、调试容易、调用方便。包括有包括有:a.Ma.M文件文件 b.b.函数函数 c.c.绘图绘图 MATLAB功能功能Page 13n应用工具箱应用工具箱基本部分中有数百个内部函数。基本部分中有数百个内部函数。其工具箱分为两大类:其工具箱分为两大类:1)功能性工具箱功能性工具箱 2)学科性工具箱学科性工具箱 功能性工具箱主要用来扩充其符号计算功能、功能性工具箱主要用来扩充其符号计算功能、可视建模仿真功能及文字处理功能等。可视建模仿真功能及文字处理功能等。学科性工具箱专业性比较强,如控制系统工学科性工具箱专业性比较强,如控制系统工具箱、信号处理工具箱、神经网络工具箱、最优化具箱、信号处理工具箱、神
7、经网络工具箱、最优化工具箱、金融工具箱等,工具箱、金融工具箱等,MATLAB功能功能Page 14 主主 要要 内内 容容三、三、举例举例四、四、线性规划求解线性规划求解二、二、数组与矩阵数组与矩阵一、一、变量与函数变量与函数Page 15 Matlab是以矩阵为基本运算单元的,它的大部分是以矩阵为基本运算单元的,它的大部分运算或命令都是在矩阵运算的意义下执行的。而构运算或命令都是在矩阵运算的意义下执行的。而构成矩阵的基本单元是数字。成矩阵的基本单元是数字。一、变量与函数一、变量与函数258369Page 161、变量、变量 命名规则命名规则是:是:(1)变量名必须是不含空格的单个词;)变量名
8、必须是不含空格的单个词;(2)变量名区分大小写;)变量名区分大小写;(3)变量名最多不超过)变量名最多不超过19个字符;个字符;(4)变量名必须以字母打头,之后可以是)变量名必须以字母打头,之后可以是 任意字母、数字或下划线,变量名中任意字母、数字或下划线,变量名中 不允许使用标点符号不允许使用标点符号.一、变量与函数一、变量与函数Page 17特殊变量取 值ans用于结果的缺省变量名pi圆周率eps计算机的最小数,当和 1 相加就产生一个比1大的数flops浮点运算数inf无穷大,如 1/0NaN不定量,如 0/0i,ji=j=1nargin所用函数的输入变量数目nargout所用函数的输出
9、变量数目realmin最小可用正实数realmax最大可用正实数特殊变量表特殊变量表Page 182、数学运算符号及标点符号、数学运算符号及标点符号+加法运算,适用于两个数或两个同阶矩阵相加.减法运算*乘法运算.*点乘运算/除法运算./点除运算乘幂运算.点乘幂运算反斜杠表示左除.一、变量与函数一、变量与函数Page 19注注1MATLAB的每条命令的每条命令语句语句后,若为逗号或后,若为逗号或无标点符号,则显示命令的结果;若为分号,则仅无标点符号,则显示命令的结果;若为分号,则仅仅执行赋值操作,不显示运算结果。仅执行赋值操作,不显示运算结果。注注2“%”后面所有文字为注释。后面所有文字为注释。
10、注注3“.”表示续行。如果表达式一行写不下,表示续行。如果表达式一行写不下,可加上续行符并按下回车键继续写。可加上续行符并按下回车键继续写。例如例如 s=1-1/2+1/3-1/4+1/5-1/6+1/7-1/8+1/9-1/10+1/11-1/12;一、变量与函数一、变量与函数Page 203、表达式、表达式:用运算符将有关运算量连接起来的式子。用运算符将有关运算量连接起来的式子。(1)算术运算符算术运算符:(加加)、(减减)、*(乘乘)、/(右除右除)、(左除左除)、(乘方乘方)对于矩阵来说,左除和右除表示两种不同的矩阵运算。对于矩阵来说,左除和右除表示两种不同的矩阵运算。(2)关系关系运
11、算符运算符:(小于小于)、(大于大于)、=(大于或等于大于或等于)、=(等等于于)、=(不等于不等于)(3)逻辑逻辑运算符运算符:&(与与)、|(或或)和和(非非)一、变量与函数一、变量与函数Page 21函 数名 称函 数名 称sin(x)正弦函数asin(x)反正弦函数cos(x)余弦函数acos(x)反余弦函数tan(x)正切函数atan(x)反正切函数abs(x)绝对值max(x)最大值min(x)最小值sum(x)元素的总和sqrt(x)开平方exp(x)以 e为底的指数log(x)自然对数)(log10 x以 10 为底的对数sign(x)符号函数fix(x)取整3、数学函数、数学
12、函数Page 22 MATLAB的内部函数是有限的,有时为了研究某的内部函数是有限的,有时为了研究某一个函数的各种性态,需要为一个函数的各种性态,需要为MATLAB定义新函数,定义新函数,为此必须编写函数文件为此必须编写函数文件.函数文件是文件名后缀为函数文件是文件名后缀为M的文件,这类文件的的文件,这类文件的第一行必须是一特殊字符第一行必须是一特殊字符function开始开始,格式为:,格式为:function 因变量名因变量名=函数名(自变量名)函数名(自变量名)函数值的获得必须通过具体的运算实现,并赋给因变函数值的获得必须通过具体的运算实现,并赋给因变量量.4、M文件文件Page 23M
13、atlab的应用程序也以的应用程序也以M文件保存。文件保存。M文件建立方法:文件建立方法:1.在在Matlab中,点中,点:File-New-M-file2.在编辑窗口中输入程序内容在编辑窗口中输入程序内容3.点:点:File-Save,存盘,存盘,M文件名必须与函数名文件名必须与函数名一致。一致。4、M文件文件Page 24例例7.3 定义函数定义函数 f(x1,x2)=100(x2-x12)2+(1-x1)2,计算计算 f(1,2)f(1,2)。function f=fun(x)f=100*(x(2)-x(1)2)2+(1-x(1)2解:解:1.建立建立M文件:文件:fun.mMATLAB
14、(fun)2.可以直接使用函数可以直接使用函数fun.m计算计算 f(1,2),只需在只需在Matlab命令窗口键入命令:命令窗口键入命令:x=1 2fun(x)返回返回Page 25先建立先建立M文件文件fun2.m定义函数定义函数f(x),),再在再在Matlab命令窗口输入命令窗口输入fun2(2),fun2(0.5),fun2(-1)即可。即可。MATLAB(fun2)返回返回23117.4 ()201,(2),(0.5),(1)0例设求xxf xxxfffxx Page 264、赋值语句、赋值语句:a、直接赋值语句:直接赋值语句:(1)赋值变量赋值变量=赋值表达式赋值表达式 (2)赋
15、值表达式赋值表达式 第二种语句形式下,将表达式的值赋给永久变量第二种语句形式下,将表达式的值赋给永久变量ansans。b、函数调用语句:函数调用语句:返回变量列表返回变量列表=函数名(输入变量列表)函数名(输入变量列表)Page 271、创建简单的数组、创建简单的数组二、数组与矩阵二、数组与矩阵x=a b c d e f 创建包含指定元素的行向量创建包含指定元素的行向量x=first:last 创建从创建从first开始,加开始,加1计数,到计数,到last结结束的行向量束的行向量x=first:increment:last 创建从创建从first开始,加开始,加increment计数,计数,
16、last结束的行向量结束的行向量x=linspace(first,last,n)创建从创建从first开始,到开始,到last结结束,有束,有n个元素的行向量个元素的行向量x=a b c d e f 创建包含指定元素的行向量创建包含指定元素的行向量x=first:last 创建从创建从first开始,加开始,加1计数,到计数,到last结结束的行向量束的行向量x=first:increment:last 创建从创建从first开始,加开始,加increment计数,计数,last结束的行向量结束的行向量x=a b c d e f 创建包含指定元素的行向量创建包含指定元素的行向量x=first:
17、last 创建从创建从first开始,加开始,加1计数,到计数,到last结结束的行向量束的行向量x=linspace(first,last,n)创建从创建从first开始,到开始,到last结结束,有束,有n个元素的行向量个元素的行向量x=first:increment:last 创建从创建从first开始,加开始,加increment计数,计数,last结束的行向量结束的行向量x=a b c d e f 创建包含指定元素的行向量创建包含指定元素的行向量x=first:last 创建从创建从first开始,加开始,加1计数,到计数,到last结结束的行向量束的行向量Page 28 2、数组元
18、素的访问数组元素的访问(3)直接使用元素编址序号)直接使用元素编址序号:x(a b c d)表示提取表示提取数组数组x的第的第a、b、c、d个元素构成一个新的数组个元素构成一个新的数组x(a)x(b)x(c)x(d).(2)访问一块元素:)访问一块元素:x(a:b:c)表示访问数组表示访问数组x的从的从第第a个元素开始,以步长为个元素开始,以步长为b到第到第c个元素(但不超过个元素(但不超过c),),b可以为负数,可以为负数,b缺省时为缺省时为1.(1)访问一个元素:)访问一个元素:x(i)表示访问数组表示访问数组x的第的第i个元素个元素.Page 29列向量列向量的数组操作和运算与行向量是一
19、样的,唯一的的数组操作和运算与行向量是一样的,唯一的区别是结果以列形式显示区别是结果以列形式显示.产生列向量有两种方法:产生列向量有两种方法:直接产生直接产生 例例 c=1;2;3;4 转置产生转置产生 例例 b=1 2 3 4;c=b 说明:以说明:以空格空格或或逗号逗号分隔的元素指定的是不同列的分隔的元素指定的是不同列的元素,而以元素,而以分号分号分隔的元素指定了不同行的元素分隔的元素指定了不同行的元素.3 3、数组的方向、数组的方向Page 304、数组的运算、数组的运算(1)标量)标量-数组:数组:设:设:a=a1,a2,an,c=标量标量则:则:a+c=a1+c,a2+c,an+c
20、a.*c=a1*c,a2*c,an*c a./c=a1/c,a2/c,an/c(右除)右除)a.c=c/a1,c/a2,c/an(左除)左除)a.c=a1c,a2c,anc c.a=ca1,ca2,can Page 31设:设:a=a1,a2,an,b=b1,b2,bn则:则:a+b=a1+b1,a2+b2,an+bn a.*b=a1*b1,a2*b2,an*bn a./b=a1/b1,a2/b2,an/bn a.b=b1/a1,b2/a2,bn/an a.b=a1b1,a2b2,anbn(2 2)数组数组-数组运算数组运算Page 321、矩阵的建立、矩阵的建立(1)将矩阵的元素用方括号括起
21、来,按矩阵行的)将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用顺序输入各元素,同一行的各元素之间用空格空格或或逗逗号号分隔,不同行的元素之间用分隔,不同行的元素之间用分号分号分隔。在输入矩分隔。在输入矩阵时,按阵时,按Enter键也表示开始一新行键也表示开始一新行.例:键入命令例:键入命令:A=1 2 3;4 5 6;7 8 9 A=1,2,3;4,5,6;7,8,9输出结果:输出结果:A=1 2 3 4 5 6 7 8 9Page 33(2)利用利用M文件建立矩阵:文件建立矩阵:第一步:使用编辑程序输入文件内容。第一步:使用编辑程序输入文件内容。第二步:保存并设文
22、件名为第二步:保存并设文件名为xxx.m。第三步:在第三步:在MATLAB命令窗口中输入命令窗口中输入xxx,就会,就会自动建立一个名为自动建立一个名为AM的矩阵,可供调用。的矩阵,可供调用。Page 34特殊矩阵的建立:特殊矩阵的建立:MATLAB(matrix1)d=eye(m,n)产生一个产生一个m行、行、n列的单位矩阵列的单位矩阵c=ones(m,n)产生一个产生一个m行、行、n列的元素列的元素 全为全为1的矩阵的矩阵b=zeros(m,n)产生一个产生一个m行、行、n列的零矩阵列的零矩阵a=产生一个空矩阵,当对一项操作无结产生一个空矩阵,当对一项操作无结 果时,返回空矩阵,空矩阵的大
23、小为零果时,返回空矩阵,空矩阵的大小为零.Page 352、矩阵中元素的操作、矩阵中元素的操作(1)矩阵)矩阵A的第的第r行:行:A(r,:),:)(2)矩阵)矩阵A的第的第r列:列:A(:,(:,r)(3)取矩阵)取矩阵A的第的第i1i2行、第行、第j1j2列构成新矩阵列构成新矩阵:A(i1:i2,j1:j2)(4)以逆序提取矩阵)以逆序提取矩阵A的第的第i1i2行,构成新矩阵行,构成新矩阵:A(i2:-1:i1,:),:)(5)删除)删除A的第的第i1i2行,构成新矩阵行,构成新矩阵:A(i1:i2,:,:)=(6)删除)删除A的第的第j1j2列,构成新矩阵列,构成新矩阵:A(:,:,j1
24、:j2)=(7)将矩阵)将矩阵A和和B拼接成新矩阵:拼接成新矩阵:A B;A;BPage 363矩阵的基本运算矩阵的基本运算()矩阵转置()矩阵转置 B()矩阵加和减()矩阵加和减 B+C()矩阵乘法()矩阵乘法 B*C(4)矩阵乘法方阵的逆)矩阵乘法方阵的逆 inv(A)(5)矩阵除法)矩阵除法 Ab=inv(A)*b(6)矩阵的乘方)矩阵的乘方 A2(7)方阵的行列式:)方阵的行列式:det(A)(8)方阵的特征值与特征向量:)方阵的特征值与特征向量:V,D=eigAPage 37输入命令:C=B C=1 5 9 2 6 10 3 7 11 4 8 12 输入命令:D=B*C D=30 7
25、0 110 70 174 278 110 278 446123456789B(1)(1)矩阵转置运算矩阵转置运算:(2)矩阵乘法:矩阵乘法:要求要求B的列数等于的列数等于C的行数的行数Page 38(3 3)矩阵点乘、加减法)矩阵点乘、加减法 当两矩阵维数相同时,运算符当两矩阵维数相同时,运算符.*的结果是两矩阵的对应元素的结果是两矩阵的对应元素乘,加减法相同。乘,加减法相同。E=1 2;3 4;F=2 3;4 5;G=E.*F G=2 6 12 20点运算是两个维数相同点运算是两个维数相同矩阵对应元素之间的运矩阵对应元素之间的运算,在有的教材中也定算,在有的教材中也定义为数组运算。义为数组运
26、算。Page 39(5)矩阵的除法)矩阵的除法解方程组:解方程组:ax=b,其中其中a是是(n*m)的矩阵的矩阵x=ab 或或 x=b/a 注:注:ab运算等效于求运算等效于求a*x=b的解;而的解;而a/b等效于求等效于求x*b=a的解。的解。Page 40E=1 2;3 4;(6)矩阵的乘方)矩阵的乘方 矩阵为方阵时,可以进行矩阵的乘方运算,运算符为矩阵为方阵时,可以进行矩阵的乘方运算,运算符为,与,与矩阵分解有关矩阵分解有关 E3 ans=37 54 81 118 若仅是元素进行乘方运算,可用运算符若仅是元素进行乘方运算,可用运算符.E.3 ans=1 8 27 64Page 41(7)
27、矩阵的逆:)矩阵的逆:利用函数利用函数inv计算,此时要求矩阵为方阵且可逆。计算,此时要求矩阵为方阵且可逆。X=inv(E)X=-2.0000 1.0000 1.5000 -0.5000(8)矩阵元素的赋值与运算)矩阵元素的赋值与运算 Matlab允许用户对矩阵的单个元素进行赋值和操作,允许用户对矩阵的单个元素进行赋值和操作,Matlab此时命令方式为此时命令方式为 X(i,j)=变量名变量名Page 42例例7.5 求解线性方程组求解线性方程组AX=B 1 1.5 2 9 7 3 0 3.6 0.5 -4 4 -4 其中其中A=7 10 -3 22 33 ,B=20 3 7 8.5 21 6
28、 5 3 8 0 90 -20 16 Page 43在在MATLAB命令窗口输入命令:命令窗口输入命令:a=1 1.5,2,9,7;0,3.6,0.5,-4,4;7,1 0,-3,22,33;3,7,8.5,21,6;3,8,0,90,-20;b=3;-4;20;5;16;x=ab得到的结果是:得到的结果是:x=3.5653 -0.9255 -0.2695 0.1435 0.0101Page 44在在MATLAB命令窗口输入:命令窗口输入:p=1,7,0,9,-20;%建立多项式系数向量建立多项式系数向量 x=roots(p)%求根求根得到的结果是:得到的结果是:x=-7.2254 -0.42
29、86+1.5405i -0.4286-1.5405i 1.0826例例7.6 求方程求方程 x4+7x3+9x-20=0的全部根的全部根Page 45三、绘图功能三、绘图功能1 1、二维图形、二维图形v(1)plot函数函数v函数格式:函数格式:plot(x,y)其中其中x和和y为坐标向量为坐标向量v函数功能:以向量函数功能:以向量x、y为轴,绘制曲线。为轴,绘制曲线。v例例7.7 在在0 x2 内,绘制正弦曲线内,绘制正弦曲线y=sinx,其程序,其程序为:为:x=0:pi/100:2*pi;y=sin(x);plot(x,y)Page 46Page 47x=0:pi/100:2*pi;y1
30、=sin(x);y2=cos(x);plot(x,y1,x,y2)v例例7.8 在在0 x2 内,同时绘制正、余弦曲线内,同时绘制正、余弦曲线y1=sinx和和y2=cosx,其程序为:其程序为:v(1)plot函数函数v函数格式:函数格式:plot(x,y1,x,y2,x,y3,)v函数功能:是以公共向量函数功能:是以公共向量x为为X轴,分别以轴,分别以y1,y2,y3,为为Y轴,在同一幅图内绘制出多条曲线。轴,在同一幅图内绘制出多条曲线。Page 48Page 49x=0:pi/100:2*pi;y1=sin(x);y2=cos(x);plot(x,y1,go,x,y2,b-.)其中参数其
31、中参数go和和b-.表示图形的颜色和线型。表示图形的颜色和线型。g表示绿色,表示绿色,o表示图表示图形线型为圆圈;形线型为圆圈;b表示蓝色,表示蓝色,-.表示图形线型为点划线。表示图形线型为点划线。v(1)plot函数函数格式:格式:plot(x,y1,cs,.),其中其中c表示颜色,表示颜色,s表示线型。表示线型。v函数功能:绘制出指定颜色和线型的曲线。函数功能:绘制出指定颜色和线型的曲线。【例【例7.97.9】用不同线型和颜色重新绘制例用不同线型和颜色重新绘制例2 2图形,其程序为:图形,其程序为:Page 50Page 51二维绘图函数小结二维绘图函数小结plot 二维图形基本函数fpl
32、ot f(x)函数曲线绘制fill 填充二维多边图形polar 极坐标图bar 条形图loglog 双对数坐标图semilogx X轴为对数的坐标图semilogy Y轴为对数的坐标图stairs 阶梯形图axis 设置坐标轴clf 清除图形窗口内容close 关闭图形窗口figure 创建图形窗口grid 放置坐标网格线gtext 用鼠标放置文本hold 保持当前图形窗口内容subplot 创建子图text 放置文本title 放置图形标题xlabel 放置X轴坐标标记ylabel 放置Y轴坐标标记Page 522.2.三维图形三维图形(1)plot3函数函数 它是将二维函数它是将二维函数p
33、lot的有关功能扩展到三维空间,的有关功能扩展到三维空间,用来绘制三维图形。用来绘制三维图形。函数格式:函数格式:plot3(x1,y1,z1,c1,x2,y2,z2,c2,)其中其中x1,y1,z1表示三维坐标向量,表示三维坐标向量,c1,c2表示线形表示线形或颜色。或颜色。函数功能:以向量函数功能:以向量x,y,z为坐标,绘制三维曲线。为坐标,绘制三维曲线。Page 53t=0:pi/50:10*pi;y=sin(t),z=cos(t);plot3(y,z,t);title(helix),text(0,0,0,origin);xlabel(sin(t),ylabel(cos(t),zlab
34、el(t);grid;v例例7.8 绘制三维的螺旋曲线绘制三维的螺旋曲线y=sint和和z=cost,其程序其程序为:为:Page 54Page 55用用MATLAB求解线性规划求解线性规划Page 561.模型:模型:命令:命令:x=linprog(c,A,b)命令命令:x=linprog(c,A,b,Aeq,beq)注:若没有不等式注:若没有不等式 存在,则令存在,则令A=,b=.min.zcXs t AXbmin.zcXAXbs tAeqXbeq 2.模型:模型:AXb Page 57命令:命令:1 x=linprog(c,A,b,Aeq,beq,VLB,VUB)注:若没有等式约束注:若
35、没有等式约束 ,则令则令Aeq=,beq=.4.命令:命令:x,fval=linprog()返回最优解返回最优解及及处的目标函数值处的目标函数值fval.min.zcXAXbs tAeqXbeqVLBXVUB 3.模型:模型:Aeq XbeqPage 58123456123456142536max0.40.280.320.720.640.60.010.010.010.030.030.038500.020.05700.0.020.051000.030.0890001,2,6jzxxxxxxxxxxxxxxs txxxxxj 例例7.10 求解线性规划求解线性规划Page 59解:解:编写编写M文
36、件文件xxgh1.m如下:如下:c=-0.4-0.28-0.32-0.72-0.64-0.6;在命令窗口输入:在命令窗口输入:xxgh1 xxgh1 回车即得回车即得x,fval=linprog(c,A,b,Aeq,beq,vlb,vub)b=850;700;100;900;Aeq=;beq=;vlb=0;0;0;0;0;0;vub=;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;Page 60123123123min63412030.05020zxxxxxxxs tx
37、x 123min(6 3 4)xzxx 123s.t.111120 xxx 12330020 xxx 例例7.11 求解线性规划求解线性规划 123s.t.01050 xxx Page 61解解:编写编写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)在命令窗口输入:在命令窗口输入:xxgh2 xxgh2 回车即得回车即得Page 62问题问题1:某厂每日:某厂每日8小时的产量不低于小时的产量不低于1800件件.为了进行为
38、了进行质量控制,计划聘请两种不同水平的检验员。一级检质量控制,计划聘请两种不同水平的检验员。一级检验员的标准为:速度验员的标准为:速度25件件/小时,正确率小时,正确率98%,计时工,计时工资资4元元/小时;二级检验员的标准为:速度小时;二级检验员的标准为:速度15件件/小时,小时,正确率正确率95%,计时工资,计时工资3元元/小时。检验员每错检一次,小时。检验员每错检一次,工厂要损失工厂要损失2元。为使总检验费用最省,该工厂应聘元。为使总检验费用最省,该工厂应聘一级、二级检验员各几名?一级、二级检验员各几名?Page 63解解 设需一级和二级检验员的人数分别为设需一级和二级检验员的人数分别为
39、x1、x2人人,因检验员错检而造成的损失为:因检验员错检而造成的损失为:则应付检验员的工资为:则应付检验员的工资为:121284833224xxxx 1212(8252%8 155%)2812xxxx121212(3224)(812)4036zxxxxxx总检验费为:总检验费为:Page 64故目标函数为:故目标函数为:约束条件为:约束条件为:121212min(3224)(812)4036zxxxxxx1212128258 15180082518008 1518000,0 xxxxxx Page 65化简为线性规划模型:化简为线性规划模型:12min4036zxx12121253459s.t
40、.150,0 xxxxxx 12min4036xzx 1253(45)xx 1209015xx Page 66编写编写M文件文件xxgh3.m如下:如下:c=40,36;A=-5,-3;b=-45;Aeq=;beq=;vlb=0;0;vub=9;15;x,fval=linprog(c,A,b,Aeq,beq,vlb,vub)在命令窗口输入:在命令窗口输入:xxgh3 xxgh3 回车即得回车即得Page 67结果为:结果为:x=9.0000 0.0000fval=360即只需聘用即只需聘用9 9个一级检验员,总检验费最小为个一级检验员,总检验费最小为360.360.Page 68问题问题2(任
41、务分配问题)任务分配问题)某车间有甲、乙两台机床,可用于加工三种工件某车间有甲、乙两台机床,可用于加工三种工件.假假定这两台车床的可用台时数分别为定这两台车床的可用台时数分别为800和和900,三种,三种工件的数量分别为工件的数量分别为400、600和和500,且已知用三种,且已知用三种不同车床加工单位数量不同工件所需的台时数和加不同车床加工单位数量不同工件所需的台时数和加工费用如下表工费用如下表.问怎样分配车床的加工任务,才能既问怎样分配车床的加工任务,才能既满足加工工件的要求,又使加工费用最低?满足加工工件的要求,又使加工费用最低?Page 69车床车床类类 型型单位工件所需加工单位工件所
42、需加工台时数台时数单位工件的加工费单位工件的加工费用用可用可用台时台时数数工件工件1工件工件2工件工件3工件工件1工件工件2工件工件3甲甲0.41.11.013910800乙乙0.51.21.311128900工件工件1 1、2 2、3 3数量分别为数量分别为400400、600600和和500500Page 70解:解:设在甲车床上加工工件设在甲车床上加工工件1、2、3的数量分别为的数量分别为x1、x2、x3,在乙车床上加工工件,在乙车床上加工工件1、2、3的数量分别为的数量分别为x4、x5、x6,可建立以下模型:可建立以下模型:123456min1391011128zxxxxxx14253
43、6123456x400600500s.t.0.41.18000.51.21.39000,1,2,6ixxxxxxxxxxxxi Page 71 min1391011128zX 0.41.110008000000.51.21.3900X 100100400010010600001001500X 1234560 xxxXxxxPage 72编写编写M文件文件xxgh4.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=40
44、0 600 500;vlb=zeros(6,1);vub=;x,fval=linprog(f,A,b,Aeq,beq,vlb,vub)在命令窗口输入:在命令窗口输入:xxgh4 xxgh4 回车即得回车即得Page 73结果结果:x=0.0000 600.0000 0.0000 400.0000 0.0000 500.0000fval=1.3800e+004即在甲机床上加工即在甲机床上加工600个工件个工件2,在乙机床上加工在乙机床上加工400个工件个工件1、500个工件个工件3,可在满足条件的情况下使总加工费最小为,可在满足条件的情况下使总加工费最小为13800Page 74作业一作业一 大
45、润发超市是个建在大学城边上的大型百货商场,大润发超市是个建在大学城边上的大型百货商场,每周对收银人员的需求,统计如下表每周对收银人员的需求,统计如下表星期星期1234567人数人数6587101815为了保证收银人员充分休息,收银人员每周工作为了保证收银人员充分休息,收银人员每周工作5 5天,休息天,休息2 2天。问应如何安排收银人员的工作时间,天。问应如何安排收银人员的工作时间,使得所配收银人员最少?使得所配收银人员最少?Page 75作业二作业二 某厂生产甲、乙两种口味的饮料某厂生产甲、乙两种口味的饮料,每百箱甲饮料需原每百箱甲饮料需原料料6千克千克,工人工人10名名,可获利可获利10万元
46、万元;每百箱乙饮料需原料每百箱乙饮料需原料5千克千克,工人工人20名名,可获利可获利9万元。工厂共有原料万元。工厂共有原料60千克千克,工人工人150名名,又由于其他条件所限甲饮料产量不超过又由于其他条件所限甲饮料产量不超过800箱。问箱。问1)如何安排生产计划使获利最大。进一步讨论)如何安排生产计划使获利最大。进一步讨论:2)若投资若投资0.8万元可增加原料万元可增加原料1千克千克,问应否作这项投资。问应否作这项投资。3)若每百箱甲饮料获利可增加若每百箱甲饮料获利可增加1万元万元,问应否改变生产问应否改变生产计划。计划。Page 76小结小结学习要点:学习要点:1.掌握用掌握用Mathema
47、tic求解线性规划;求解线性规划;2.掌握用掌握用MATLAB求解线性规划;求解线性规划;Page 771234567min xxxxxxx为了让员工们休息更愉快、方便,可将每位员工的为了让员工们休息更愉快、方便,可将每位员工的休息时间安排在连续的两天;则可休息时间安排在连续的两天;则可设设xi(i=1,2,3=1,2,3,7)7)表示星期一至日开始休息的人表示星期一至日开始休息的人数,依题意我们可建立如下数学模型:数,依题意我们可建立如下数学模型:Page 7812345234563456745671567126712371234176587.101815,0 xxxxxxxxxxxxxxxxxxxxs txxxxxxxxxxxxxxxxx Page 79 作业:作业:The end!The end!