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…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...
uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
