动态规划_销售人员分配问题(matlab编程)
- 格式:doc
- 大小:116.00 KB
- 文档页数:4
1.某公司打算向它的三个营业区增设6个销售店,每个营业区至少增设1个。
各营业区每年增加的利润与增设的销售店个数有关,具体关系如表1所示。
试规划各营业区应增设销售店的个数,以使公司总利润增加额最大。
:个销售店,C 区增设1个销售店.最大利润为490万元。
贝尔曼(Bellman )最优化原理:在最优策略的任意一阶段上,无论过去的状态和决策如何,对过去决策所形成的当前状态而言,余下的诸决策必须构成最优子策略。
2.某公司拟将500万元的资本投入所属的甲、乙、丙三个工厂进行技术改造,各工厂获得投资后年利润将有相应的增长,增长额如表所示。
试确定500万元资解:将问题按工厂分为三个阶段3,2,1=k ,设状态变量k (3,2,1=k )代表从第k 个工厂到第3个工厂的投资额,决策变量k x 代表第k 个工厂的投资额。
于是有状态转移率k k k x S S -=+1、允许决策集合}0|{)(k k k k k S x x S D ≤≤=和递推关系式:)}()({max )(10k k k k k S x k k x S f x g S f k k -+=+≤≤ )1,2,3(=k0)(44=S f当3=k 时:)}({max }0)({max )(330330333333x g x g S f S x S x ≤≤≤≤=+=于是有表2-1,表中*3x 表示第三个阶段的最优决策。
当2=k 时:)}()({max )(2232202222x S f x g S f S x -+=≤≤于是有表7-3。
当1=k 时:)}()({max )(1121101111x S f x g S f S x -+=≤≤于是有表2-3。
然后按计算表格的顺序反推算,可知最优分配方案有两个:(1)甲工厂投资200万元,乙工厂投资200万元,丙工厂投资100万元;(2)甲工厂没有投资,乙工厂投资200万元,丙工厂投资300万元。
按最优分配方案分配投资(资源),年利润将增长210万元。
一、概述Matlab是一种理想的工具,可用于制定生产计划。
它具有强大的计算能力和灵活的编程语言,可以帮助企业有效地预测和安排生产计划。
本文将介绍一个生产计划的例题,并提供Matlab代码来解决这个问题。
二、生产计划问题描述假设某工厂需要在未来12个月内生产不同种类的产品。
每个产品有自己的生产时间和成本,也受到市场需求的限制。
现在需要制定一个生产计划,以最大化利润。
具体来说,有以下几个问题需要解决:1. 每个产品的生产时间和成本是多少?2. 每个产品的市场需求是多少?3. 如何制定生产计划,使得利润最大化?三、Matlab代码实现1. 定义产品参数为了方便计算,首先定义每个产品的生产时间、成本和市场需求。
假设有三种产品A、B和C,它们的参数如下:```matlabproduct_time = [4, 5, 6];product_cost = [100, 120, 150];product_demand = [500, 600, 400];```2. 制定生产计划接下来,可以使用Matlab的优化工具箱来制定生产计划。
假设生产计划为x,可以使用线性规划来解决这个问题:```matlabf = -product_cost * x;A = product_time * x;b = product_demand;Aeq = [];beq = [];lb = zeros(1, 3);ub = [];x = linprog(f, A, b, Aeq, beq, lb, ub);```3. 计算最大利润根据得到的生产计划,可以计算出最大利润:```matlabmax_profit = -f * x;disp(['最大利润为:' num2str(max_profit)]);```四、结论通过以上的Matlab代码,可以方便地解决生产计划问题,并得到最大利润。
Matlab的强大计算能力和优化工具箱使得这个问题的解决变得简单而高效。
2010/2011学年第一学期"MATLAB程序设计"大作业一、题目matlab解决用人分配问题二、问题描述和分析(一)问题描述某厂每日8小时的产量不低于1800件。
为了进行质量控制,计划聘请两种不同水平的检验员。
一级检验员的标准为:速度25件/小时,正确率98%,计时工资4元/小时;二级检验员的标准为:速度15件/小时,正确率95%,计时工资3元/小时。
检验员每错检一次,工厂要损失2元。
为使总检验费用最省,该工厂应聘一级、二级检验员各几名?(二)问题分析本题意在考察用MATLAB解决线性规划的问题。
线性规划是合理利用、调配资源的一种应用数学的方法它的基本思路就是在满足一定的约束条件下,使预定的目标达到最优。
即如何合理筹划,精细安排,用最少的资源去实现这个任务,或以最少的投入产生最大的利润。
线性规划问题的标准形式:Min f=c1x1+c2x2+…..+c n x ns.t. a11x1+a12x2+….+a1n x n=b1a21x1+a22x2+….+a2n x n=b2………………….a m1x1+a m2x2+….+a mn x n=b mx1,x2….x n ≥ 0其中:c j, a ij,b i ≥ 0(i=1,2,….m;j=1,2,…n)均为已知数三、建立数学模型设需要一级和二级检验员的人数分别为X1、X2人,总检验费用为fval。
由题意可知每日8小时的检验费用为:fval=(4X1+3X2)*8+(25X1*2%+15X2*5%)*8*2;化简得:fval=40X1+36X2 ;(2)又由“每日8小时的产量不低于1800件”可知:(25X1+15X2)*8≥1800化简得:-5X1-3X2≤-45;(3)若每日检验工作都由一级检验员来做,则:25X1*8≤1800化简得:X1≤9,若每日检验工作都由二级检验员来做,则:15X2*8≤1800化简得:X2≤15;(4)X1、X2自身必须满足条件:X1≥0,X2≥0。
在MATLAB中,任务分配通常涉及将任务分配给一组处理器或线程以并行执行。
这可以通过使用MATLAB 的并行计算工具箱(Parallel Computing Toolbox)来实现。
以下是一个简单的任务分配的示例,展示了如何使用这个工具箱。
首先,确保你已经安装了并行计算工具箱。
然后,你可以按照以下步骤进行:1.初始化并行环境:使用parpool函数初始化一个并行工作池。
这个函数将启动一组工作进程,你可以指定进程的数量。
2.matlabparpool('local', 4); % 使用4个工作进程在本地机器上启动并行池1.定义任务:定义一个可以并行执行的任务。
这个任务通常是一个函数或者一个可以独立执行的代码块。
例如,假设我们有一个函数myFunction,它接受一个输入参数并返回一个结果。
matlabfunction result = myFunction(input)% 这里是函数的代码result = input * 2; % 只是一个简单的示例end1.创建任务数组:创建一个包含所有任务的数据数组。
每个元素代表一个单独的任务。
2.matlabtasks = 1:10; % 创建一个包含10个任务的数组,每个任务是将一个数字乘以21.分配和执行任务:使用parfor(并行for循环)来分配和执行任务。
parfor循环将自动将任务分配给可用的工作进程。
2.matlabresults = zeros(size(tasks)); % 初始化结果数组parfor i = 1:numel(tasks)results(i) = myFunction(tasks(i)); % 执行任务并将结果存储在结果数组中end1.关闭并行池:完成任务后,使用delete函数关闭并行池。
2.matlabdelete(gcp); % 关闭当前并行池1.查看结果:最后,你可以查看results数组来检查任务的结果。
线性规划模型与销售计划问题摘要:这篇文章主要讨论了线性规划模型与销售计划问题。
这是在生产和销售中经常提到的问题。
通过合理的销售方案以达到更大的经济效益。
为解决这样的问题,主要是通过分析建立线性规划模型,然后利用Matlab软件工具箱中求解线性规划模型的函数linprog,编写Matlab程序,最后就可以求出满足题意的解。
关键词:销售;线性;实际1问题的提出某商店拟制定某种商品7—12月的进货、售货计划,已知商店仓库最大容量为1500件,6月底已存货300件,年底的库存以不少于300件为宜,以后每月初进货一次,假设各月份该商品买进、售出单价如下表。
表1月 7 8 9 10 11 12买进(元/件) 28 26 25 27 24 23.5 售出(元/件) 29 27 26 28 25 25假设每件每月的库存费用为0.5元,为使净收益最多,各月进货、售货计划该如何安排。
2问题的分析在中国战国时期,曾经有过一次流传后世的赛马比赛,相信大家都知道,这就是田忌赛马。
田忌赛马的故事说明在已有的条件下,经过筹划、安排,选择一个最好的方案,就会取得最好的效果。
解决该问题的核心是要确定一组决策变量,使得在确定的约束条件下,目标函数取得最大值。
其中,约束条件是决策变量的线性方程或线性不等式,目标函数是决策变量的线性函数。
由此可知,这种计划的安排归属于线性规划问题,可以建立线性规划模型求解。
该问题中决策变量、目标函数较多,无法利用图解法,而如果利用单纯性法求解过程很复杂,所以使用Matlab 软件编程求解。
3模型假设(1)该种商品的价值不随时间变化而发生增值或减值,每月实际售出商品可以是库存商品或是当月买进商品;(2)每月月初进货,需要计算库存费用的商品量为当月月底库存商品量;(3)只有销售商品收入、买进商品费用、库存费用计入净收益计算公式,而运输费,摊位费等管理费用不计;(4)每月进货、售货计划商品量相互独立,互不影响。
基于Matlab的动态规划算法的实现及应用动态规划算法是一种解决多阶段决策问题的优化方法,它可以在每个阶段选择最优决策,并且在各个阶段间保持最优子结构,从而达到整体最优的目的。
在实际应用中,动态规划算法被广泛用于求解优化问题、路径规划、资源分配等方面。
本文将介绍基于Matlab 的动态规划算法的实现及应用,并深入探讨其在实际问题中的应用。
一、动态规划算法的基本原理动态规划算法的基本原理是通过将问题分解为子问题,并计算每个子问题的最优解,然后存储下来以供后续使用。
最终得到整体最优解。
动态规划算法通常包括以下几个步骤:1. 确定状态和状态转移方程:首先需要确定问题的状态,然后建立状态之间的转移关系,也就是状态转移方程。
状态转移方程描述了问题的子问题之间的关系,是动态规划算法的核心。
2. 初始化:初始化动态规划数组,将初始状态下的值填入数组中。
3. 状态转移:利用状态转移方程计算出各个阶段的最优解,并将其存储在动态规划数组中。
4. 求解最优解:根据动态规划数组中存储的各个阶段的最优解,可以得到整体最优解。
Matlab是一种强大的计算软件,具有丰富的数值计算函数和可视化工具,非常适合实现动态规划算法。
下面以一个简单的背包问题为例,介绍如何在Matlab中实现动态规划算法。
假设有n件物品,每件物品的重量为w[i],价值为v[i]。
现在有一个容量为C的背包,问如何选择物品放入背包,使得背包中物品的总价值最大。
我们需要确定问题的状态和状态转移方程。
在这个问题中,我们可以定义状态dp[i][j]表示在前i件物品中选择若干个放入容量为j的背包中所能获得的最大价值。
状态转移方程可以表示为:dp[i][j] = max(dp[i-1][j], dp[i-1][j-w[i]] + v[i])然后,我们可以利用Matlab实现这个动态规划算法,代码如下:```matlabfunction max_value = knapsack(w, v, C)n = length(w);dp = zeros(n+1, C+1);for i = 1:nfor j = 1:Cif j >= w(i)dp(i+1,j+1) = max(dp(i,j+1), dp(i,j-w(i)+1)+v(i));elsedp(i+1,j+1) = dp(i,j+1);endendendmax_value = dp(n+1,C+1);end```三、动态规划算法在实际问题中的应用动态规划算法在实际问题中有着广泛的应用,下面以路径规划问题为例,介绍动态规划算法的应用。
实践类型题目1. 背包问题。
123123max456345100 1,2,3i f x x x x x x x i =++++≤⎧⎨≥=⎩且为整数,从LINGO/MATLAB 两种软件里面任选一种软件求解该背包问题?写出源程序,并以截图的方式给出求解结果。
源代码: model: sets:items/item1..item3/:include,weight,rating; endsets data:weight rating= 3 4 4 5 56;knapsack_capacity=10; enddatamax=@sum(items:rating*include);@sum(items:weight*include)<= knapsack_capacity; @for(items:@gin(include)); end实验结果:2. 某研究所领导在考虑本单位职工的升级调资方案时, 依次遵守以下优先级顺序规定:(1) 不超过年工资总额3000万元;(2) 提级时,每级的人数不超过定编规定的人数;(3) Ⅱ,Ⅲ级的升级面尽可能达到现有人数的20%,且无越级提升;(4) Ⅲ级不足编制的人数可录用新职工,又Ⅰ级的职工中有10%要退休。
有关资料汇总于下表, 问该领导应如何拟订一个满意的方案。
从LINGO/MATLAB两种软件里面任选一种软件求解该目标规划问题?写出源程序,并以截图的方式给出求解结果。
源代码:model:min = P1*d1+P2*(d2+d3+d4)+P3*(d5_+d6_);2.5*x1+2.5*x2+5.0*x3+d1_-d1=450;x1+d2_-d2=30;-x1+x2+d3_-d3=30;-x2+x3+d4_-d4=0;x1+d5_-d5=24;x2+d6_-d6=30;x1>=0; x2>=0; x3>=0;d1_>=0; d1>=0;d2_>=0; d2>=0;d3_>=0; d3>=0;d4_>=0; d4>=0;d5_>=0; d5>=0;d6_>=0; d6>=0;@gin(x1); @gin(x2);@gin(x3);P1=1000; P2=100; P3=10;END实验结果:3. 从LINGO/MATLAB两种软件里面任选一种软件,求下表所示效率矩阵的指派问题的最小解。
matlab求动态规划最优解求解步骤:(1)将过程划分为恰当的阶段。
(2)选择状态变量Xk,使它既能描述过程的状态,又满足无后效性,同时确定允许状态集合Xk。
(3)选择决策变量Uk,确定允许决策集合Uk(Xk)。
(4)写出状态转移方程。
(5)确定阶段指标Vk(xk,Wx)及指标函数Vkn的形式。
(6)写出基本方程即最优值函数满足的递归方程,以及端点条件。
例题:最短路线问题阶段按过程的演变划分,状态由各段的初始位置确定,决策为从各个状态出发的走向,即有Xk+1=Uk(Xk),阶段指标为相邻两段状态间的距离dk(Xk,Uk(Xk)),指标函数为阶段指标之和,最优值函数fk(Xk)是由出发Xk到终点的最短距离(或最小费用),基本方程为:fk(Xk)=min[dk(Xk,Uk(Xk))+fk+1(Xk+1)],k=n,n-1...,2,1,fn+1(Xn+1)=0利用这个模型可以算出例1的最短路线为AB1C2D1E2F2G,相应的最短距离为18。
动态规划的最优性原理:无论过去的状态跟决策如何,对前面的决策所形成的状态而言,后续决策必须构成最优策略。
对于动态规划而言,重要的并不是所谓的模板,比较重要的是在动态规划中,推导的思维方式。
在个人看来动态规划实际就是编程解决大量数据的决策问题的一种重要编程理念和编程思路。
在动态规划的思路即是反向确立后三次状态改变的两次决策量的最优决策,确定了该最优决策之后每次反向推导一步,穷举倒数第三次的不同决策所带来的状态变化量,与之前所得到的的最优决策量进行加成处理(可能加和也可能相减或相乘相除,具体视情况而定),将所得后三次决策的总决策量对比选取最优值,作为后四步的最优状态变化值。
先前重复推导,最终得到该问题的最优策略。
数学模型数学规划1. 某厂生产甲乙两种口味的饮料,每百箱甲饮料需用原料6千克,工人10名,可获利10万元;每百箱乙饮料需用原料5千克,工人20名,可获利9万元.今工厂共有原料60千克,工人150名,又由于其他条件所限甲饮料产量不超过8百箱.问如何安排生产计划,即两种饮料各生产多少使获利最大.进一步讨论:1)若投资0.8万元可增加原料1千克,问应否作这项投资.2)若每百箱甲饮料获利可增加1万元,问应否改变生产计划.解:基本模型决策变量:设生产x1百箱甲饮料,x2百箱乙饮料目标函数:设获利为z=10x+9y万元约束条件:原料和工人的数量均有限,6x1+5x2≤60,10x1+20x2≤150,又有其他条件所限x1≤8非负约束:x1,x2均不能为负值,即x1≥0,x2≥0综上可得:Max z=10x1+9x2s.t. 6x1+5x2≤6010x1+20x2≤1500≤x1≤80≤x2编写Matlab程序如下:C=[-10 -9];A=[6 5;10 20;1 0];B=[60 150 8];Aeq=[];beq=[];vlb=[0;0];vub=[];[x,fval]=linprog(C,A,B,Aeq,beq,vlb,vub)运行结果如下:x =6.42864.2857fval =-102.8571结果分析:若取整数箱饮料,则应该生产6百箱甲饮料,4百箱乙饮料,可最大获利96万元。
进一步讨论:1)若投资0.8万元可增加原料1千克,设增加原料x3千克,则目标函数变为:z=10x1+9x2-0.8x3约束条件变为:s.t 6x1+5x2-x3≤6010x1+20x2≤1500≤x1≤80≤x20≤x3Matlab程序如下:C=[-10 -9 0.8];A=[6 5 -1;10 20 0;1 0 0];B=[60 150 8];Aeq=[];beq=[];vlb=[0;0;0];vub=[];[x,fval]=linprog(C,A,B,Aeq,beq,vlb,vub)运行结果如下:x =8.00003.50005.5000fval =-107.1000结果分析:因为107.1000 >102.8571,所以投资增加原料可以使得最大获利增加,商家应该考虑进行这项投资。
目录一、问题提出 ........................................................................ - 1 -二、问题分析 ........................................................................ - 1 -三、模型建立 ........................................................................ - 2 -3.1建立目标函数 (2)3.2建立约束方程 (2)3.3建立数学模型 (3)四、问题求解 ........................................................................ - 3 -五、结果分析 ........................................................................ - 7 - 总结.................................................................................... - 11 - 参考文献............................................................................... - 12 -一、问题提出某商场对售货员的需求分析经过统计分析如下表所示,为了保证售货人员充分休息,售货人员每周工作5天,休息2天,并且要求休息的两天是连续的,那么应该如何安排售货员的作息,就能满足工作需求,又使配备的售货人员的数目最少呢?二、问题分析如何在保证售货员充分休息,售货员每周工作五天,连续休息两天的前提下,排售货员分配问题,既满足工作需求,又能使配备的收货人员的数目最少,这是一个线性规划的问题,以你我们可以建立模型,然后用lindo软件求得最优解。
Matlab中的动态规划方法与示例分析引言动态规划是一种解决多阶段决策问题的优化方法,它通过将问题分解为若干阶段,在每个阶段中做出最优决策,从而得到整体最优解。
Matlab作为一种强大的计算工具,提供了丰富的函数和工具箱来支持动态规划的求解。
本文将通过介绍动态规划的基本原理和算法,结合几个实际示例,展示在Matlab中如何应用动态规划方法解决实际问题。
一、动态规划的基本原理动态规划的基本原理是通过自底向上的递推关系,将一个大问题分解为若干个子问题,并将每个子问题的最优解存储起来,以便在解决更大的问题时进行查找和利用。
具体地,动态规划有三个关键要素:最优子结构、边界条件和状态转移方程。
最优子结构是指一个问题的最优解可以由其子问题的最优解组成。
它是动态规划的关键特点,也是将问题分解为子问题并递归求解的基础。
边界条件是指问题的边界情况和初始状态,可以是递归求解的终止条件。
状态转移方程是指描述子问题之间关系的方程,它将子问题的最优解与大问题的最优解联系起来。
在求解过程中,通过将问题划分为子问题并依次求解,最终得到整体最优解。
二、动态规划的算法实现在Matlab中,可以通过定义递归函数或使用循环结构来实现动态规划算法。
递归函数的实现方式简单直观,但由于递归调用的开销较大,可能导致算法的效率较低。
循环结构的实现方式相对复杂,但可以通过数组或矩阵来存储子问题的最优解,以减少重复计算,提高算法的效率。
在实际应用中,动态规划可以通过以下步骤来实现:1. 确定问题的最优子结构、边界条件和状态转移方程。
2. 定义数组或矩阵来存储子问题的最优解。
3. 利用循环结构或递归函数,按照自底向上的顺序计算和存储子问题的最优解。
4. 根据存储的子问题最优解,计算并返回大问题的最优解。
三、动态规划实例分析1. 背包问题背包问题是动态规划中经典的例子,它的目标是在限制总重量的情况下,选择一些物品放入背包,使得背包中物品的总价值最大化。
matlab平均分配问题在MATLAB中,平均分配问题通常涉及到将一组数据分成若干个相等的部分。
下面是一个简单的例子,说明如何在MATLAB中实现平均分配。
假设我们有一组数据x,长度为n,我们想要将其平均分成m个部分。
在MATLAB 中,我们可以使用以下步骤来实现:确定每部分的长度:每部分的长度是n/m。
确定第一个元素的位置:第一个元素的位置是1。
确定最后一个元素的位置:最后一个元素的位置是n。
计算每个部分中的元素:使用线性索引来访问每个部分中的元素。
下面是一个示例代码,演示如何在MATLAB中实现平均分配:matlab% 定义数据x = [1 2 3 4 5 6 7 8 9 10];% 确定每部分的长度m = 3;length_per_part = length(x) / m;% 计算每个部分中的元素for i = 1:mstart_index = (i-1) * length_per_part + 1; end_index = i * length_per_part;part(i) = x(start_index:end_index);end% 输出结果disp('第一部分:');disp(part(1));disp('第二部分:');disp(part(2));disp('第三部分:');disp(part(3));在这个例子中,我们将数据x平均分成3个部分。
代码中的for循环用于计算每个部分中的元素,并存储在变量part中。
最后,我们输出每个部分的内容。
请注意,如果数据的长度不是m的整数倍,则最后一个部分可能包含较少的元素。
在上面的代码中,我们使用线性索引来访问每个部分中的元素,确保了结果的正确性。
如何进行人员分配“A公司”是一家从事建筑工程的公司,现有41个专业技术人员,其结构和相应的工资水平分布如表1所示:表1 人员结构及工资情况目前,公司承接4个工程项目,其中2项是现场施工,分别在A地和B地,主要工作在现场完成;另外2项是工程设计,分别在C地和D地,主要工作在办公室完成。
由于4个项目来源于不同客户,并且工作的难易程度不同,因此,各项目的合同对有关技术人员的收费标准不同,具体情况如表2:表2 不同项目和各种人员的收费标准为了保证工程质量,各项目中必须保证专业人员结构符合客户的要求,具体情况如表3所示:表3 各项目对专业技术人员结构的要求说明:(1)项目D,由于技术要求较高,人员配备必须是助理工程师以上,技术员不能参加;(2)高级工程师相对稀少,而且是保证质量的关键,因此,各项目客户对高级工程师的配备要求不能少于一定数目的限制。
各项目对其他专业人员也有不同的限制或要求;(3)各项目客户对总人数都有限制;(4)由于C,D两项目是在办公室完成,所以每人每天有50元的管理费开支;由于收费是按人工计算的,而且4个项目总共同时最多需要的人数是10+16+11+18=55,多于公司现有人数41,应如何合理地分配现有的人员力量,使公司每天的直接受益最大?2011年高教社杯全国大学生数学建模竞赛选拔赛题目如何进行人员分配摘要人力资源管理是一个公司进行人力资源分配的重要工作,合理地安排人力资源,能够为企业带来最大的经济效益。
公司不只要对现有的人员进行任务分配,还要使公司的人力资源结构保持一个科学的比例。
本模型旨在为A建筑公司提供一个良好的人员分配方案,达到公司获利最大的目的,以及怎样在以后的人员招聘中使人力资源结构保持一个良好的比例。
在公司现有的情况下,通过分析各种影响因素,排除掉一些不必要的干扰因素,运用整数线性规划和分支定界法的知识建立数学模型,并使用LINGO软件进行编程求解,得出公司人员分配的最佳方案。
一、问题重述
某企业甲、乙、丙三个销售市场,其市场的利润与销售人员的分配有关,现有6个销售人员,分配到各市场所获利润如下表示,试问应如何分配销售人员才能使总利润最大?
二、问题分析
首先我们对设备的分配规定一个顺序,即先考虑分配给甲市场,其次乙市场,最后丙市场,但分配时必须保证企业的总收益最大。
将问题按分配过程分为三个阶段,根据动态规划逆序算法,可设: 1、阶段数k=1,2,3(即甲、乙、丙三个市场的编号分别为1,2,3);
2、状态变量x k 表示分配给第k 个市场至第3个市场的人员数(即第k 阶段初尚未分配的人员数);
3、决策变量u k 表示分配给第k 市场的人员数;
4、状态转移方程:x k+1=x k -u k ;
5、g k (u k )表示u k 个销售人员分配到第k 个市场所得的收益值,它由下表可查得;
6、f k (x k )表示将x k 个销售人员分配到第k 个市场所得到的最大收益值,因而可得出递推方程:
f k (x k )=
6
,...,1,0max
=k u [ g k (u k )+ f k+1(x k -u k )],k=1,2,3
f 4(x 4)=0
三、问题求解
1)k=3时,市场丙的分配方案和总收益.
最大收益:f 3(x 3)=6
,...,1,0max 3=u [g 3(x 3)]
最大收益:f 2(x 2)=2
max u [g 2(u 2)+ f 3(x 3)]=
2
max u [g 2(u 2)+ f 3(x 2- u 2
)]
最大收益:f 1(x 1)=1
max u [g 1(u 1)+ f 2(x 1- u 1)]= max[g 1(u 1)+ f 2(4- u 1)]
为此,我们可以用Matlab 语言编程使问题能跟方便地得到解决,其算法设计如下图:
运用Matlab语言编程,程序如下:m=1;
A=[0 60 80 105 115 130 150];
B=[0 65 85 110 140 160 175];
C=[0 75 100 120 135 150 180];
for i=1:7
for j=1:7
for k=1:7
if i+j+k==9
d(m)=A(i)+B(j)+C(k);
E(m,1)=i;
E(m,2)=j;
E(m,3)=k;
m=m+1;
else
continue;
end
end
end
end
MAXNum=d(1);
for l=1:size(d,2)
if d(l)>MAXNum
MAXNum=d(l);
p=l;
else
continue;
end
end
for l=1:size(d,2)
if d(l)==MAXNum
E(l,:)
else
continue;
end
end
MAXNum
按回车键后可得到以下结果:
ans =
2 5 2
MAXNum =
275
然后可以容易得到最大利润为275,最优分配方案有一个:(1,4,1)。
这样通过计算机的运行可以方便简洁的得到结果,避免了繁琐的计算,大大降低了工作量。