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

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.rhkb.cn/news/329168.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu 20/22 安装 Jenkins

1. 使用 apt 命令安装 Java Jenkins 作为一个 Java 应用程序&#xff0c;要求 Java 8 及更高版本&#xff0c;检查系统上是否安装了 Java。 sudo apt install -y openjdk-17-jre-headless安装完成后&#xff0c;再次验证 Java 是否已安装 java --version2. 通过官方存储库安…

15:00面试,15:08出来,面试问的有点变态。。。。

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天…

第10章 数据聚合与分组运算

以下内容参考自https://github.com/iamseancheney/python_for_data_analysis_2nd_chinese_version/blob/master/%E7%AC%AC05%E7%AB%A0%20pandas%E5%85%A5%E9%97%A8.md 《利用Python进行数据分析第2版》 用以学习和记录。 对数据集进行分组并对各组应用一个函数&#xff08;无论…

Dubbo生态之dubbo功能

1.Dubbo生态功能的思考 dubbo具有哪些功能呢&#xff1f;我们要根据dubbo的架构和本质是用来干什么的来思考? 首先对于分布式微服务&#xff0c;假设我们有两个服务A和B&#xff0c;并且都是集群部署的。那么按照我们正常的流程应该是启动两个微服务项目&#xff08;启动时应该…

vscode添加代办相关插件,提高开发效率

这里写目录标题 前言插件添加添加TODO Highlight安装TODO Highlight在项目中自定义需要高亮显示的关键字 TODO Tree安装TODO Tree插件 单行注释快捷键 前言 在前端开发中&#xff0c;我们经常会遇到一些未完成、有问题或需要修复的部分&#xff0c;但又暂时未完成或未确定如何处…

C++初阶学习第十弹——探索STL奥秘(五)——深入讲解vector的迭代器失效问题

vector&#xff08;上&#xff09;&#xff1a;C初阶学习第八弹——探索STL奥秘&#xff08;三&#xff09;——深入刨析vector的使用-CSDN博客 vector&#xff08;中&#xff09;&#xff1a;C初阶学习第九弹——探索STL奥秘&#xff08;四&#xff09;——vector的深层挖掘和…

MYSQL 集群

1.集群目的:负载均衡 解决高并发 高可用HA 服务可用性 远程灾备 数据有效性 类型:M M-S M-S-S M-M M-M-S-S 原理:在主库把数据更改(DDL DML DCL&#xff09;记录到二进制日志中。 备库I/O线程将主库上的日志复制到自己的中继日志中。 备库SQL线程读取中继日志…

Mongodb介绍及springboot集成增删改查

文章目录 1. MongoDB相关概念1.1 业务应用场景1.2 MongoDB简介1.3 体系结构1.4 数据模型1.5 MongoDB的特点 2. docker安装mongodb3. springboot集成3.1 文件结构3.2 增删改查3.2.1 增加insert3.2.2 保存save3.2.3 更新update3.2.4 查询3.2.5 删除 1. MongoDB相关概念 1.1 业务…

【学习笔记】Windows GDI绘图(五)图形路径GraphicsPath详解(上)

文章目录 图形路径GraphicsPath填充模式FillMode构造函数GraphicsPath()GraphicsPath(FillMode)GraphicsPath(Point[],Byte[])和GraphicsPath(PointF[], Byte[])GraphicsPath(Point[], Byte[], FillMode)和GraphicsPath(PointF[], Byte[], FillMode)PathPointType 属性FillMode…

jsp连接数据库

1.打开命令框进入数据库 打开eclipse创建需要连接的项目 粘贴驱动程序 查看驱动器 使用sql的包 int代表个 conlm代表列名 <%page import"java.sql.ResultSet"%> <%page import"java.sql.Statement"%> <%page import"java.sql.Connect…

关于如何创建一个可配置的 SpringBoot Web 项目的全局异常处理

前情概要 这个问题其实困扰了我一周时间&#xff0c;一周都在 Google 上旅游&#xff0c;我要如何动态的设置 RestControllerAdvice 里面的 basePackages 以及 baseClasses 的值呢&#xff1f;经过一周的时间寻求无果之后打算决定放弃的我终于找到了一些关键的线索。 当然在此…

html5 笔记01

01 表单类型和属性 input的type属性 单行文本框: typetext 电子邮箱 : typeemail 地址路径 : type url 定义用于输入数字的字段: typenumber 手机号码: typetel 搜索框 : typesearch 定义颜色选择器 : typecolor 滑块控件 : typerange 定义日期 :typedate 定义输入时间的控件…

CR80清洁卡都能用在什么地方?

CR80清洁卡&#xff08;也被称为ISO 7810 ID-1清洁卡&#xff09;的规格确实使其在各种需要读取磁条或接触式智能卡的设备中都有广泛的用途。这些设备包括但不限于&#xff1a; ATM自动终端机&#xff1a;当ATM机的磁条读卡器出现故障或读卡不灵敏时&#xff0c;可以使用CR80清…

第三期【数据库主题文档上传激励活动】已开启!快来上传文档赢奖励

2023年9月、11月&#xff0c;墨天轮社区相继举办了第一期与第二期【数据库主题文档上传激励活动】&#xff0c;众多用户积极参与、上传了大量优质的数据库主题干货文档&#xff0c;在记录经验的同时也为其他从业者带来了参考帮助&#xff0c;这正实现了“乐知乐享、共同成长”的…

以及Spring中为什么会出现IOC容器?@Autowired和@Resource注解?

以及Spring中为什么会出现IOC容器&#xff1f;Autowired和Resource注解&#xff1f; IOC容器发展史 没有IOC容器之前 首先说一下在Spring之前&#xff0c;我们的程序里面是没有IOC容器的&#xff0c;这个时候我们如果想要得到一个事先已经定义的对象该怎么得到呢&#xff1f;…

STM32自己从零开始实操02:输入部分原理图

一、触摸按键 1.1指路 项目需求&#xff1a; 4个触摸按键&#xff0c;主控芯片 TTP224N-BSBN&#xff08;嘉立创&#xff0c;封装 TSSOP-16&#xff09;&#xff0c;接入到 STM32 的 PE0&#xff0c;PE1&#xff0c;PE2&#xff0c;PE3。 1.2走路 1.2.1数据手册重要信息提…

AI--构建检索增强生成 (RAG) 应用程序

LLM 所实现的最强大的应用之一是复杂的问答 (Q&A) 聊天机器人。这些应用程序可以回答有关特定源信息的问题。这些应用程序使用一种称为检索增强生成 (RAG) 的技术。 典型的 RAG 应用程序有两个主要组件 索引&#xff1a;从源中提取数据并对其进行索引的管道。这通常在线下…

CTFshow之文件上传web入门151关-161关解密。包教包会!!!!

这段时间一直在搞文件上传相关的知识&#xff0c;正好把ctf的题目做做写写给自字做个总结&#xff01; 不过有一个确定就是所有的测试全部是黑盒测试&#xff0c;无法从代码层面和大家解释&#xff0c;我找个时间把upload-labs靶场做一做给大家讲讲白盒的代码审计 一、实验准…

保研笔试复习——nju

文章目录 一、单选计算机网络计算机组成原理数字逻辑电路数据结构操作系统微机系统 多选题计算机网络计算机系统结构操作系统 免责声明&#xff1a;题目源自于网络&#xff0c;侵删。 就在今天2024-5-18&#xff0c;考的题下面的只有一道AVL的原题&#xff0c;其他都不是原题&a…

【C++初阶】--- C++入门(上)

目录 一、C的背景及简要介绍1.1 什么是C1.2 C发展史1.3 C的重要性 二、C关键字三、命名空间2.1 命名空间定义2.2 命名空间使用 四、C输入 & 输出 一、C的背景及简要介绍 1.1 什么是C C语言是结构化和模块化的语言&#xff0c;适合处理较小规模的程序。对于复杂的问题&…