第10章 Matlab在最优化问题中的应用
- 格式:doc
- 大小:391.50 KB
- 文档页数:27
《MATLAB》课程论文MATLAB在最优化问题中的应用姓名:学号:专业:学院:指导老师:完成日期:MATLAB在最优化问题中的应用(**************************************)【摘要】MATLAB 是当今最优秀的科技应用软件之一,它以强大的科学计算与视化功能、简单易用、开放式的可扩展环境。
MATLAB具有其他高级语言难以比拟的一些优点,编写简单,变成效率高,易学易懂,因此MATLAB语言也被通俗地称为演算纸式的科学算法语言。
【关键字】MATLAB软件简洁优化问题一、问题的提出MATLAB 具有强大的数学运算能力、方便实用的绘图功能及语言的高度集成性。
MATLAB软件已成为在最优化领域应用最广的软件之一。
将MATLAB应用到解决最优化问题的模块中学习,利用客观、视图、计算等功能对最优化问题模块做出最简洁有效的解答,从而使我们有利的应用MATLAB对很多比较困难的优化问题进一步的理解。
应用MATLAB可以使最优化问题的知识简单明了。
二、在无约束优化问题中的应用(一)、相关函数:fminunc函数(二)、功能:求多变量无约束函数的最小值。
(三)、数学模型:其中,x为一向量,f(x)为一函数,返回标量。
(四)、语法格式:1.x = fminunc(fun,x0)2.x = fminunc(fun,x0,options)3.x = fminunc(fun,x0,options,P1,P2,...)4.[x,fval] = fminunc(...)5.[x,fval,exitflag] = fminunc(...)6.[x,fval,exitflag,output] = fminunc(...)7.[x,fval,exitflag,output,grad] = fminunc(...)8.[x,fval,exitflag,output,grad,hessian] = fminunc(...)(五)、描述:1.fminunc给定初值,求多变量标量函数的最小值。
Matlab 在优化设计中的应用摘 要常见的优化问题包括线性规划、无约束优化、约束优化、最下二乘优化、多目标规划等。
本文研究了matlab 在这些常见优化问题中的应用及求解。
在进行研究本课题之前,我们先通过网络、电子书刊等各种有效渠道获取我们所需信息,在充分了解与熟练掌握了各种优化问题的具体特点及性质后,我们给出了关于如何用matlab 进行多类优化问题的求解基本方法,在此前提下,为了体现该软件在这些优化领域的实际应用效果,我们结合若干个优化问题的实例进行分析、建模、以及运用matlab 编程求解,在求解过程中,通过得到的精确数据和反应结果的图例,我们了解到matlab 工具箱的功能强大,是处理优化问题的非常方便的编程工具。
关键词:matlab 优化问题二、基本概念2.1.1 线性规划线性规划是优化的一个重要分支。
它在理论和算法上都比较成熟,在实际中有广泛的应用.例如数学表达形式:⎪⎪⎪⎩⎪⎪⎪⎨⎧=≥=+++=+++=++++++n i x bx a x a x a b x a x a x a b x a x a x a t s x c x c x c i mn mn m m n n n n nn ,,2,1,0..min221122222121112121112211 在MTLAB 提供的优化工具箱中,解决规划的命令是linprog ,它的调用格式如下,),,(b A c linprog x =求解下列形式的线性规划:⎩⎨⎧≤bAx t s xc T ..min ),,,,(beq Aeq b A c linprog x =求解下面形式的线性规划:⎪⎩⎪⎨⎧⎩⎨⎧=•≤beqx Aeq b Ax t s xc T ..min若没有不等式约束b Ax ≤,则只需命令[][],==b A 。
),,,,,,(ub lb beq Aeq b A c linprog x =求解下面形式的线性规划:⎪⎪⎩⎪⎪⎨⎧⎪⎩⎪⎨⎧≤≤=•≤ub x lb beq x Aeq bAx t s xc T ..min 若没有不等式约束b Ax ≤,则只需令[][],==b A ;若只有下界约束,则可以不用输入ub .2.1。
使用Matlab进行优化与最优化问题求解引言:优化与最优化问题在科学、工程和金融等领域中具有重要的应用价值。
在解决这些问题时,选择一个合适的优化算法是至关重要的。
Matlab提供了许多用于求解优化问题的函数和工具箱,能够帮助我们高效地解决各种复杂的优化与最优化问题。
一、优化问题的定义优化问题是通过选择一组最佳的决策变量值,使目标函数在约束条件下达到最优值的问题。
通常,我们将优化问题分为线性优化问题和非线性优化问题。
在Matlab中,可以使用线性规划(Linear Programming)工具箱和非线性规划(Nonlinear Programming)工具箱来解决这些问题。
其中,线性规划工具箱包括linprog函数,而非线性规划工具箱则包括fmincon和fminunc等函数。
二、线性规划问题的求解线性规划问题的数学模型可以表示为:```minimize f'*xsubject to A*x ≤ blb ≤ x ≤ ub```其中,f是目标函数的系数矩阵,A是不等式约束条件的系数矩阵,b是不等式约束条件的右侧向量,lb和ub是变量的上下界。
在Matlab中,可以使用linprog函数来求解线性规划问题。
该函数的调用格式为:```[x, fval, exitflag, output] = linprog(f, A, b, Aeq, beq, lb, ub)```其中,x是最优解向量,fval是目标函数的最优值,exitflag标志着求解的结果状态,output包含了详细的求解过程。
三、非线性规划问题的求解非线性规划问题的数学模型可以表示为:```minimize f(x)subject to c(x) ≤ 0ceq(x) = 0lb ≤ x ≤ ub```其中,f(x)是目标函数,c(x)和ceq(x)分别是不等式约束条件和等式约束条件,lb和ub是变量的上下界。
在Matlab中,可以使用fmincon函数来求解非线性规划问题。
Matlab中的优化算法应用方法导言在科学计算领域,优化算法被广泛应用于求解最优化问题。
而在这个领域中,Matlab可谓是一款功能强大的工具。
Matlab提供了各种各样的优化算法,可以帮助用户解决各种复杂的优化问题。
本文将介绍一些在Matlab中常用的优化算法及其应用方法。
一、无约束优化问题在无约束优化问题中,目标是找到一个函数的全局最小值。
在Matlab中,有几种常用的求解无约束优化问题的方法。
1. 黄金分割法黄金分割法是一种基于离散点的搜索方法,它通过比较不同离散点的函数值来确定下一步搜索的方向。
在Matlab中,可以使用fminbnd函数来实现黄金分割法。
例如,我们可以使用以下代码来求解函数f(x) = x^2的最小值:```Matlabf = @(x) x^2;x = fminbnd(f, -10, 10);```2. 单纯形法单纯形法是一种基于线性规划的优化方法,它通过不断迭代来达到最优解。
在Matlab中,可以使用fminsearch函数来实现单纯形法。
例如,我们可以使用以下代码来求解函数f(x) = x^2的最小值:```Matlabf = @(x) x^2;x = fminsearch(f, 0);```3. 拟牛顿法拟牛顿法是一种通过逼近目标函数的海森矩阵来求解优化问题的方法。
在Matlab中,可以使用fminunc函数来实现拟牛顿法。
例如,我们可以使用以下代码来求解函数f(x) = x^2的最小值:```Matlabf = @(x) x^2;x = fminunc(f, 0);```二、约束优化问题在约束优化问题中,目标是找到满足一组约束条件的函数的最优解。
在Matlab 中,有几种常用的求解约束优化问题的方法。
1. 有约束优化有约束优化是一种通过将约束条件转化为等式约束的优化方法。
在Matlab中,可以使用fmincon函数来求解有约束优化问题。
例如,我们可以使用以下代码来求解函数f(x) = x^2在约束条件g(x) = x - 1 = 0下的最小值:```Matlabf = @(x) x^2;g = @(x) x - 1;x = fmincon(f, 0, [], [], [], [], [], [], g);```2. 无约束优化无约束优化是一种在没有约束条件时求解优化问题的方法。
MATLAB在最优化模型求解中的应用MATLAB是一种功能强大的数学软件,广泛应用于各种科学和工程领域。
在最优化模型求解方面,MATLAB可以提供许多工具和函数来解决不同类型的最优化问题。
下面将介绍一些MATLAB在最优化模型求解中的常见应用。
1. 非线性规划(Nonlinear Programming)非线性规划是一类常见的最优化问题,它在许多领域中都有应用。
MATLAB中提供了许多函数和工具箱来求解非线性规划问题,如"fmincon"函数和"Optimization Toolbox"工具箱。
这些工具可以通过定义目标函数、约束条件、变量范围等来求解非线性规划模型,并自动选择合适的算法进行求解。
2. 线性规划(Linear Programming)线性规划是一类特殊的最优化问题,其目标函数和约束条件都是线性的。
MATLAB中的"linprog"函数可以用于求解线性规划问题。
通过定义目标函数的系数矩阵、约束条件的系数矩阵和值等,"linprog"函数可以得到线性规划问题的最优解。
3. 二次规划(Quadratic Programming)二次规划是一种最优化问题,其目标函数是一个二次函数,约束条件可以是线性的或非线性的。
MATLAB中的"quadprog"函数可以用于求解二次规划问题。
"quadprog"函数可以通过定义目标函数的二次项系数矩阵、线性项系数矩阵、约束条件的系数矩阵和值等来求解二次规划问题。
4. 整数规划(Integer Programming)整数规划是一种最优化问题,其变量需要取整数值。
MATLAB中的"intlinprog"函数可以用于求解整数规划问题。
"intlinprog"函数可以通过定义目标函数、约束条件、变量范围和整数变量等来求解整数规划问题。
Matlab技术在优化问题求解中的实用技巧引言:优化问题是计算机科学、工程学、数学等领域中一个重要的研究方向。
在实际应用中,我们常常面临着需要最大化或最小化的目标函数,同时受到一系列约束条件的限制。
而Matlab作为一种高效的数值计算工具,提供了丰富的功能和工具箱,可以帮助我们解决各种复杂的优化问题。
本文将介绍一些Matlab技术在优化问题求解中的实用技巧。
一、优化函数的构建在Matlab中,我们可以通过函数句柄的方式构建优化函数。
这样做的好处是可以灵活选择不同的优化算法,并能够方便地修改目标函数或约束条件。
下面是一个示例:```octavefunction f = objective(x)f = x(1)^2 + x(2)^2; % 目标函数,以二维空间中的点为例endfunction [c, ceq] = constraints(x)c = x(1) + x(2) - 1; % 不等式约束条件ceq = []; % 等式约束条件endx0 = [0, 0]; % 初始解A = []; b = []; % 不等式约束矩阵Aeq = []; beq = []; % 等式约束矩阵lb = [-1, -1]; ub = [1, 1]; % 解的上下界options = optimoptions('fmincon'); % 创建优化选项[x, fval] = fmincon(@objective, x0, A, b, Aeq, beq, lb, ub, @constraints, options); % 调用优化函数```这里使用了`fmincon`函数进行优化,其中`@objective`和`@constraints`分别指定了目标函数和约束函数。
通过这种方式,我们可以非常方便地调整目标函数和约束条件,实现对不同问题的求解。
二、全局优化算法在优化问题中,有时我们需要找到全局最优解而不是局部最优解。
Matlab在运筹学与优化中的应用方法1. 引言运筹学与优化是一个重要的研究领域,它致力于寻求最佳解决方案以满足各种约束条件。
而Matlab作为一种强大的数值计算软件,被广泛应用于运筹学与优化中。
本文将介绍Matlab在该领域的应用方法,并探讨其在解决实际问题中的潜力和局限性。
2. 线性规划与整数规划线性规划是运筹学与优化中的基本方法之一。
它通过线性模型来描述问题,利用Matlab的优化工具箱可以方便地求解线性规划问题。
首先,我们需要定义目标函数和约束条件,然后使用linprog函数进行求解。
Matlab会返回问题的最优解以及对应的目标值。
整数规划则是线性规划的一种扩展,其中变量取整数值。
Matlab 也提供了intlinprog函数来求解整数规划问题。
3. 非线性规划在许多实际问题中,目标函数和约束条件并不是线性的,而是非线性的。
在这种情况下,我们可以使用Matlab的fmincon函数来求解非线性规划问题。
该函数利用了优化算法,可以找到目标函数的局部最小值。
然而,需要注意的是,fmincon求解的是连续非线性规划问题,并不能保证找到全局最优解。
4. 整数规划与非线性规划的组合实际问题中,常常会出现整数规划与非线性规划相结合的情况。
这种问题被称为混合整数非线性规划(MINLP)。
Matlab提供了fmincon函数的扩展,可以求解这种类型的问题。
通过设置变量的整数约束条件,我们可以将连续非线性规划问题转化为整数规划问题,然后利用Matlab的intlinprog函数求解。
5. 动态规划动态规划是一种求解最优化问题的方法,其适用于具有重叠子问题和最优子结构特性的问题。
Matlab可以很方便地实现动态规划算法。
我们可以使用Matlab的矩阵操作和循环结构来定义问题的状态转移方程,并通过动态规划来求解问题的最优解。
例如,背包问题、旅行商问题等都可以通过动态规划求解。
6. 遗传算法遗传算法是一种模拟进化过程的优化算法,它借鉴了自然界中的进化原理。
在企业生产和日常生活中,人们总是希望用最少的人力、物力、财力和时间去办更多的事,这就是所谓的最优化问题。
线性规划方法是解决最优化问题的有效方法之一,因此受到人们的普遍关注。
在企业生产过程中,生产计划安排直接影响到企业的经济效益,而生产计划本质就是在目标一定时,对于人力、时间和物质资源的优化配置问题。
1。
综述了最优化方法,归纳了最优化闯题中线性规划和非线性规划模型的解法,并给出了相应的matlab求解代码。
2。
提出了基于信息增益率的用电客户指标选择方法,根据信息增益率的大小选择对分类有贡献的指标。
关键词:Matlab,最优化方法,应用举例In enterprise production and daily life, people always hope with the least amount of human, material and financial resources and time to do more things, this is the so-called optimization problem. Linear programming method is to solve the optimal problem, so one of the effective method by people's attention. In enterprise production process, production plan directly affect the enterprise economic benefit, but in essence is the production plan for the target certain human, time and material resources optimization allocation problem.1·Studying the optimization,summing up the solutions ofoptimization problem for both linear and non-linear programming model and proposing the matlabcode.2·Proposing a new way based on information-gain-ratio to choose the powercustomer indices,selecting the indices which are more contributive to theclassification,in order to avoid over learning。
第10章 Matlab 在最优化问题中的应用优化理论是一门实践性很强的学科,广泛应用于生产管理、军事指挥和科学试验等各种领域,Matlab 优化工具箱提供了对各种优化问题的一个完整的解决方案。
在数学上,所谓优化问题,就是求解如下形式的最优解:Min fun (x)Sub. to [C.E.][B.C.]其中fun (x)称为目标函数,“Sub. to ”为“subject to ”的缩写,由其引导的部分称为约束条件。
[C.E.]表示Condition Equations ,即条件方程,可为等式方程,也可为不等式方程。
[B.C.]表示Boundary Conditions ,即边界条件,用来约束自变量的求解域,以lb ≤x ≤ub 的形式给出。
当[C.E.]为空时,此优化问题称为自由优化或无约束优化问题;当[C.E.]不空时,称为有约束优化或强约束优化问题。
在优化问题中,根据变量、目标函数和约束函数的不同,可以将问题大致分为:·线性优化 目标函数和约束函数均为线性函数。
·二次优化 目标函数为二次函数,而约束条件为线性方程。
线性优化和二次优化统称为简单优化。
·非线性优化 目标函数为非二次的非线性函数,或约束条件为非线性方程。
·多目标优化 目标函数并非一个时,称为多目标优化问题。
本章将对以上几类优化问题在Matlab 中的实现作比较详细的讲解。
另外还将介绍两个利用优化方法解非线性方程的函数。
通过本章的介绍,用户可以不必掌握艰涩的各种优化算法而轻易地解决一些常用的最优化问题了。
10.1 线性规划问题线性规划问题即目标函数和约束条件均为线性函数的问题。
其标准形式为:min C ’xsub. To Ax = bx ≥0其中C, b, 0∈R n ,A ∈R m ⨯n ,均为数值矩阵,x ∈R n 。
若目标函数为:max C ’x ,则转换成:min –C ’x 。
标准形式的线性规划问题简称为LP (Linear Programming )问题。
MATLAB中的优化算法及应用引言在现代科学和工程领域,优化问题是常见的。
通过寻找最佳解决方案,优化算法可以帮助我们提高效率、降低成本以及优化资源分配。
MATLAB作为一种强大的数值计算软件,提供了丰富的优化算法和工具,用于解决各种优化问题。
本文将探讨MATLAB中常用的优化算法及其应用。
一、线性规划线性规划是一类优化问题,目标函数和约束条件都是线性的。
MATLAB中的线性规划求解器可以通过线性规划问题的系数矩阵和约束条件来找到最优解。
例如,假设我们有一个生产计划问题,需要在一定资源约束下最大化产出。
使用MATLAB,我们可以通过定义目标函数和约束条件,并利用内置的线性规划求解器求解该问题。
二、非线性规划非线性规划是一类目标函数或约束条件中存在非线性项的优化问题。
在MATLAB中,我们可以使用非线性规划求解器来解决这类问题。
以优化市场营销策略为例,我们可以通过在目标函数中考虑市场需求曲线的非线性性质,并加入一些约束条件(如预算限制),以最大化销售收入。
通过使用MATLAB的非线性规划求解器,我们可以得到一个最优的营销策略。
三、整数规划整数规划是一种求解目标函数和约束条件都含有整数变量的优化问题。
在MATLAB中,我们可以使用整数规划求解器来解决这种问题。
例如,假设我们要规划一个快递配送网络,其中既有整数变量(如车辆数量),也有连续变量(如距离和时间)。
借助MATLAB的整数规划求解器,我们可以找到最佳的配送路线和车辆数量,以最小化总体成本。
四、目标函数拟合目标函数拟合是一种寻找最佳曲线拟合给定数据的优化问题。
在MATLAB中,我们可以使用最小二乘法等方法来实现目标函数拟合。
以股票价格预测为例,我们可以使用历史数据来建立一个合适的数学模型,并通过拟合目标函数来预测未来的股价走势。
通过使用MATLAB的优化工具箱,我们可以获得最佳的拟合函数,以提高预测准确性。
五、参数优化参数优化是在给定目标函数和约束条件的情况下,寻找最佳参数取值的优化问题。
第10章 Matlab 在最优化问题中的应用优化理论是一门实践性很强的学科,广泛应用于生产管理、军事指挥和科学试验等各种领域,Matlab 优化工具箱提供了对各种优化问题的一个完整的解决方案。
在数学上,所谓优化问题,就是求解如下形式的最优解:Min fun (x)Sub. to [C.E.][B.C.]其中fun (x)称为目标函数,“Sub. to ”为“subject to ”的缩写,由其引导的部分称为约束条件。
[C.E.]表示Condition Equations ,即条件方程,可为等式方程,也可为不等式方程。
[B.C.]表示Boundary Conditions ,即边界条件,用来约束自变量的求解域,以lb ≤x ≤ub 的形式给出。
当[C.E.]为空时,此优化问题称为自由优化或无约束优化问题;当[C.E.]不空时,称为有约束优化或强约束优化问题。
在优化问题中,根据变量、目标函数和约束函数的不同,可以将问题大致分为: ·线性优化 目标函数和约束函数均为线性函数。
·二次优化 目标函数为二次函数,而约束条件为线性方程。
线性优化和二次优化统称为简单优化。
·非线性优化 目标函数为非二次的非线性函数,或约束条件为非线性方程。
·多目标优化 目标函数并非一个时,称为多目标优化问题。
本章将对以上几类优化问题在Matlab 中的实现作比较详细的讲解。
另外还将介绍两个利用优化方法解非线性方程的函数。
通过本章的介绍,用户可以不必掌握艰涩的各种优化算法而轻易地解决一些常用的最优化问题了。
10.1 线性规划问题线性规划问题即目标函数和约束条件均为线性函数的问题。
其标准形式为:min C ’xsub. To Ax = bx ≥0其中C, b, 0∈R n ,A ∈R m ⨯n ,均为数值矩阵,x ∈R n 。
若目标函数为:max C ’x ,则转换成:min –C ’x 。
标准形式的线性规划问题简称为LP (Linear Programming )问题。
其它形式的线性规划问题经过适当的变换均可以化为此种标准形。
线性规划问题虽然简单,但在工农业及其他生产部门中应用十分广泛。
在Matlab 中,线性规划问题由linprog 函数求解。
函数:linprog %求解如下形式的线性规划问题:x f T xmin such that b x A ≤⋅beq x Aeq =⋅ub x lb ≤≤其中f, x, b, beq, lb, ub 为向量,A, Aeq 为矩阵。
格式:x = linprog(f,A,b)x = linprog(f,A,b,Aeq,beq)x = linprog(f,A,b,Aeq,beq,lb,ub)x = linprog(f,A,b,Aeq,beq,lb,ub,x0)x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options)[x,fval] = linprog(...)[x,fval,exitflag] = linprog(...)[x,fval,exitflag,output] = linprog(...)[x,fval,exitflag,output,lambda] = linprog(...)说明:x = linprog(f,A,b) 求解问题 min f ’*x ,约束条件为A*x<=b 。
x = linprog(f,A,b,Aeq,beq) 求解上面的问题,但增加等式约束,即Aeq*x = beq 。
若没有不等式存在,则令A = [ ]、b = [ ]。
x = linprog(f,A,b,Aeq,beq,lb,ub) 定义设计变量x 的下界lb 和上界ub ,使得x 始终在该范围内。
若没有等式约束,令Aeq = [ ]、beq = [ ]。
x = linprog(f,A,b,Aeq,beq,lb,ub,x0) 设置初值为x0。
该选项只适用于中型问题,默认时大型算法将忽略初值。
x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options) 用options 指定的优化参数进行最小化。
[x,fval] = linprog(...) 返回解x 处的目标函数值fval 。
[x,fval,exitflag] = linprog(...) 返回exitflag 值,描述函数计算的退出条件。
[x,fval,exitflag,output] = linprog(...) 返回包含优化信息的输出变量output 。
[x,fval,exitflag,output,lambda] = linprog(...) 将解x 处的Lagrange 乘子返回到lambda 参数中。
exitflag 参数描述退出条件:·>0 表示目标函数收敛于解x 处;·=0 表示已经达到函数评价或迭代的最大次数;·<0 表示目标函数不收敛。
output 参数该参数包含下列优化信息:·output .iterations 迭代次数;·output .cgiterations PCG 迭代次数(只适用于大型规划问题);·output .algorithm 所采用的算法。
lambda 参数该参数是解x 处的Lagrange 乘子。
它有以下一些属性:·lambda.lower —lambda 的下界;·lambda.upper —lambda 的上界;·lambda.ineqlin —lambda 的线性不等式;·lambda.eqlin —lambda 的线性等式。
例10-1 求解下列优化问题:min 321645)(x x x x f ---=sub.to 20321≤+-x x x42423321≤++x x x302321≤+x x3210,0,0x x x ≤≤≤解:在Matlab 命令窗口键入:>> f=[-5;-4;-6];>> A=[1 -1 1;3 2 4;3 2 0];>> b=[20;42;30];>> lb=zeros(3,1);>> [x,fval,exitflag,output,lambda]=linprog(f,A,b,[],[],lb)Optimization terminated successfully.x =0.000015.00003.0000fval =-78.0000exitflag =1output =iterations: 6cgiterations: 0algorithm: 'lipsol'lambda =ineqlin: [3x1 double]eqlin: [0x1 double]upper: [3x1 double]lower: [3x1 double]>> lambda.ineqlinans =0.00001.50000.5000>> lambda.lowerans =1.00000.00000.0000lambda 向量中的非零元素表示哪些约束是主动约束。
本例中,第2个和第3个不等式约束,第1个下界约束是主动约束(如这些解位于约束边界上)。
exitflag = 1表示过程正常收敛于解x 处。
例10-2 生产决策问题。
某厂生产甲乙两种产品,已知制成一吨产品甲需资源A 3吨,资源B 4m 3;制成一吨产品乙需资源A 2吨,资源B 6 m 3;资源C 7个单位。
若一吨产品甲和乙的经济价值分别为7万元和5万元,三种资源的限制量分别为90吨、200 m 3和210个单位,试决定应生产这两种产品各多少吨才能使创造的总经济价值最高?解:令生产产品甲的数量为x 1,生产产品甲的数量为x 2。
由题意可以建立下面的数学模型:2157max x x z +=sub. to 902321≤+x x2006421≤+x x21072≤x0,021≥≥x x该模型中要求目标函数最大化,需要按照Matlab 的要求进行转换,即目标函数为 2157min x x z --=在Matlab 中实现:>> f=[-7;-5];>> A=[3 2;4 6;0 7];>> b=[90;200;210];>> lb=[0;0];>> [x,fval,exitflag,output,lambda]=linprog(f,A,b,[],[],lb)Optimization terminated successfully.x =14.000024.0000fval =-218.0000exitflag =1output =iterations: 5cgiterations: 0algorithm: 'lipsol'lambda =ineqlin: [3x1 double]eqlin: [0x1 double]upper: [2x1 double]lower: [2x1 double]由上可知,生产甲种产品14吨、乙种产品24吨可使创造的总经济价值最高为218万元。
exitflag = 1表示过程正常收敛于解x 处。
例10-3 厂址选择问题。
考虑A 、B 、C 三地,每地都出产一定数量的原料也消耗一定数量的产品(见下表)。
已知制成每吨产品需3吨原料,各地之间的距离为:A —B :150km ,A —C :100km ,B —C :200km 。
假定每万吨原料运输1km 的运价是5000元,每万吨产品运输1km 的运价是6000元。
由于地区条件的差异,在不同地点设厂的生产费用也不同。
问究竟在哪些地方设厂,规模多大,才能使总费用最小?另外,由于其它条件限制,在B 处建厂的规模(生产的产品数量)不能超过5万吨。
ij ij 吨),i ,j = 1,2,3(分别对应A 、B 、C 三地)。
根据题意,可以建立问题的数学模型(其中目标函数包括原料运输费、产品运输费和生产费用(万元)):min 21121132233113211221024015010010050507575y y y x x x x x x z ++++++++= 323122220160120y y y +++sub.to 2033312113121211≤--+++x x x x y y1633322321122221≤-++-+x x x x y y2433323123133231≤++--+x x x x y y7312111=++y y y13322212=++y y y52221≤+y yj i j i x ij ≠=≥;3,2,1,,02,1;3,2,1,0==≥j i y ij在Matlab 中实现:>> f=[75;75;50;50;100;100;150;240;210;120;160;220];>> A=[1 -1 1 -1 0 0 3 3 0 0 0 0-1 1 0 0 1 -1 0 0 3 3 0 00 0 -1 1 -1 1 0 0 0 0 3 30 0 0 0 0 0 0 0 1 1 0 0];>> b=[20;16;24;5];>> Aeq=[0 0 0 0 0 0 1 0 1 0 1 00 0 0 0 0 0 0 1 0 1 0 1];>> beq=[7;13];>> lb=zeros(12,1);>> [x,fval,exitflag,output,lambda]=linprog(f,A,b,Aeq,beq,lb)Optimization terminated successfully.x =0.00001.00000.00000.00000.00000.00007.00000.00000.00005.00000.00008.0000fval =3.4850e+003exitflag =1output =iterations: 8cgiterations: 0algorithm: 'lipsol'lambda =ineqlin: [4x1 double]eqlin: [2x1 double]upper: [12x1 double]lower: [12x1 double]因此,要使总费用最小,需要B 地向A 地运送1万吨原料,A 、B 、C 三地的建厂规模分别为7万吨、5万吨、8万吨。