2023年数维杯国际大学生数学建模挑战赛D题洗衣房清洁计算解题全过程论文及程序

news2024/9/22 23:19:55

2023年数维杯国际大学生数学建模挑战赛

D题 洗衣房清洁计算

原题再现:

  洗衣房清洁是人们每天都要做的事情。洗衣粉的去污作用来源于一些表面活性剂。它们可以增加水的渗透性,并利用分子间静电排斥机制去除污垢颗粒。由于表面活性剂分子的存在,洗衣粉可以发挥其双重功能。表面活性剂分子的一端是亲脂性的,它吸引污垢并排斥水,而另一端是亲水性的,吸引水分子。当洗衣粉倒入水中时,表面活性剂分子的亲脂性部分强烈粘附在任何未充满水的表面,例如被洗涤的物体表面(由于身体或织物表面)。同时,亲水部分排斥油性物质。它削弱了维持水分子结合的分子间力(导致水形成液滴的力,就像包裹在弹性膜中一样),使单个分子渗透到待清洁物体的表面和污垢颗粒之间。因此,可以说表面活性剂降低了水的表面张力。洗衣机或手摩擦的机械作用会导致表面上被表面活性剂分子包围的污垢颗粒脱落,并且污垢颗粒粘附在表面活性剂的亲脂性部分。这会导致在冲洗阶段清除仍悬浮在物体表面的污垢颗粒。
  在实践中,从小规模的家庭经营到酒店和专业机构的专业经营,需要考虑的问题是:如何以更低的成本使洗衣房干净整洁?这个看似简单的人生问题包含着深刻的数学原理。请建立一个适当的数学模型来解决以下问题。
  1.一件附着污垢的衣服,如果给定污垢的量和可用的水量,并且污垢在第k次洗涤时在水中的溶解度为A_k,其中A_1=0.80,A_k=0.5a_k-1,k=2,3,L。在不考虑其他因素的情况下,清洁它的最佳方法是什么?给出关于洗涤次数和每次用水量的最优解,并讨论a_k、初始污垢量和可用水量对目标的影响。
  2.假设每次洗涤所需时间相同,且可用水量不受限制,则最终污垢残留量应不超过初始污垢量的千分之一,其他条件与问题1类似。提供最具时间效率的清洁计划,并分析a_k和初始污垢量对最佳解决方案的影响。
  3.有几件衣服上的污垢类型和数量如表1所示。现有的十种洗涤剂,各种洗涤剂在污垢上的溶解度,以及洗涤剂的单价如表2所示。如果水费是每吨3.8元,尽量既节省成本又有一个好的清洁计划。
  4.有几种不同材料的衣服,每种衣服上的污垢类型和数量如表3所示。考虑到材料、颜色等方面的差异,有些衣服不能混合洗涤,如表4所示。在与问题2相同的条件下,尝试提供具有成本效益和高效的清洁计划。
  注:本次比赛只考虑传统的水洗方式。

  术语定义:
  1.溶解度a_k:表示在第k次洗涤过程中,等量洗涤剂溶解的污垢相对于初始污垢量的比例。
  2.初始污垢量:表示清洁前衣服上的污垢量,单位为克。

整体求解过程概述(摘要)

  随着生活水平的提高,人们对生活质量的要求不断提高。洗衣是日常生活中不可或缺的一部分,因此优化洗衣计划成为人们高度关注的话题。本文旨在利用动态规划模型和迭代方法对洗衣计划进行数学建模研究,以提高洗衣效率,减少资源浪费,最终实现节能环保目标[1]。
  基于问题一,清洁次数和每次用水量的最佳解决方案是什么?这涉及到污垢的溶解度和所用水量之间的平衡。通过建立动态规划模型和迭代方法,以及使用Python求解器来解决清洁附着污垢的衣服的最佳方法问题,我们还可以讨论污垢溶解度、初始污垢量和可用水对目标的影响。通过该模型,我们可以发现最佳的清洗方法是每次用0.20吨水清洗两次。
  基于问题二,我们需要找到最省时的清洁计划,以确保最终残留物不超过初始污垢量的千分之一。为了解决这个问题,我们建立了一个指数衰减模型,并使用Python绘制了洗涤次数和时间之间的关系曲线和点集图。我们确定最小清洗次数为6次,最短清洗时间尚待确定。此外,我们可以从洗涤次数与时间之间的关系曲线和点集图推断,影响洗涤时间的主要因素是溶解度。初始污垢量不影响计算,因为在指数衰减模型中,污垢去除的比例与初始污垢量无关。
  基于问题三,以及表1和表2的数据,我们需要找到一种能够有效清洁衣服上污垢并节省成本的洗涤剂组合。因此,我们可以使用多目标规划模型来解决这个问题。通过使用Matlab生成的约束方法和成本效益分析图,我们可以发现洗涤剂的最佳组合是洗涤剂1和洗涤剂3。当剩余污垢为0时,最低成本为667.72,选择19.13克洗涤剂1和150.96克洗涤剂3;当剩余污垢为原始污垢量的千分之一时,最低成本为667.05,选择19.11克洗涤剂1和150.81克洗涤剂3。
  根据问题四,我们面对的是由不同材料制成的衣服,每种衣服都有不同类型和数量的污垢,如表3所示。由于材料、颜色等方面的差异,有些衣服不能一起洗,如表4所示。因此,我们需要使用线性规划模型制定一个经济高效的清洁计划,以优化洗涤剂的选择和使用、洗衣机运行时间和温度设置,从而最大限度地降低清洁成本和资源消耗。我们将使用Python对表3和表4进行数据预处理和分析,以制定分类清洁计划。使用这些方法,我们可以设计出一个经济高效的清洁方案,最佳的清洁剂组合是清洁剂6、清洁剂7和清洁剂8,相应的成本为0.33元。

问题分析:

  问题一分析
  对于问题1:考虑到可用的污垢和水的数量,以及污垢在水中的溶解度随着洗涤时间的变化而变化,如何找到最佳的清洁方法。根据所提供的信息,污垢在水中的溶解度与洗涤次数成比例变化,最初为0.80,之后每次洗涤为前一次洗涤的一半。我们通过建立动态规划模型来解决清洁附着污垢的衣服的最佳清洁方式问题,同时讨论污垢溶解、初始污垢量和可用水对目标的影响。

  问题二分析
  对于问题2:该问题需要一个最节省时间的清洁计划,并分析清洁计划中的参数和初始污垢体积对最佳解决方案的影响。我们采用指数衰减模型和Python编程语言软件来选择最小的清洗次数,以确定最短的清洗时间。

  问题三分析
  对于问题3:根据表1和表2中的信息,我们可以选择最合适的洗涤剂来清洁每种类型的污垢。然后我们可以计算每个清洁方案的成本,包括洗涤剂和水费。接下来,我们比较不同清洁方案的成本,以找到节省成本最高的清洁解决方案。最后,我们可以制定一个清洁时间表,以确保衣服能够有效清洁,同时节省成本。

  问题四分析
  对于问题4:我们需要分析不同衣服的材质、颜色和污垢,并结合表3和表4中的信息。然后,在问题2下,制定一个具有成本效益的清洁计划,以确保不同的衣物方法有效且具有成本效益。这可能包括分别洗涤不同材料和颜色的衣服,以及选择合适的洗涤剂和洗涤程序。它还需要考虑在清洁过程中对衣服的保护,以避免损坏或褪色。

模型假设:

  1.每次洗涤后,残余污垢的溶解作为给定的减少函数而减少。
  2.理论上,可以进行无限制的洗涤,直到达到某种效果。
  3.假设使用的每种水都能达到其最大的洗涤效率,而不考虑水的回收。
  4.最终污垢残留量应为初始污垢量的千分之一。
  5.假设不同类型的污垢对不同清洁剂的反应是特定的,即某些清洁剂对某些类型的污垢具有更好的清洁效果。
  6.假设清洁过程中的环境条件(如温度、湿度)和操作条件(如清洁时间、机器类型)是恒定的,不会影响清洁效果。

模型的建立与求解整体论文缩略图

在这里插入图片描述
在这里插入图片描述

全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

程序代码:

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False # 计算污垢在水中的溶解度
def calculate_dissolution(a1, k):
ifk == 1: return a1
else: return 0.5 * calculate_dissolution(a1, k- 1)
# 计算不同清洗次数下的溶解度
def calculate_dissolution_for_cleans(cleans, a1): result = []
for c in cleans: result.append(calculate_dissolution(a1, c))
return result
# 分段函数
defpiecewise_function(x, a1): y = np.where(x < 2, a1, calculate_dissolution(a1, 2))
for i in range(2, 11): y = np.where(x == i, calculate_dissolution(a1, i), y)
return y
# 绘制曲线
defplot_curve(a1): cleans = np.arange(1, 11)
dissolutions = calculate_dissolution_for_cleans(cleans, a1) x = np.arange(1, 11, 0. 1)
y = piecewise_function(x, a1)
plt.plot(cleans, dissolutions, 'ro', label='清洗次数')
plt.plot(x, y, label=' plt.xlabel(' ')
plt
.ylabel(
'污垢溶解度')
plt.title(' plt.legend()
plt.show()
# 主程序
a1 = 0.80
plot_curve(a1)
import numpy as np
import matplotlib.pyplot as plt
def g(a k 1, x_k): return 0.5 * a_k_ 1
def calculate_dissolution(a_ 1, x, W): n = len(x)
a = [a_ 1]
for k in range(2, n+1):
a_k = g(a[k-2], x[k- 1])
a. append(a_k)
return a
def calculate_ cleaning_ effect(a , x ) :
E = np.prod(a)
return E
defplot_curve(a , x) :
plt.plot(x , a, 'b-' , label= 'Dissolution')
plt.xlabel('Water Usage')
plt.ylabel('Dissolution')
plt.title( 'Dissolution vs Water Usage')
plt. legend()
plt.show()
# Example usage
a_ 1 = 0.80
x = [0. 1, 0.2, 0.3, 0.4, 0.5]
W = 0.5
a = calculate_dissolution(a_ 1, x, W)
E = calculate_cleaning_effect(a , x)
plot_curve(a , x)
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams[ 'font.sans-serif'] = [ 'SimHei']
plt.rcParams[ ' axes. unicode_ minus' ] = False
# Define parametersfor theformula
ak = 0.5
t = 1
# Calculate the minimum number ofwashings n_min = np.ceil(np.log(1000) / (ak * t))
# Generate the time range
time = np.linspace(0, 10, 100)
# Calculate the curve value
curve = np.exp(-ak * n_min * time)
# Plot the curve plt.plot(time, curve)
plt. xlabel( 'Washing Time (Unit: Time Unit) ' )
plt.ylabel('Washing Frequency')
plt.title( 'Relationship between Washing Frequency and Time')
plt.legend([ 'Change of Washing Frequency over Time'])
plt.show()
import numpy as np
import matplotlib.pyplot as plt
def shortest_cleaning_time(soil, water_limit):
# 初始化数组
n = len(soil) + 1 # 增加一次不洗涤的情况
dp_time = np.zeros(n) + np.inf # 设置初始值为无穷大
dp_time[0] = 0 # 不洗涤的时间为0
dp_count = np.zeros(n) # 记录每次洗涤的次数
# 计算每次洗涤后的时间
for i in range(1 , n) :
forj in range(water_limit + 1):
ifj >= soil[i - 1]: # 有足够的水溶解污垢
dp_time[i] = min(dp_time[i], dp_time[i - 1] + 0.5) # 0.5 为每次洗涤增
加的
时 间
dp_count[i] = dp_count[i - 1] + 1 # 记录洗涤次数
break # 不够水则跳出循环,不洗涤该次
else:
dp_time[i] = dp_time[i - 1] + 0.5 # 默认情况下,洗涤时间是前一次洗
涤
时间的 0. 5 倍
dp_count[i] = dp_count[i - 1] # 不进行洗涤,洗涤次数不变
return dp_time, dp_count # 返回最节约时间的清洁计划和相应的洗涤次数
soil = np.array([1, 2, 3, 4, 5]) # 示例污垢量
water_limit = 10 # 示例可用水量
times, counts = shortest_ cleaning_time(soil, water_limit)
# 绘制散点图
plt.scatter(range(len(times)) , times, color= 'blue')
plt. scatter(range(len( counts)) , counts, color= 'red')
plt. xlabel( 'Wash Time' )
plt.ylabel( 'Time/Count')
plt.title( 'Shortest Cleaning Time Plan')
plt.show()
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1678512.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

zip压缩unzip解压缩、gzip和gunzip解压缩、tar压缩和解压缩

一、tar压缩和解压缩 tar [选项] 打包文件名 源文件或目录 选项含义-c创建新的归档文件-x从归档文件中提取文件-v显示详细信息-f指定归档文件的名称-z通过gzip进行压缩或解压缩-j通过bzip2进行压缩或解压缩-J通过xz进行压缩或解压缩-p保留原始文件的权限和属性–excludePATTE…

查看Linux服务器的硬盘占用情况

查看Linux服务器的硬盘占用情况 一、查看各分区的使用情况和磁盘挂载1、查看磁盘分区使用和磁盘挂载2、结果解释&#xff08;1&#xff09;列名解释&#xff08;2&#xff09;各系统解释 二、查看一个目录及其所有子目录中文件的总占用大小1、查看指定目录的总大小2、列出目录下…

2024/5/15 英语每日一段

Many pet owners are now turning to pet insurance policies to avoid higher vet bills should something bad happen unexpectedly. But Carlson said that preventive veterinary care—like vaccination, parasite control and weight management—is "the best way …

【REST2SQL】14 基于角色的数据权限设计与实现

【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 【REST2SQL】05 GO 操作 达梦 数据库 【REST2SQL】06 GO 跨包接口重构代码 【REST2SQL】07 GO 操作 Mysql 数据库 【RE…

Redis教程(二):Redis在Linux环境下的安装

Linux环境下安装&#xff1a; 下载地址&#xff1a;Downloads - Redis 安装步骤&#xff1a; 下载得到一个 tar.gz 压缩文件 上传到Linux的/opt/soft目录&#xff0c;使用以下命令解压 tar -zxvf redis-6.2.14.tar.gz Linux安装基本环境gcc&#xff0c;安装命令 yum insta…

安泰ATA-7015高压放大器在材料极化中的应用研究

材料极化是材料科学中一个重要的研究领域&#xff0c;它涉及到材料内部电荷和极化性质的调控和分析。高压放大器在材料极化研究中起着至关重要的作用&#xff0c;通过提供高压力和高电场条件&#xff0c;研究人员可以深入探讨材料的电子结构、相变行为以及许多其他关键性质。 材…

17.多线程

多线程 程序、进程、线程的概念 程序&#xff1a;是指令和数据的有序集合&#xff0c;是一个静态的概念。比如&#xff0c;在电脑中&#xff0c;打开某个软件&#xff0c;就是启动程序。 进程&#xff1a;是执行程序的一次执行过程&#xff0c;是一个动态的概念&#xff0c;…

javafx设置启动按钮运行项目

1.点击这里 2.执行图中4步操作&#xff0c;点击ok

OpenAI 重磅发布GPT 4o!可以视频聊天的AI?

OpenAI 重磅发布GPT 4o&#xff01; 前言 就在今日&#xff0c;OpenAI发布了ChatGPT-4o版本&#xff0c;技术主管 Mira Murati 在直播中表示GPT-4o对比之前版本速度更快&#xff0c;在文本、视频和音频方面的能力也都有所提高。值得注意的是它还可以让用户与 ChatGPT 进行视频聊…

Jmeter接口测试和Jmeter接口自动化测试

一、Jmeter 的使用步骤 打开Jmeter 安装包&#xff0c;进入\bin 中&#xff0c;找到"jmeter.bat", 点击打开即可。 在下图打开的Jmeter 页面中&#xff0c;右键“测试计划” -> “添加” -> "Threads(Users)" -> “线程组”&#xff0c; 建立线程…

DBeaver如何csv导入数据

简言之先要创建任务&#xff0c;任务还需要去执行&#xff0c;只有执行之后才是执行真的导入了 那个保存任务真的很误导人啊 1.首先点击你要被导入的表&#xff0c;右键选择导入数据然后选择直接点击下一步,这个地方需要修改格式&#xff0c;否则会乱码 如果你导入的没有标题…

IO系列(四) - RandomAccessFile 类解读

一、摘要 RandomAccessFile 类&#xff0c;也被称为随机访问文件类。 RandomAccessFile 可以说是 Java 体系中功能最为丰富的文件操作类&#xff0c;相比之前介绍的通过字节流或者字符流接口方式读写文件&#xff0c;RandomAccessFile 类可以跳转到文件的任意位置处进行读写数…

买了个彩票,哈哈哈哈哈。

买了个彩票-双色球&#xff0c;发现挺有意思的。 索性把双色球的所有期的中奖号码的数据都爬了下来&#xff0c;03至今&#xff0c;21年了。txt文本&#xff0c;6.5MB大小。 大家有啥好的建议&#xff0c;分析一下数据呢。

字节跳动在2024年春季火山引擎Force原动力大会上隆重推出了“豆包大模型”家族

此次大会以AI为主题&#xff0c;聚焦大模型的应用与发展&#xff0c;旨在引领AI技术的落地和推动各行各业的数字化转型。 字节跳动官网&#xff1a;https://www.bytedance.com/zh/ 豆包官网&#xff1a;https://www.doubao.com/chat/ 更多消息&#xff1a;https://heehel.co…

洗衣洗鞋店做小程序有什么优势?

互联网洗衣洗鞋小程序闪亮登场&#xff0c;想知道这款小程序有何魅力吗&#xff1f; 如今&#xff0c;众多商家纷纷推出预约上门洗鞋服务&#xff0c;&#x1f481;‍♀️并倾力打造洗鞋小程序&#xff0c;旨在拓展线上销售渠道。&#x1f31f;那么&#xff0c;这款洗鞋小程序究…

2025秋招Java还是c++?

一、我的编程经 说说我的编程经历&#xff0c;在C和Java之间我经历了几个阶段&#xff1a; 大学期间&#xff0c;我浅尝辄止地学习了一段时间的Java&#xff0c;但后来放弃了&#xff0c;开始学习C/C。本科毕业后&#xff0c;我选择攻读硕士学位&#xff0c;并一直专注于C的学…

3种深拷贝实现,你都知道吗?

目录&#xff1a; 1、JSON.parse 2、structuredClone 3、cloneDeep

冒险岛vcruntime140_1.dll无法继续执行代码要怎么处理?教你一键修复vcruntime140_1.dll

当你在玩着冒险岛的时候&#xff0c;突然弹出一个vcruntime140_1.dll无法继续执行代码&#xff0c;这时候你是不是一脸懵逼&#xff1f;不知道怎么去解决&#xff1f;其实不需要担心&#xff0c;这是一个小问题&#xff0c;vcruntime140_1.dll文件是一个非常常用的dll文件&…

企业架构系统之-IT系统建设如何做好技术选型

背景 近日有幸与行业同仁交流工作心得&#xff0c;在讨论中&#xff0c;他们提到一个平时工作当中我们都会遇到和经历的一个问题&#xff1a;作为架构师&#xff0c;在日常工作中应如何进行技术选型&#xff1f;面对众多框架和组件中&#xff0c;我们又应如何选择&#xff0c;…

【更新公告】AirtestIDE更新至1.2.17版本

本次更新为AirtestIDE、Airtest-Selenium库更新。 AirtestIDE更新至1.2.17版本&#xff0c;AirtestIDE内置库Airtest更新为1.3.3.1版本&#xff0c;Poco更新为1.0.94版本&#xff0c;主要支持了selenium4.0以上版本&#xff0c;ADB更换为41版本&#xff0c;Airtest新增点击和滑…