2023年华数杯数学建模B题不透明制品最优配色方案设计解题全过程文档及程序
2023年华数杯全国大学生数学建模
B题 不透明制品最优配色方案设计
原题再现:
日常生活中五彩缤纷的不透明有色制品是由着色剂染色而成。因此,不透明制品的配色对其外观美观度和市场竞争力起着重要作用。然而,传统的人工配色存在一定的局限性,如主观性强、效率低下等。因此,研究如何通过计算机方法来实现不透明制品的配色具有重要意义。
光通过物体传播有吸收、反射和透射三种方式。对于不透明制品来说,大部分光线会被其表面吸收或反射。吸收和反射的光线在经过透明度等校正后按波长分解成不同的颜色成分,形成光谱图。该光谱图通常由400–700nm波段的各色光组成。为简化计算,最终配色后的颜色的反射率以20nm为间隔的光谱数据来表示。对于不透明材料而言,吸收系数K/散射系数S的比值与反射率R之间存在一定关系,具体请参考文献【1】《计算机配色理论及算法的研究》中的K-M光学模型。
基于光学模型得到的颜色参数,可应用于色差的计算。通常,使用色差(不超过1)来作为配色效果好坏的标准。色差计算方法参考文献【2】《基于CIELAB均匀颜色空间和聚类算法的混纺测色研究》中的CIELAB色彩空间的总色差计算方法。其中颜色参数L*(明度)、a*(红绿色度)和b*(黄蓝色度)计算中出现的三刺激值XYZ的计算方法如下:
不透明制品配色问题,就是基于光学模型,设计不透明制品的配色模型。相较于人工配色,节省大量人力、物力和财力,对减少能耗具有重要意义。针对某一不透明制品,已知红、黄、蓝3种着色剂在不同浓度不同波长的K/S值以及基底材料在不同波长下的K/S值,见附件2。其中,浓度=着色剂克重/基材重量。每个着色剂的吸收系数K/散射系数S的比值具有加和性,详见文献【1】《计算机配色理论及算法的研究》中的K-M单常数理论。现有10个目标样(二到三种着色剂混合制成)的R值,见附件3。结果展示请保留4位小数。请建立数学模型解决如下几个问题:
问题1:请分别计算附件2中三种着色剂在不同波长下K/S与浓度的关系,并将关系式与拟合系数填写在表格中。
问题2:请建立不透明制品配色的优化模型。在已知目标样的R值(附件3)的前提下,基于光谱三刺激值加权表(附件1)与着色剂K/S基础数据库(附件2),运用优化模型配出与目标样的色差最为接近的10个不同配方,要求色差小于1。
问题3:在问题2的基础上,考虑成本控制和批量配色,改进配色模型。对2kg 的基底材料进行配色,求出与目标样(附件3)之间色差最为接近的10个不同配方,要求色差小于1。色母粒单位克重价格见附件4。
问题4:在实际生产中,配色所需要的着色剂越少越好,基于此,在问题3的基础上,寻找附件3中前5个样本的最优的配色方案,要求每个样本配出5个不同的配方且色差小于1。提供的数据和资料:
1.附件1(光谱三刺激值加权表)
2.附件2(不同浓度不同波长的K/S值)
3.附件3(10个样品的R值)
4.附件4(染料价格)
整体求解过程概述(摘要)
日常生活中五彩缤纷的不透明有色制品是由着色剂染色而成。因此,不透明制品的配色对其外观美观度和市场竞争力起着重要作用。由于传统的人工配色存在主观性强、效率低下等局限性。因此,研究如何通过计算机方法来实现不透明制品的配色具有实际意义。
针对问题一,本文建立了一元线性回归模型。为解决该数据拟合问题,初步对红、黄、蓝三种着色剂在不同波长下K/S值与浓度的相关数据进行曲线拟合,发现近似满足一元线性关系。通过建立K/S值与浓度的一元线性回归模型,采用最小二乘法对该模型的参数进行求解,得出三种着色剂在不同波长下K/S值与浓度的关系式均为一元 一次方程,并且由相关的公式对拟合系数进行求解,得出拟合系数均>0.9,说明采用一元线性回归模型对三种着色剂在不同波长下K/S值与浓度的关系拟合效果良好。
针对问题二,本文建立了不透明制品配色的单目标优化模型。为了寻找与10种目标样本的色差最为接近的 10 个不同配方,首先通过蒙特卡洛算法随机生成各种着色剂浓度,其次确定色差小于1的配色方案,最后运用不透明制品配色的优化模型筛选出与目标样的色差最为接近的10个不同配方。通过分析结果的得出色差均在0.2左右,大部分配色方案的色差在 0.1 左右,并且在筛选过程中发现只添加红色着色剂4.6486%,即可达到色差为0.8389的效果,说明采用该优化模型选择的配色方案配色效果良好,则该不透明制品配色的单目标优化模型的可行性较强。
针对问题三,本文建立了考虑成本控制和批量配色的双目标优化模型。本题要求我们对2kg的基底材料制定合适的配色方案。我们基于问题二的单目标配色模型,通过考虑配方着色成本最小,以配方与现有样本的色差小于1以及生产制造过程中批量配色为约束条件,建立多目标优化模型,寻找最优配色方案。分析结果得出 10 个样本的不同配色方案的色差均在0.7以下,且成本均在11.5以下,则该模型满足着色最小的优化目标。最后经过灵敏度分析和稳定性分析,发现着色剂浓度对模型敏感,并且由于样本一的最佳浓度比为9:2:1,在最优解附近对三种着色剂浓度进行扰动,色差值波动较小,证明最优解的稳定性较好,反映了双目标优化模型的稳定性。
针对问题四,本文建立了考虑着色剂用量的多目标优化模型。本题要求基于问题三,考虑着色剂最少的条件下能够满足配色要求的最优配色方案。根据问题三的考虑成本控制和批量配色的多目标优化模型,增加着色剂最少为目标,建立了考虑着色剂的多目标优化模型,找到l满足着色剂最少的最优配色方案,其中前5个样本的配色方案中着色剂的种类最小值为2,样本1的最优配色方案选用红、黄两种着色剂;样本2、3 的最优配色方案选用红、蓝两种着色剂;样本4、5的最优配色方案选用黄、蓝两种着色剂。对问题三中的模型进行改进后,各样本5个不同的配方与样本的色差均小于1,成本值均小于7。
模型假设:
假设一:对各个样本进行配色时,基材的厚度满足d—>d+
假设二:三种着色剂的浓度范围为[0,5%]。
假设三:问题一中的拟合值与真实值契合。
假设四:本文所用数据来源真实可靠。
问题分析:
问题一的分析
问题一要求找出三种着色剂在不同波长下K/S值与浓度之间的关系。为解决此数据拟合类问题,我们通过对附件2中的数据进行整理,采用曲线拟合的统计方法来分析K/S 值与浓度之间的关系。根据不同着色剂的数据分布情况,建立线性回归模型,采用最小二乘法对模型的参数进行求解,并且通过相关公式求解拟合系数。
问题二的分析
问题二要求建立不透明制品配色的优化模型。根据附件所给数据,在已知目标样的 R 值的前提下,基于光谱三刺激值加权表与着色剂 K/S 基础数据库,运用优化模型配出与目标样的色差最为接近的 10 个不同配方,且色差小于 1。结合题目已给色差的计算方法,通过蒙特卡洛算法随机生成各种着色剂浓度,进而确定色差小于1的配色方案,运用不透明制品配色的优化模型选出与目标样的色差最为接近的 10 个不同配方。
问题三的分析
问题三要求通过考虑成本控制和批量配色,从而对2kg的基底材料制定合适的配色方案。基于问题二的不透明制品配色的优化模型,以配色方案与目标样的色差最为接近和着色成本最小为目标,配色方案与现有样本的色差小于1以及生产制造过程中批量配色为约束条件,建立考虑成本控制和批量配色的多目标优化模型,找到满足着色成本最小的最优配色方案。
问题四的分析
问题四要求我们基于问题三,考虑着色剂最少的条件下能够满足配色要求的最优配色方案。基于问题三的考虑成本控制和批量配色的多目标优化模型,增加着色剂最少为目标,着色剂最少可分为两种情况,即着色剂的种类使用最少和各种着色剂的用量最少,建立考虑着色剂的多目标优化模型,找到满足着色剂最少的最优配色方案。
模型的建立与求解整体论文缩略图
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可
部分程序代码:
clc;clear;
%% 数据导入以及矩阵初始化
R0 = importdata('YangBen.txt');
S = importdata('JiaQuan.txt');
O = importdata('K.txt');
P = importdata('b.txt');
JiC = importdata('JiCai.txt');
Esave = zeros(10,1);
Resave = zeros(10,1);
Yesave = zeros(10,1);
Busave = zeros(10,1);
%% 计算各个样本的L,a,b值
Xyz0 = 0.1 * (R0 * S) * 20; %离散积分计算
[n,m] = size(Xyz0);
for i = 1:n if(((Xyz0(i,1)/94.83) > 0.008856)&&((Xyz0(i,2)/100) > 0.008856)&&((Xyz0(i,3)/107.38) >
0.008856)) L0(i) = 116*((Xyz0(i,2)/100)^(1/3))-16; a0(i) = 500*(((Xyz0(i,1)/94.83)^(1/3))-((Xyz0(i,2)/100)^(1/3))); b0(i) = 200*(((Xyz0(i,2)/100)^(1/3))-((Xyz0(i,3)/107.38)^(1/3))); else L0(i) = 903.3*(Xyz0(i,2)/100); a0(i) = 3893.5*((Xyz0(i,1)/94.83)-(Xyz0(i,2)/100)); b0(i) = 1557.4*((Xyz0(i,2)/100)-(Xyz0(i,3)/107.38)); end
end
%% 通过蒙特卡洛模拟进行配方选择
for q = 1:2000000 %赋予三个着色剂范围内的随机浓度 Re = (5-0.05)*rand()+0.05; Ye = (5-0.05)*rand()+0.05; Bu = (5-0.05)*rand()+0.05; ReP(q) = Re; YeP(q) = Ye; BuP(q) = Bu; %用来观察单个着色剂能否满足条件 %Re = (5-0.05)*rand()+0.05; %Ye = 0; %Bu = 0; % %Re = 0;
%Ye = (5-0.05)*rand()+0.05; %Bu = 0; % %Re = 0; %Ye = 0 %Bu = (5-0.05)*rand()+0.05; % 得到各个波长下各个颜色的K/S值矩阵 ECKS(:,1) = Re * O(:,1); ECKS(:,2) = Ye * O(:,2); ECKS(:,3) = Bu * O(:,3); ECKS = ECKS+P; % 得到各个波长下的K/S值 KS = (ECKS(:,1)*Re + ECKS(:,2)*Ye + ECKS(:,3)*Bu)/100 + JiC; % 得到各个波长对应的R值 R = (1+KS)-(KS.*KS+2*KS).^(0.5); % 计算对应的L,a,b值 Xyz = 0.1 * (R' * S) * 20; if(((Xyz(1)/94.83) > 0.008856)&&((Xyz(2)/100) > 0.008856)&&((Xyz(3)/107.38) >
0.008856)) L = 116*((Xyz(2)/100)^(1/3))-16; a = 500*(((Xyz(1)/94.83)^(1/3))-((Xyz(2)/100)^(1/3))); b = 200*(((Xyz(2)/100)^(1/3))-((Xyz(3)/107.38)^(1/3))); else L = 903.3*(Xyz(2)/100); a = 3893.5*((Xyz(1)/94.83)-(Xyz(2)/100)); b = 1557.4*((Xyz(2)/100)-(Xyz(3)/107.38)); end % 色差计算 for v = 1:10 DeltaL = L - L0(v); DeltaA = a - a0(v); DeltaB = b - b0(v); DeltaE = (DeltaL^2+DeltaA^2+DeltaB^2)^(0.5); %进行条件判断并存储对应数据 if((DeltaE<1)&&(DeltaE>0.001)) Esave(v,end)=DeltaE; Esave(v,end+1)=0; Resave(v,end)=Re; Resave(v,end+1)=0; Yesave(v,end)=Ye; Yesave(v,end+1)=0; Busave(v,end)=Bu; Busave(v,end+1)=0; endend
end
%% 绘制浓度散点图
plot3(ReP,YeP,BuP);
grid on;
xlabel('红色着色剂浓度');
zlabel('蓝色着色剂浓度');
ylabel('黄色着色剂浓度');
%% (第二问)对结果进行筛选,找到各个样本色差最小的10个配方
for L = 1:10 %进行数据预处理 Ef = find(Esave(L,:)==0); [mf,nf] = size(Ef); for g = 1:nf Esave(L,Ef(g))=+inf; end [y,u]=sort(Esave(L,:)); %将色差按升序进行排序 for t = 1:10 %将对应的结果和配方进行存储 Eshow(L,t) = Esave(L,u(t)); Reshow(L,t) = Resave(L,u(t)); Yeshow(L,t) = Yesave(L,u(t)); Bushow(L,t) = Busave(L,u(t)); end
end
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可
相关文章:

2023年华数杯数学建模B题不透明制品最优配色方案设计解题全过程文档及程序
2023年华数杯全国大学生数学建模 B题 不透明制品最优配色方案设计 原题再现: 日常生活中五彩缤纷的不透明有色制品是由着色剂染色而成。因此,不透明制品的配色对其外观美观度和市场竞争力起着重要作用。然而,传统的人工配色存在一定的局限性…...
Mysql事务常见面试题 -- 事务的特性 ,并发事务问题 , undo_log和redo_log , 分布式事务
一. 事务的特性 ACID 原子性 --> 事务操作被视为一个整体 , 要么全部成功 , 要么全部失败一致性 --> 事务操作前后数据的变化是一致的隔离性 --> 事务的执行不受其他事务的影响持久性 --> 事务执行完毕会对数据永久保存 比如我们在转账的过程中 , A给B转账1000元…...

【数据库系列】Spring Boot如何配置Flyway的回调函数
Flyway 提供了回调机制,使您能够在特定的数据库迁移事件发生时执行自定义逻辑。通过实现 Flyway 的回调接口,可以在迁移前后执行操作,如记录日志、执行额外的 SQL 语句等。 1. 创建自定义回调类 要配置 Flyway 的回调函数,需要创…...

分布式推理框架 xDit
1. xDiT 简介 xDiT 是一个为大规模多 GPU 集群上的 Diffusion Transformers(DiTs)设计的可扩展推理引擎。它提供了一套高效的并行方法和 GPU 内核加速技术,以满足实时推理需求。 1.1 DiT 和 LLM DiT(Diffusion Transformers&am…...

DR.KNOWS:医疗图谱UMLS + 图神经网络 + LLM 模拟医生的诊断推理过程, 从症状出发找到可能的诊断结果
DR.KNOWS:医疗图谱UMLS 图神经网络 LLM 模拟医生的诊断推理过程, 从症状出发找到可能的诊断结果 理解要点解法拆解全流程分析图神经网络的训练论文大纲核心模式真实应用中,为什么说俩跳推理过于简化? 论文:Leveraging A Medical…...
缓存雪崩 详解
缓存雪崩详解 缓存雪崩是分布式系统中一种常见的问题,它指的是缓存中大量数据在同一时间失效,导致所有的请求都直接涌向数据库或后端服务,进而导致系统负载骤增,甚至引发系统宕机或崩溃。 1. 缓存雪崩的原因 缓存雪崩通常由以下…...
使用 Vite 创建 Vue3+TS 项目并整合 ElementPlus、Axios、Pinia、Less、Vue-router 等组件或插件
前言 记录一下使用 Vite 创建 Vue3TS 项目并整合 ElementPlus、Axios、Pinia、Less、Vue-router 等组件或插件。 一、使用 Vite 创建 Vue3TS 项目 1.新建一个 temp 文件夹 (1)在桌面新建一个 temp 文件夹,然后在 VS Code 中打开此文件夹&…...
Flink随笔 20241203 Flink重点内容
Flink 是一个强大的流处理框架,它的设计理念是高吞吐量、低延迟的流式计算。你提到的这些重点是 Flink 的核心组成部分,下面我将详细解析每一个方面。 1. 窗口(Window) 窗口是 Flink 流处理中一个非常重要的概念,主要…...

shell脚本实战
学习视频来自B站UP主泷羽sec,如涉及侵权马上删除文章。 笔记只是方便学习,以下内容只涉及学习内容,切莫逾越法律红线。 安全见闻,包含了各种网络安全,网络技术,旨在明白自己的渺小,知识的广博&a…...
【机器学习】分类任务: 二分类与多分类
二分类与多分类:概念与区别 二分类和多分类是分类任务的两种类型,区分的核心在于目标变量(label)的类别数: 二分类:目标变量 y 只有两个类别,通常记为 y∈{0,1} 或 y∈{−1,1}。 示例ÿ…...
FreeSWITCH mod_conference 的按键会控
又是一篇命题作文 mod_conference 官方文档: https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Modules/mod_conference_3965534/ 英文不好的可以看中文: http://www.freeswitch.org.cn/books/references/1.7-mod_conference.html…...

串口工作方式
串口工作方式 方式0方式0输出方式0输入 方式1方式1输出方式1输入 方式2或方式3输出输入 串口使用方法如何计算波特率串口初始化步骤串口回传实验模拟printf实验串口接收数据不丢失实验 方式0 方式 0 时,串行口为同步移位寄存器的输入输出方式。主要用于扩展并行输 入…...
统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现。以下是一些常见的方法和步骤: 一、通过命令行工具统计 查看Nginx访问日志: Nginx的访问日志通常默认存储在/var/log/nginx/access.log,但具体位置可能因安装和配置…...

Apache Airflow 快速入门教程
Apache Airflow已经成为Python生态系统中管道编排的事实上的库。与类似的解决方案相反,由于它的简单性和可扩展性,它已经获得了普及。在本文中,我将尝试概述它的主要概念,并让您清楚地了解何时以及如何使用它。 Airflow应用场景 …...

42 基于单片机的智能浇花系统
目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机,采样DHT11温湿度传感器检测温湿度,通过LCD1602显示 4*4按键矩阵可以设置温度湿度阈值,温度大于阈值则开启水泵,湿度大于阈值则开启风扇…...
乐橙云小程序插件接入HbuilderX
乐橙插件使用: 1.配置app.json文件,uniapp中在mainfest.json中配置 https://uniapp.dcloud.net.cn/collocation/manifest.html#mp-weixin ** 2、集成插件页面.json文件 ** uniapp在 pages.json 对应页面的 style -> usingComponents 引入组件&…...
VoCo-LLaMA: Towards Vision Compression with Large Language Models
视觉语言模型在各种多模态任务上取得了显著的成功,但经常受到有限上下文窗口和处理高分辨率图像输入和视频的高计算成本的瓶颈。视觉压缩可以通过减少视觉令牌数量避免该问题。先前方法使用额外模块压缩视觉令牌并强制LLM理解压缩的令牌。然而,LLM对视觉…...

Vue+vite 组件开发的环境准备
一.nodejs安装 进入Node.js 官网(Node.js — Run JavaScript Everywhere),点击下载。 双击打开,进行安装 双击打开后,点击 next(下一步),后面也是一直点击 next 无其他设置,直到 …...

基于社区发现的GraphRAG思路
GraphRAG出自2024年4月的论文《From Local to Global: A Graph RAG Approach to Query-Focused Summarization》,其代码也在2024年年中开源 。它在用图结构来完成RAG时,使用社区这个概念并基于社区摘要来回答一些概括性的问题。 Graph RAG流程如论文图1所…...
react学习记录
一、目录结构react优秀代码之react目录结构简洁之道React 作为一个库,不会决定你如何组织项目的结构。这是件好事,因为这样 - 掘金【React】项目的目录结构全面指南_react项目结构-CSDN博客 1、创建项目:开发文档 Getting Started | Create…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...

STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...

Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...

【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...

企业大模型服务合规指南:深度解析备案与登记制度
伴随AI技术的爆炸式发展,尤其是大模型(LLM)在各行各业的深度应用和整合,企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者,还是积极拥抱AI转型的传统企业,在面向公众…...