Cleve的角落:数学和计算上的Clyver

科学计算,数学和更多

Mathworks数学建模挑战

本周的帖子是Reece Teramoto.

Mathworks最近接管了对数学建模挑战的赞助,这是由暹罗 - 工业和应用数学学会组织的美国大学高中小辈和老年人的比赛。https://m3challenge.siam.org.。学生在团队中工作,解决专业数学家面临的真实问题。使用数学建模14小时,给出了14小时的时间来完成三部分问题,并将纸张放在一起显示结果。团队可以选择使用任何软件或语言(或无)进行数学计算。

2018年竞争问题

我们决定将一系列样本解决方案放在过去一年的Matlab问题上。金宝搏官方网站

在过去一年的挑战中集中于浪费食物的问题。学生受到挑战来执行计算,以分析浪费的食物量,并应用结果提出喂养该国数百万食物不安全的人的解决方案。金宝搏官方网站您可以查看完整问题here和获胜的解决方案金宝搏官方网站here

在这篇文章中,我将通过简要概述解决问题的每个部分以及在Matlab中组合在一起的样本解决方案的摘要。每个示例的相应实时脚本将演示如何在Matlab中执行以下操作:

  • 进口数据
  • 流程和模型数据
  • 可视化结果(图表,图形,曲线拟合,图)
  • 从结果中发出有意义的结论

虽然问题的所有三个部分都展示了上述步骤,但这三个部分将重点关注Matlab中的不同工具。我们将专注于导入工具曲线拟合应用程序, 和映射工具箱

在阅读这篇文章的其余部分之前,请从文件交换下载完整的MATLAB示例这样你就可以提到他们。

内容

只是吃它!(进口工具)

您可以通过打开文件找到此问题的完整示例just_eat_it.mlx.从本博文帖子开头链接的存档。

对于这部分问题,学生将创建一个数学模型,即国家可以使用该状态产生的浪费食物来确定它是否可以喂食其食物不安全的人群。学生提供德克萨斯州的食物浪费和不安全的样本数据。

这是接近这个问题的一种方法,采用技术计算技巧:

  1. 计算国家消费者浪费多少美元的食物。
  2. 计算在国家中喂养所有食物不安全的人需要多少美元。
  3. 比较两个值,以确定通过使用国家消费者的浪费食物可以喂养多少州的食物不安全人口。

首先,我们可以使用MATLAB进口工具进口提供了电子表格数据并将所有内容保存到表中。可以使用几键执行此导入:

一旦我们在Matlab中拥有我们的数据,我们就可以使用许多内置Matlab函数来组织和总结我们的数据。

From the data, we can calculate the dollar value of wasted food in Texas for different categories, which we can visualize:

栏(foodWasteTable。TypeofFood foodWasteTable。昔edDollars); ytickformat('usd') xlabel('Type of Food') ylabel('Amount Wasted') title('Dollars of Wasted Food in Texas (2016)') % change the y-axis to be in the form of n x 10^6 (millions) ax = gca; ax.YAxis.Exponent = 6;


%排序从最小到最大的食物垃圾食品频率=排出(食品纬度,'废水');%结合了3个最小类别并将其标记为“其他”P =饼([总和(FoodWaStettable.wasteddollars(1:3); foodwastetable.wasteddollars(4:结束)]);传奇([其他“; FoodWaStetable.typeoffood(4:结束)],'地点','eastouts')标题('浪费食物的类别')

一如既往的人,两种最大类型的浪费食物都是肉类和生产。经过进一步的计算,我们发现德克萨斯州浪费食品的价值每年约为23亿美元。

第二步是在寻找美元需要喂养所有食物不安全的人。喂养美国执行此计算here。我们可以轻松地将其转化为Matlab,发现德克萨斯州粮食不安全人员的年度成本约为22亿美元。

For the final comparison, and based on our assumptions noted in the filejust_eat_it.mlx.,我们确定我们可以在德克萨斯州养活所有食物不安全的人,通过修复国家的浪费食物。

食物愚蠢?(曲线拟合应用程序)

您可以通过打开文件找到此问题的完整示例food_foolish.mlx.从本博文帖子开头链接的存档。

个人选择涉及食品消费,主要发生在杂货店,学术店,餐厅和家中。对于这部分问题,学生将创建一个数学模型,可以用于确定家庭在一年内产生的食物垃圾量,根据他们的特质和习惯。然后,该模型应该适用于以下家庭:

  • 单亲父母,幼儿,年收入为20,500美元
  • 四口之家(两个父母,两个少女),年收入为135,000美元
  • 老年夫妇,生活在退休度,年收入55,000美元
  • 单身23岁,年收入为45,000美元

我们将使用曲线拟合应用程序在Matlab中找到家庭收入与浪费食物之间的关系。我们的方法如下:

  1. 收集家庭收入和浪费食物的数据。我们可以将每个数据点视为XY平面上的点,其中X轴是家庭收入,y轴是浪费的食物。
  2. 使用曲线拟合应用程序生成模拟趋势的函数。
  3. 可视化这种关系。
  4. 评估样本系列数据的收入水平的曲线。

美国劳工统计局已收集关于不同收入的个人年度食品支出的数据。您可以找到数据这个电子表格。我们可以使用的是使用该数据将此数据导入MATLAB导入工具并将数据存储在一个桌子

一旦我们有数据点,我们就可以使用曲线拟合应用来生成曲线拟合。该应用程序使您可以轻松地尝试将曲线的不同拟合与数据点一起尝试不同,并查看每个符合的直接结果:

一旦我们拥有拟合曲线,我们就可以通过样品家庭收入数据:

SampleIncome = [20500 135000 55000 45000]'samplewaste = foodwastecurve(sampleincome);家庭= {'单亲父母有一个幼儿','四口之家(两个父母,两个十几岁的孩子)',......'老年夫妇,生活在退休','单亲23岁'};解决方案=表(SampleIncome,Samplewaste,'Rownames',Families)

我们还可以绘制各种收入的食物垃圾趋势的条形图和线条图。然后,我们可以在问题陈述中给出的4个样本系列的点。该图使得可以轻松地可视化家庭收入与浪费食物的年度美元之间的关系。因为我们认为食物浪费取决于只要关于家庭收入,我们有解决问题的解决方案。

%栏图栏(Incomerange,Wastedemo)按住%线图绘图(Incomerange,Wastedemo,'LineWidth',3,'颜色','绿色')%来自问题声明分散的4个家庭的情节点(solution.sampleinmome,solution.samplewaste,'marker','*','linewidth',5,'markeredgecolor','红色')阻止Xlabel('收入(USD)')Ylabel('年度食物垃圾(USD)')标题('收入的食物浪费')

饥饿游戏计划?(映射工具箱)

您可以通过打开文件找到此问题的完整示例hunger_game_plan.mlx.from the archive linked to at the File Exchange .

对于这个问题,学生将使用数学建模来提供对当地社区可以使用的策略的洞察力,以最小的成本来重复浪费食物。

我们的方法如下:

  1. 采用映射工具箱to display location of two dozen grocery stores, including all the Stop and Shops, in Boston.
  2. 显示大波士顿食品银行的位置。
  3. 找到在食品银行开始的最短路径,访问所有杂货店,以从过去一周收集其他浪费的产品,并在食品银行结束。
  4. 计算过去一周的卡车运行费用和美元储存的生产。

Since停止和商店是新英格兰最受欢迎的杂货店连锁店更大的波士顿食品银行是Mathworks支持的组织,我们对这个问题的方法是找到食物收藏卡车可以从更大的波士顿食品银行开始的最短路径,参金宝app观每个停车场和商店以及其他一些商店波士顿地区收集另外浪费的产品,并回到大波士顿食品银行。我们想要最短的路径,因为这将最小化操作卡车的成本。

这种特定的情景在计算机科学中是已知的旅行ling Salesman Problem (TSP),其中一个推销员从他们的家庭城市开始,并希望访问多个城市并在最短的路径中回到家。

映射工具箱lets us plot points on a map given their latitude and longitude values. We start by displaying all the Stop and Shop locations in the Boston area (identified by a green marker). The coordinates were obtained from Google Maps.

只有13个位置的TSP并不大大挑战,因此我们在随机选择的更多位置(以深红色显示),以及更大的波士顿食物库(以蓝色表示)。

WMMarker(Lats(1:13),lons(1:13),'图标','stopandshoplogo.jpg')wmmarker(lat(14:24),lons(14:24),'颜色',黑暗)wmmarker(Lats(25), Lons(25), 'color', ‘blue’)

以前的克莱夫的角帖描述了旅行推销员问题的近最优解..我们可以通过坐标到旅行者以获得它们之间的最短路径。我们也可以使用映射工具箱查看此路径:

Lats = Lats(path); Lons = Lons(path); wmline(Lats, Lons)

虽然返回的路径不考虑道路的确切路径,但我们仍然得到最短路径的良好估计和行驶的距离。经营18轮车的费用有点超过1美元,我们可以计算出这次旅行\ 30美元的天然气总成本。

此外,我们可以使用一些数据国家资源国防委员会计算美国的普通杂货店,在水果和蔬菜中每周浪费约7500美元。这意味着通过完成这次往返,我们将在过去一周的波士顿地区的这些地区挽救几乎\ 200,000美元其他浪费的水果和蔬菜。不错!

想参加挑战吗?

希望这已经让您一睹Matlab如何进行分析,可视化和执行数据的计算。要查看上述问题的完整MATLAB解决方案,请金宝搏官方网站从文件交换下载文件

此外,如果您了解任何高中小辈和老年人会对挑战感兴趣,请鼓励他们参加!挑战是免费进入的,奖学金有100,000美元。挑战完全在线完成,有很多参考资料可以帮助团队准备。有关更多信息,请访问以下链接:

https://m3challenge.siam.org/participate.

|
  • 打印
  • 发送电子邮件

评论

要发表评论,请点击here要登录您的MathWorks帐户或创建新的。