matlab的数学建模论文,matlab论文----数学建模.doc

41528d3028836879cd698677c3999917.gifmatlab论文----数学建模.doc

1对MATLAB的总结2数学建模序言31、案例背景3二、理论基础4三、案例的建模过程5四、MATLAB求解9五、参考文献122上大学以来,我所过得很多科目在最后结尾的部分都会提到用MATLAB来解决,在这个学期终于接触学习了它。而且还有机会进行上机操作,下面就来谈谈我的上机以及学习的心得体会。首先来说说MATLAB语言,它的语言与我之前学过的C语言有些不同,C语言主要是面向过程的,灵活性较强,但所耗费的时间和精力比较大。例如定义变量就分为INT,FLOAT,CHAR等类型,十分麻烦。但MATLAB语言则显得很灵活与快捷,它是一门解释性语言,能自动将高级语言翻译成机器语言。另外,MATLAB还配有许多常用的公式,操作起来十分的方便MATLAB的语法限制不严格,程序设计自由度大。程序的可以执行很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。MATLAB具有一个强大的工具箱,里面的东西,只要你想要,你就可以毫不犹豫的提取出来,不用像C语言编程中,你想要的东西你还的用函数调用的形式去借用。这些工具箱提供了用户在特别应用领域所需要的许多函数,这使得用户不必花大量的时间编写程序就可以直接调用这些函数。,达到事半功倍的效果。MATLAB的图形功能强大。不管你二维图形,三维图形。只要你想要,就能编写出来函数式。在短短的几秒钟内,它会呈现在你眼前。另外就是图形的直观性,在绘制图形时,加上一点修饰,它会自动标注你想要的图形的阴影部分。MATLAB具有二维和三维绘图功能,还能在坐标图上加标题,等等。例如用MATLAB创建矩阵时,方法有两种第一可直接依次输入矩阵各行各列的元素,但矩阵元素3必须用【】来括住矩阵元素必须用逗号或空格分隔。第二。用MATLAB函数创建矩阵。MATLAB可以进行矩阵否认加减乘除的元素,求可逆矩阵,转置矩阵,求矩阵的特征值,求线性方程组等等。MATLAB的数学建模来说,它是一款相当不错的建模辅助工具,因为MATLAB中有统计函数,线性分析函数,插值函数,非线性分析函数等等这些数模必备的函数,而且,MATLAB强大的绘图功能可使得许多数学演算过程变得可视化。所以我特意做了一道数学建模的题来学习MATLAB序言所谓单机排列排序问题,就是指等待加工的N项作业在同一台机器上按照一定的优先级规则进行加工的排序问题。优先级规则是指决定作业先后顺序的规则,这些规则可以十分简单,人物可以仅仅根据一个数据决定,比如加工时间,到日期,订单到达日等。下面我们将通过两个案例来了解。一案例背景案例打字员处理业务顺序决策问题已知某打字员一天接到5个稿件,他完成每个业务的时间和业主希望完成的时间如下表所示。为尽快完成任务,他必须决策这些业务的处理顺序。业务按接到的先后顺序一二三四五4完成时间/天42351希望完成时间/天67582请分别根据以下悠闲级规则安排任务的处理顺序,以平均流程时间为绩效指标比较各优先级规则。(1)按照先到先服务的顺序(FCFS),应如何安排处理顺序(2)按照加工时间最短规则(SOT),应如何安排处理顺序(3)按照最早交货期的规则(EDD),应如何安排处理顺序(4)按照后到先服务的规则(LCFS),应如何安排处理顺序(5)按照随机规则(RANDOM),应如何安排处理顺序(6)按照剩余松弛时间规则(STR),应如何安排处理顺序关于案例的说明这个案例在单机作业排列顺序问题中是非常基本和熟悉的也是非常普遍的只需根据优先级规则即可给出作业的处理顺序。针对厂家而言,对优先级进行评的标准是总流程时间或平均流程时间,总流程时间或平均流程时间较少的作业顺序自然较好。在对案例进行解答之前,有必要对作业顺序的概念和优先级规则进行介绍。二理论基础所谓作业排序,就是实施活动,利用资源,配置设施的时间表,也就是指一些机器或一些工作中心决定完成任务先后次序的过程。因为决定任务次序是按照优先规则进行排序的,所以也称之为优先5级作业顺序。从理论上来说,对于单机作业排列排序问题,如果有N个任务,根据排列理论,共计有SNNN1N221种作业方式。当N较小时,将每种排列方式下的绩效指标计算出来然后进行全面比较并不是什么难事;但是,当N较大时,要将每种排列方式下的绩效指标计算出来并进行全面比较,既费时也没有必要,此时通常考虑采用优先级规则进行作业排序单位作业的排序问题的求解可以说是所有排序问题中的最为简单的问题,最为直接的,只要给定了优先级规则即可得到相应的排序方案。求解单机作业排序排列问题的思路首先在给定优先级规则下的得到作业排序,然后计算排序的绩效指标。最后,根据关键绩效指标得到最优的作业排序方案。根据上述求解的思路,单机作业排列排序问题的求解,可以通过MATLAB实现自动求解,每种优先规则即是一种算法。三案例的建模过程本案例需要按照给定的6个优先级规则进行作业排序,比较各优先级规则下的排列方案优劣的绩效指标是平均流程时间。具体建模过程如下。(1)按照先到先服务规则业务加工先后顺序12345开始加工0469146完成时间(天)42351||||||||||||流程时间(天)4691415希望完成时间(天)67582实际交货时间(天)6791415提前时间(天)21___超期时间(天)__4613(2)按照加工时间最短规则业务加工先后顺序52314开始加工013610完成时间(天)12345||||||||||||流程时间(天)1361015希望完成时间(天)27568实际交货时间(天)2761015提前时间(天)14超期时间(天)147(3)按照最早交货期规则将所有业务按照EDD规则对交货期进行升序排序,得到业务加工的先后顺序531247业务加工先后顺序53124开始加工016911完成时间(天)15324||||||||||||流程时间(天)1691115希望完成时间(天)28576实际交货时间(天)2891115提前时间(天)12超期时间(天)449(4)按照后到先服务的规则根据LCFS规则,业务加工顺序54321业务加工先后顺序54321开始加工016911完成时间(天)15324||||||||||||流程时间(天)1691115希望完成时间(天)28576实际交货时间(天)2891115提前时间(天)12超期时间(天)4498(5)按照随即规则假设业务加工程序43125业务加工先后顺序43125开始加工0581214完成时间(天)53421||||||||||||流程时间(天)58121415希望完成时间(天)85121415实际交货时间(天)88121415提前时间(天)3超期时间(天)36713(6)按照剩余松弛时间规则将各业务按照STR规则对剩余松弛时间进行非递减排列,得到业务的加工顺序53142业务加工先后顺序53142剩余松弛时间211533642853725开始加工014813完成时间(天)13452||||||||||||9流程时间(天)1481315希望完成时间(天)2581315实际交货时间(天)25687提前交货时间(天)11超期交货时间(天)258由以上各种作业方案可知,“流程时间”一行的最后一个数字是相等的,即无论在哪种优先级规则下,作业的完成时间是一样的。由此也验证了单机作业排列排

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大家可能知道,历年来相当一部分全国大学生数学建模竞赛赛题,无论在逻辑推理、模型抽象、论文结构组织与撰写还是代码实现等方面都对我国高校本科生的基础能力提出了挑战,更不说为获得理想的名次,还需具备团队合作、项目组织方面的潜在要求。因此各个高校的研究生院、用人企业单位等,无疑都非常乐于将上述能力真正达到相当程度的人才招揽至麾下。但从一个刚刚从高中升入大学的本科生视角来看,想要在相对紧迫的时间里,经过训练而达到符合竞赛要求,并能在实战中绽放光彩的相关能力,并非易事。 为此,我们特别邀请了祁彬彬(9 次参加本科生和研究生数学建模比赛,多次获奖)和马良两位前辈在论坛上为打算参加数学建模的在校大学生们,分享他们撰写的一套以提高利用MATLAB数学建模中运用能力的代码分析系列。这个系列中既有一些往年培训中的基础训练问题,也有历年各类数学建模竞赛中的赛题全真代码方案剖析,系列的每个专题都只会针对某个关键问题编写相关代码,并分析代码为什么这样写、关键函数及使用要点是什么?且很多情况下同一个子问题的求解会给出多种代码方案,其主要目的是直接通过解决建模实例问题,切实而快速提高参与建模的大学生们,利用MATLAB数学建模时,真正的代码嗅觉和实战能力。 培养建模能力,从没有什么直接看完藏诸于搜索引擎的某些“标准答案”,就能迅速走上康庄大道的热血桥段。
以下是一个 MATLAB 编程数学建模实例: 假设你要为一个小型公司编写一个薪资计算程序。公司雇用了 5 名员工,每名员工的每小时薪资不同。编写一个 MATLAB 程序,计算每名员工的总薪资。 首先,你需要定义每名员工的每小时薪资。可以使用一个数组来存储这些值。假设数组名为 hourly_wages。 hourly_wages = [20, 25, 18, 22, 21]; 接下来,你需要确定每名员工的工作时间。可以使用一个矩阵来存储这些值,其中每行代表一个员工,每列代表一个工作日。假设矩阵名为 hours_worked。 hours_worked = [8, 8, 8, 8, 8; 7, 7, 7, 7, 7; 6, 6, 6, 6, 6; 9, 9, 9, 9, 9; 10, 10, 10, 10, 10]; 现在,你可以使用这些值来计算每名员工的总薪资。可以使用一个循环来遍历每名员工,并使用 hourly_wages 和 hours_worked 数组中的值来计算每名员工的总薪资。假设你想要将每名员工的总薪资存储在一个名为 total_pay 的数组中。 total_pay = zeros(1, 5); % 创建一个长度为 5 的数组,每个元素的值为 0 for i = 1:5 total_pay(i) = sum(hourly_wages(i) * hours_worked(i,:)); end 现在,total_pay 数组中存储了每名员工的总薪资。你可以使用 disp 函数将这些值打印出来。 disp(total_pay); 该程序将会输出每名员工的总薪资。在这个例子中,输出的结果为: 960 875 648 1980 2100 这个结果表示: - 第一名员工的总薪资为 960 元 - 第二名员工的总薪资为 875 元 - 第三名员工的总薪资为 648 元 - 第四名员工的总薪资为 1980 元 - 第五名员工的总薪资为 2100 元 这就是一个简单的 MATLAB 编程数学建模实例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值