2024年数学建模比赛题目及解题代码

目录

一、引言

1. 1竞赛背景介绍

1.1.1数学建模竞赛概述

1.1.2生产过程决策问题在竞赛中的重要性

1.2 解题前准备

1.2.2 工具与资源准备

1.2.3 心态调整与策略规划

二、问题理解与分析

三、模型构建与求解

3.1 模型选择与设计

3.1.1 根据问题特性选择合适的数学模型类型

3.1.2 设计模型框架,定义变量、参数和方程

3.2 模型构建

3.2.1 构建目标函数,反映生产决策的优化目标

3.2.2 将所有约束条件转化为模型中的约束方程

3.2.3 检查模型的有效性和合理性

3.3 模型求解

3.3.1 选择合适的求解算法或工具

3.3.2 进行模型求解,获取初步结果

3.3.3 对结果进行初步分析,检查是否符合预期

四、结果验证与优化

4.1结果验证

4.1.1 实际情况或常识对比验证

4.1.2 分析模型假设的合理性

4.2模型优化

4.2.1 调整模型参数或假设

4.2.2 尝试不同的求解算法或模型结构

4.2.3 评估不同优化方案的优缺点

五、反思与提升

5.1解题过程反思

5.1.2分析团队合作与个人表现,识别不足之处

5.2知识与能力提升

5.2.1 总结所用到的数学建模知识和方法

5.2.2 思考如何将这些知识和方法应用到其他领域或问题中

参考文献

六、解题思路

问题1:

解题思路:

方法:

问题2:生产过程决策

解题思路:

方法:

问题3:

解题思路:

方法:

问题4:考虑抽样误差的决策

解题思路:

方法:

通用步骤

七、解题代码

第一题:

第二题:

第三题:

结语:


一、引言

1. 1竞赛背景介绍

1.1.1数学建模竞赛概述

数学建模竞赛,作为一项集知识性、创新性与实践性于一体的国际性赛事,旨在培养学生运用数学理论与方法解决实际问题的能力。它要求参赛者针对现实生活中的复杂问题,通过深入的分析、抽象与建模,最终提出科学合理的解决方案。数学建模竞赛不仅考验了学生的数学基础,更重要的是锻炼了他们的逻辑思维能力、团队合作精神以及创新能力。在这个过程中,学生需要将抽象的数学理论与具体的应用场景相结合,创造出既有理论深度又具实用价值的模型。

在数学建模竞赛中,问题类型多样,涵盖自然科学、社会科学、工程技术等多个领域。其中,生产过程中的决策问题因其贴近实际、复杂多变而备受关注。这类问题往往涉及到资源分配、生产调度、成本控制等多个方面,要求参赛者能够全面把握问题的核心,准确识别关键变量,并设计出高效、可靠的数学模型进行求解。

1.1.2生产过程决策问题在竞赛中的重要性

生产过程决策问题在数学建模竞赛中占据举足轻重的地位。首先,从现实意义上看,生产过程是企业运营的核心环节,其决策质量直接关系到企业的生产效率、成本控制和市场竞争能力。因此,研究生产过程决策问题不仅有助于提升企业自身的竞争力,还能为整个行业乃至社会的可持续发展贡献力量。

从竞赛难度和挑战性来看,生产过程决策问题往往涉及多个变量和约束条件,需要参赛者具备深厚的数学功底、敏锐的问题洞察力和创新的建模思路。这类问题的解决不仅考验了学生的数学建模能力,还促进了他们在交叉学科领域的知识融合与创新。

从人才培养的角度来看,通过参与生产过程决策问题的建模竞赛,学生可以更好地将所学的数学理论知识与实际应用相结合,提升解决实际问题的能力。同时,这种跨学科的实践经历也有助于拓宽学生的视野,增强他们的创新精神和团队协作能力。因此,生产过程决策问题在数学建模竞赛中具有重要的教育意义和实际应用价值。

1.2 解题前准备

1.2.1 团队组建与角色分配 

 

在解决生产过程中的决策问题时,一个协作默契、优势互补的团队是成功的关键。因此,在解题前,首要任务是组建一个高效的团队,并根据成员的专业背景和技能特长进行合理的角色分配。团队中应有负责问题分析与抽象的“分析师”,有擅长数学建模与算法设计的“建模师”,还有能够熟练运用软件进行计算与仿真的“程序员”。通过明确各成员的角色定位,可以确保团队在解题过程中各司其职,协同作战,共同攻克难题。

1.2.2 工具与资源准备

工具与资源的准备也是解题前不可或缺的一环。针对生产过程中的决策问题,可能需要使用到专业的数学建模软件(如MATLAB、Lingo、Python及其相关库)来构建和求解模型。此外,还需要收集相关的文献资料、数据资源和行业报告,以便深入了解问题背景、行业现状和市场需求。这些工具和资源的准备将为后续的解题工作提供有力的支持,确保解题过程的顺利进行。

1.2.3 心态调整与策略规划

在解题前,良好的心态和明确的策略规划同样重要。面对复杂多变的生产过程决策问题,参赛者需要保持冷静、自信的心态,克服畏难情绪和急躁心理。同时,还需要根据问题的特点和团队的优势,制定出一套切实可行的解题策略。这包括明确解题目标、分解问题步骤、确定时间节点、预留调整空间等。通过合理的策略规划,可以确保团队在解题过程中有条不紊地推进工作,提高解题效率和质量。

 

二、问题理解与分析

企业将两个零配件装配成成品。在装配的成品中,只要其中一个零配件不合格,则成品一 定不合格;如果两个零配件均合格,装配出的成品也不一定合格。对于不合格成品,企业可 以选择报废,或者对其进行拆解,拆解过程不会对零配件造成损坏,但需要花费拆解费用。 请建立数学模型,解决以下问题:

问题 1 供应商声称一批零配件(零配件 1 或零配件 2)的次品率不会超过某个标称值。 企业准备采用抽样检测方法决定是否接收从供应商购买的这批零配件,检测费用由企业自行 承担。请为企业设计检测次数尽可能少的抽样检测方案。 如果标称值为 10%,根据你们的抽样检测方案,针对以下两种情形,分别给出具体结果:

(1) 在 95%的信度下认定零配件次品率超过标称值,则拒收这批零配件;

(2) 在 90%的信度下认定零配件次品率不超过标称值,则接收这批零配件。

问题 2 已知两种零配件和成品次品率,请为企业生产过程的各个阶段作出决策:

(1) 对零配件(零配件 1 和/或零配件 2)是否进行检测,如果对某种零配件不检测,这

种零配件将直接进入到装配环节;否则将检测出的不合格零配件丢弃;

(2) 对装配好的每一件成品是否进行检测,如果不检测,装配后的成品直接进入到市场; 否则只有检测合格的成品进入到市场;

(3) 对检测出的不合格成品是否进行拆解,如果不拆解,直接将不合格成品丢弃;否则 对拆解后的零配件,重复步骤(1)和步骤(2);

(4) 对用户购买的不合格品,企业将无条件予以调换,并产生一定的调换损失(如物流 成本、企业信誉等)。对退回的不合格品,重复步骤(3)。 请根据你们所做的决策,对表 1 中的情形给出具体的决策方案,并给出决策的依据及相 应的指标结果。

1 企业在生产中遇到的情况(问题 2

三、模型构建与求解

3.1 模型选择与设计

3.1.1 根据问题特性选择合适的数学模型类型

针对生产过程中的决策问题,本次选择了混合整数线性规划(Mixed Integer Linear Programming, MILP)模型。这类模型适用于解决既包含连续变量又包含整数或二进制变量的优化问题,特别适用于决策过程中需要做出是否测试(二元决策)以及成本收益计算(连续变量)的场景。在本问题中,本次需要确定是否对零配件和装配过程进行测试,以及是否拆解有缺陷的产品,这些都是典型的二元决策问题;同时,本次还需要计算各种成本(如购买成本、测试成本、拆解成本等)和收入,这些则是连续变量的优化问题。因此,MILP模型是解决此类问题的理想选择。

3.1.2 设计模型框架,定义变量、参数和方程

在模型框架设计中,本次首先定义了决策变量(test_part1, test_part2, test_assembly, disassemble),它们都是二进制变量,用于表示是否执行相应的测试或拆解操作。接着,本次定义了多个参数(如缺陷率、成本、市场价格、损失等),这些参数在模型中作为已知常数,用于计算成本和收入。然后,本次根据问题描述构建了目标函数,即最大化净利润,它是总收入减去总成本的差。最后,本次根据业务逻辑和实际情况,设置了两个关键的约束条件:一是至少测试一个零配件,二是当且仅当装配测试发现缺陷时才进行拆解。

3.2 模型构建

3.2.1 构建目标函数,反映生产决策的优化目标

目标函数是模型构建的核心,它直接反映了生产决策的优化目标。在本问题中,本次的目标是最大化净利润,即总收入减去总成本。总收入与产品的市场价格、销售数量和装配测试的结果有关;而总成本则包括零配件和装配的购买成本、测试成本、拆解成本、替换损失以及声誉损失等多个部分。通过将这些因素综合考虑,本次构建了目标函数,用于指导求解过程。

3.2.2 将所有约束条件转化为模型中的约束方程

在构建模型时,本次需要确保所有决策都符合业务逻辑和实际情况。因此,本次将问题中的约束条件转化为模型中的约束方程。在本问题中,本次设置了两个关键的约束条件:一是至少测试一个零配件(以确保产品质量),二是当且仅当装配测试发现缺陷时才进行拆解(以避免不必要的拆解成本)。通过将这两个条件转化为数学表达式,本次得到了两个约束方程,它们限制了决策变量的取值范围,确保了求解结果的合理性和可行性。

3.2.3 检查模型的有效性和合理性

在构建完模型后,本次需要对其进行有效性和合理性的检查。这包括检查模型的逻辑是否正确、参数是否合理、约束条件是否完整以及目标函数是否能够准确反映优化目标等方面。通过反复检查和验证,本次确保了模型的有效性和合理性,为后续的求解工作打下了坚实的基础。

3.3 模型求解

3.3.1 选择合适的求解算法或工具

在模型求解阶段,本次选择了PuLP作为求解工具。PuLP是一个开源的线性规划库,它提供了丰富的接口和功能来构建和求解线性规划、整数规划以及混合整数线性规划等问题。通过PuLP库,本次可以方便地定义变量、参数、目标函数和约束条件,并调用求解器进行求解。在本问题中,本次使用了PuLP默认的求解器来求解模型。

3.3.2 进行模型求解,获取初步结果

在确定了求解算法和工具后,本次进行了模型求解。通过调用PuLP库中的solve()函数,本次获得了模型的初步解。这些解包括决策变量的取值(是否测试、是否拆解等)以及目标函数的值(净利润)。这些结果为本次后续的分析和决策提供了重要的参考依据。

3.3.3 对结果进行初步分析,检查是否符合预期

在获得初步结果后,本次对其进行了初步的分析和检查。首先,本次检查了决策变量的取值是否符合业务逻辑和实际情况;其次,本次计算了目标函数的值(净利润),并与预期进行了比较;最后,本次还分析了各个成本项和收入项对净利润的影响程度。通过这些分析和检查,本次验证了模型的有效性和准确性,并为后续的决策优化提供了有益的指导。

四、结果验证与优化

4.1结果验证

4.1.1 实际情况或常识对比验证

在结果验证阶段,本次首先需要将模型结果与实际情况或行业常识进行对比。例如,如果模型建议在所有阶段都进行测试,但实际上某些测试成本过高且效果不明显,这可能不符合行业最佳实践。

测试决策:如果模型输出显示所有部件和装配都应测试,本次需要考虑这是否符合经济性和实际可行性。例如,如果某些部件的缺陷率极低且测试成本高昂,那么在实际中可能更倾向于不进行测试。

拆解决策:对于模型输出的拆解决策,本次需要评估这一决策是否能有效减少替换损失和声誉损失。如果拆解成本过高,而替换损失和声誉损失相对较小,那么拆解可能不是最优选择。

成本效益:比较模型计算出的总成本和总收入,与常识或行业标准进行比较,确保模型的预测在合理范围内。

4.1.2 分析模型假设的合理性

本模型的假设包括:

二元决策:假设每个测试和拆解决策都是二元的(测试或不测试,拆解或不拆解),这在现实中可能是合理的,但也忽略了可能存在的部分测试或拆解的情况。

成本固定:假设所有成本都是固定的,没有考虑规模经济或批量折扣。

缺陷率独立:假设不同部件和装配的缺陷率独立,但实际上可能存在相关性。

这些假设的合理性将直接影响模型结果的准确性。例如,如果测试成本存在显著的规模经济,那么模型可能低估了测试的经济性。同样,如果部件之间的缺陷率存在强相关性,那么模型可能未能充分捕捉到这种依赖关系。

4.2模型优化

4.2.1 调整模型参数或假设

基于验证结果,本次可以调整模型的参数或假设以改进模型。例如:

考虑测试成本的规模经济:如果测试成本随测试数量的增加而降低,本次可以在模型中引入一个递减的测试成本函数。

引入多阶段测试:将测试细分为多个阶段,每个阶段有不同的测试成本和准确性,以更精确地反映现实情况。

考虑缺陷率的相关性:使用统计方法估计部件之间缺陷率的相关性,并在模型中引入这些相关性。

4.2.2 尝试不同的求解算法或模型结构

为了改进结果,本次可以尝试使用不同的求解算法或模型结构:

使用混合整数线性规划(MILP)求解器:如果当前使用的求解器在求解大规模问题时效率较低,可以尝试使用其他高效的MILP求解器。

引入随机优化:如果某些参数(如缺陷率)存在不确定性,可以使用随机优化方法来考虑这些不确定性对决策的影响。

采用机器学习模型:如果数据量足够大,可以使用机器学习模型来预测成本和收入,并基于预测结果做出决策。

4.2.3 评估不同优化方案的优缺点

在评估不同优化方案时,本次需要考虑每个方案的优缺点:

引入规模经济的优点:能更准确地反映现实情况,提高模型的预测精度。缺点是需要额外的数据来估计规模经济参数。

多阶段测试的优点:提供了更灵活的测试策略,可能减少总成本。缺点是增加了模型的复杂性。

随机优化的优点:能够处理不确定性,提高决策的鲁棒性。缺点是计算量大,可能需要高级的计算资源。

综合考虑各种因素后,本次可以选择最适合当前情境的优化方案,并对模型进行相应的调整和改进。

五、反思与提升

5.1解题过程反思

5.1.1回顾解题过程中的难点与收获

样本量计算和临界值确定:在计算样本量和临界值时,需要正确理解和应用正态分布的分位数函数(ppf)以及误差估计的公式。这一步骤需要精确的数学推导和对统计学的深入理解。

线性规划建模:在定义solve_decision_problem函数时,如何将实际问题抽象成数学模型,特别是如何处理二进制变量和约束条件,是一个挑战。需要确保所有成本和收入都被准确纳入模型,并且逻辑上无误。

参数调整和敏感性分析:在实际应用中,参数的微小变化可能导致结果的大幅波动。如何调整参数以反映不同的生产环境和市场条件,以及进行敏感性分析来评估这些因素对最终决策的影响,是进一步研究的重点。

增强了统计学知识:通过计算样本量和临界值,加深了对正态分布、置信区间和误差估计的理解。

掌握了线性规划的应用:成功将实际的生产决策问题转化为线性规划问题,并通过求解得到了最优的生产和测试策略。

提升了编程能力:在Python中使用SciPy和PuLP库,实现了从数据处理到模型求解的全过程,提高了编程和问题解决的能力。

5.1.2分析团队合作与个人表现,识别不足之处

团队合作:

在此过程中,如果是一个团队项目,可能需要更加紧密的合作和沟通,特别是在定义问题、设计模型和验证结果时。

团队成员间的分工和协作需要进一步明确,以确保每个部分都能得到有效处理。

个人表现:

在理解和应用统计学原理时,可能会遇到一些困难,需要更多的学习和实践。

在线性规划建模过程中,对约束条件的定义和逻辑关系需要更加严谨和细致,以避免逻辑错误。

5.2知识与能力提升

5.2.1 总结所用到的数学建模知识和方法

统计学知识:利用正态分布的分位数函数(ppf)计算置信区间,掌握了误差估计的方法。

线性规划:通过定义目标函数、约束条件和变量,将实际问题转化为线性规划模型,并使用PuLP库进行求解。

编程技能:在Python中使用了SciPy和PuLP库进行数据处理和模型求解,提高了编程和算法实现的能力。

5.2.2 思考如何将这些知识和方法应用到其他领域或问题中

供应链管理:可以将这些知识和方法应用于供应链优化中,如库存管理、物流规划等。

金融风险管理:在风险评估和投资组合优化中,可以利用统计学原理进行置信区间估计和误差分析。

资源分配问题:在资源有限的情况下,如何合理分配资源以达到最大效益,可以通过线性规划等优化方法来解决。

参考文献

[1]田永丽. 高中生数学建模能力的影响因素及提升对策研究[D]. 贵州师范大学, 2020. DOI:10.27048/d.cnki.ggzsu.2020.000560.

[2]陈玲玲. 不确定环境下供应链计划建模与优化研究[D]. 东北大学, 2012.

[3]李强,刘克辉,石红红. 基于多智能体的产业演进仿真建模 [J]. 统计与决策, 2012, (02): 56-59. DOI:10.13546/j.cnki.tjyjc.2012.02.030.

[4]茅娴莘. 基于Witness仿真的TiW蚀刻机台产能改善研究[D]. 上海交通大学, 2011.

[5]谢毅. 基于独立队列的业务过程调度优化关键技术研究[D]. 浙江大学, 2011.

[6]左龙江. 供应链管理环境下的生产能力规划原理及方法研究[D]. 四川大学, 2006.

[7]梁田甜. 钢铁企业轨梁生产线数字建模与仿真研究[D]. 重庆大学, 2006.

[8]吴元春. 乙醛生产过程优化 [J]. 南京化工大学学报(自然科学版), 2001, (04): 47-49.

、解题思路

问题1:

抽样检测方案设计

目标:确定最少的抽样数量,以决定是否接收供应商的零配件。

解题思路:

首先,质量控制与决策模型可以用于零配件的抽样检测问题。基于零配件的次品率和信度要求,可以通过泊松分布或二项分布设计抽样方案。

假设零配件的次品率为p=10%p = 10\%(标称值),设定置信度为 95% 和 90%。我们可以使用如下公式确定最小抽样量

方法:

使用统计学公式或软件工具(如Python的SciPy库)来确定样本量和临界值。

问题2:生产过程决策

目标:为生产过程的各个阶段制定最优决策。

解题思路:

定义决策变量:是否检测零配件、是否检测成品、是否拆解不合格成品。

成本效益分析:计算每个决策的成本和收益。

建立优化模型:使用线性规划来最小化总成本或最大化利润。

方法:

使用pulp库构建和求解线性规划模型。

问题3:

多工序多零配件生产决策

目标:扩展问题2的模型,考虑多道工序和多个零配件。

解题思路:

扩展决策变量:为每个零配件和半成品添加检测和拆解的决策变量。

成本效益分析:计算每个决策的成本和收益,包括半成品和成品的次品率。

建立优化模型:使用线性规划来最小化总成本或最大化利润。

方法:

使用pulp库构建和求解线性规划模型,考虑多工序和多个零配件。

问题4:考虑抽样误差的决策

目标:重新评估问题2和问题3中的决策,考虑抽样误差。

解题思路:

模拟抽样误差:使用统计方法模拟抽样误差对次品率的影响。

重新计算决策:基于模拟的次品率重新计算最优决策。

敏感性分析:分析决策对抽样误差的敏感性。

方法:

使用蒙特卡洛模拟来模拟抽样误差,并重新评估问题2和问题3的决策。

 

通用步骤

数据收集:收集所有相关的成本、价格和次品率数据。

模型构建:根据问题要求构建数学模型。

模型求解:使用适当的算法或软件工具求解模型。

结果分析:分析模型结果,确定最优决策。

报告撰写:撰写详细的解决方案报告,包括决策方案和决策依据。

、解题代码

第一题:

这段Python代码用于计算在给定置信度下的抽样检测方案,特别是确定所需的最小样本量和临界次品率。这些计算对于质量控制和抽样检验非常重要,可以帮助企业决定是否接受供应商提供的零配件。以下是代码的详细解释:

from scipy.stats import norm

这行代码从`scipy.stats`模块导入`norm`,它提供了正态分布相关的函数,包括计算正态分布的分位数。

# 参数设置
p0 = 0.10  # 标称次品率
confidence_95 = 0.95
confidence_90 = 0.90
e = 0.05  # 抽样误差

- `p0`: 标称次品率,即供应商声称的次品率,这里是10%。

- `confidence_95` 和 `confidence_90`: 分别是95%和90%置信度,用于计算所需的样本量和临界值。

- `e`: 抽样误差,即允许的误差范围,这里是5%。

# 置信度对应的Z值
z_95 = norm.ppf(1 - (1 - confidence_95) / 2)
z_90 = norm.ppf(1 - (1 - confidence_90) / 2)

- `norm.ppf`: 这是正态分布的百分点函数,用于计算给定置信度下的Z值(分位数)。

- `z_95` 和 `z_90`: 分别是95%和90%置信度下的Z值。

 

# 计算样本量
n_95 = (z_95 * ((p0 * (1 - p0)) ** 0.5)) ** 2 / e ** 2
n_90 = (z_90 * ((p0 * (1 - p0)) ** 0.5)) ** 2 / e ** 2print(f"Sample size for 95% confidence level: {n_95:.2f}")
print(f"Sample size for 90% confidence level: {n_90:.2f}")

- 这些公式用于计算在给定置信度和误差范围内所需的最小样本量。

- `(p0 * (1 - p0)) ** 0.5`: 这是二项分布的标准差,用于计算样本量。

- `n_95` 和 `n_90`: 分别是95%和90%置信度下的样本量。

- 这些行代码打印出在95%和90%置信度下所需的样本量。

# 计算临界值
critical_value_95 = p0 + z_95 * (e / ((p0 * (1 - p0)) ** 0.5))
critical_value_90 = p0 + z_90 * (e / ((p0 * (1 - p0)) ** 0.5))print(f"Critical value for 95% confidence level: {critical_value_95:.4f}")
print(f"Critical value for 90% confidence level: {critical_value_90:.4f}")

- 这些公式用于计算在给定置信度下的临界次品率。

- `critical_value_95` 和 `critical_value_90`: 分别是95%和90%置信度下的临界值。

- 这些行代码打印出在95%和90%置信度下的临界次品率。

这段代码通过计算样本量和临界值,帮助企业决定在给定的置信度下,如何通过抽样检测来接受或拒绝供应商提供的零配件。

以下是完整版的代码:

大家如果感兴趣的话可以自己运行一下。

from scipy.stats import norm# 参数设置
p0 = 0.10  # 标称次品率
confidence_95 = 0.95
confidence_90 = 0.90
e = 0.05  # 抽样误差# 置信度对应的Z值
z_95 = norm.ppf(1 - (1 - confidence_95) / 2)
z_90 = norm.ppf(1 - (1 - confidence_90) / 2)# 计算样本量
n_95 = (z_95 * ((p0 * (1 - p0)) ** 0.5)) ** 2 / e ** 2
n_90 = (z_90 * ((p0 * (1 - p0)) ** 0.5)) ** 2 / e ** 2print(f"Sample size for 95% confidence level: {n_95:.2f}")
print(f"Sample size for 90% confidence level: {n_90:.2f}")# 计算临界值
critical_value_95 = p0 + z_95 * (e / ((p0 * (1 - p0)) ** 0.5))
critical_value_90 = p0 + z_90 * (e / ((p0 * (1 - p0)) ** 0.5))print(f"Critical value for 95% confidence level: {critical_value_95:.4f}")
print(f"Critical value for 90% confidence level: {critical_value_90:.4f}")

第二题:

这段代码是一个使用Python编写的线性规划模型,用于解决一个生产决策问题。它使用了`pulp`库,这是一个流行的线性规划库,可以用来定义问题、决策变量、目标函数和约束条件。以下是代码的详细解释:

import pulp

这行代码导入了`pulp`库,它是一个用于线性规划的Python库。

def solve_decision_problem(part1_defect_rate, part2_defect_rate, assembly_defect_rate,part1_cost, part2_cost, assembly_cost,test_cost_part1, test_cost_part2, test_cost_assembly,market_price, replacement_loss, disassembly_cost, reputation_loss):

这行代码定义了一个名为`solve_decision_problem`的函数,它接受一系列参数,这些参数代表生产过程中的各种成本、价格、次品率等。

    prob = pulp.LpProblem("Production_Decision", pulp.LpMaximize)  # 改为最大化问题

这行代码创建了一个线性规划问题对象`prob`,命名为"Production_Decision"。问题的目标是最大化(`pulp.LpMaximize`),这意味着我们的目标是最大化利润。

    test_part1 = pulp.LpVariable("test_part1", cat='Binary')test_part2 = pulp.LpVariable("test_part2", cat='Binary')test_assembly = pulp.LpVariable("test_assembly", cat='Binary')disassemble = pulp.LpVariable("disassemble", cat='Binary')

这些行定义了四个决策变量,它们是二进制变量(0或1),用于表示是否执行特定的操作(例如测试零配件1、测试零配件2、测试装配成品、拆解不合格成品)。

    # 成本计算total_cost = (part1_cost * (1 - test_part1) * part1_defect_rate +# 零配件1的购买成本(未测试且有缺陷时)part2_cost * (1 - test_part2) * part2_defect_rate +#零配件2的购买成本(未测试且有缺陷时)assembly_cost * (1 - test_assembly) * assembly_defect_rate +#装配成本(未测试且有缺陷时)test_cost_part1 * test_part1 +#零配件1的测试成本test_cost_part2 * test_part2 +#零配件2的测试成本test_cost_assembly * test_assembly +#装配的测试成本replacement_loss * (1 - disassemble) * assembly_defect_rate +# 替换损失(未拆解且有缺陷时)disassembly_cost * disassemble * assembly_defect_rate +# 拆解成本(拆解且有缺陷时reputation_loss * test_assembly * assembly_defect_rate# 由于装配缺陷导致的声誉损失)

这段代码计算了总成本,包括购买成本、检测成本、装配成本、拆解费用和声誉损失。每个成本项都乘以相应的决策变量,以确定在特定决策下的成本。

    # 收入计算total_revenue = market_price * (1 - assembly_defect_rate) * (1 - test_assembly)

这行代码计算了总收入,基于市场销售价格和最终产品的合格数量。

# 目标函数:最大化净利润prob += total_revenue - total_cost

这行代码设置了目标函数,即最大化总收入减去总成本的差值,也就是最大化利润。

    prob += test_part1 + test_part2 >= 1, "At_least_one_part_tested"prob += disassemble >= test_assembly * assembly_defect_rate, "Disassemble_if_defective"

这些行定义了模型的约束条件,确保至少有一个零配件被测试,并且如果有缺陷的成品被测试出来,则必须拆解。

prob.solve()print("Status:", pulp.LpStatus[prob.status])print("Should test Part 1? ", "Yes" if test_part1.varValue > 0.5 else "No")print("Should test Part 2? ", "Yes" if test_part2.varValue > 0.5 else "No")print("Should test Assembly? ", "Yes" if test_assembly.varValue > 0.5 else "No")print("Should disassemble defective products? ", "Yes" if disassemble.varValue > 0.5 else "No")print("Total Revenue: ", pulp.value(total_revenue))print("Total Cost: ", pulp.value(total_cost))print("Net Profit: ", pulp.value(total_revenue - total_cost))solve_decision_problem(0.125, 0.1416, 0.125, 4, 18, 6, 1.8, 2.33, 2.66, 56, 15.33, 5, 10)

调用`pulp`的求解器来求解线性规划问题。

打印求解状态和每个决策变量的结果,告诉我们是否应该执行特定的操作,以及总收入、总成本和净利润的数值。

打印每个决策变量的结果,告诉我们是否应该测试每个零配件。

打印总收入、总成本和净利润的数值。

这行代码调用`solve_decision_problem`函数,并传入具体的参数值来运行模型。

这个模型是一个完整的线性规划模型,用于帮助企业在生产过程中做出最优的决策。

以下是完整的代码:

感兴趣的小伙伴可以自己去运行一下。

import pulpdef solve_decision_problem(part1_defect_rate, part2_defect_rate, assembly_defect_rate,part1_cost, part2_cost, assembly_cost,test_cost_part1, test_cost_part2, test_cost_assembly,market_price, replacement_loss, disassembly_cost, reputation_loss):prob = pulp.LpProblem("Production_Decision", pulp.LpMaximize)  # 改为最大化问题test_part1 = pulp.LpVariable("test_part1", cat='Binary')test_part2 = pulp.LpVariable("test_part2", cat='Binary')test_assembly = pulp.LpVariable("test_assembly", cat='Binary')disassemble = pulp.LpVariable("disassemble", cat='Binary')# 成本计算total_cost = (part1_cost * (1 - test_part1) * part1_defect_rate +# 零配件1的购买成本(未测试且有缺陷时)part2_cost * (1 - test_part2) * part2_defect_rate +#零配件2的购买成本(未测试且有缺陷时)assembly_cost * (1 - test_assembly) * assembly_defect_rate +#装配成本(未测试且有缺陷时)test_cost_part1 * test_part1 +#零配件1的测试成本test_cost_part2 * test_part2 +#零配件2的测试成本test_cost_assembly * test_assembly +#装配的测试成本replacement_loss * (1 - disassemble) * assembly_defect_rate +# 替换损失(未拆解且有缺陷时)disassembly_cost * disassemble * assembly_defect_rate +# 拆解成本(拆解且有缺陷时reputation_loss * test_assembly * assembly_defect_rate# 由于装配缺陷导致的声誉损失)# 收入计算total_revenue = market_price * (1 - assembly_defect_rate) * (1 - test_assembly)# 目标函数:最大化净利润prob += total_revenue - total_costprob += test_part1 + test_part2 >= 1, "At_least_one_part_tested"prob += disassemble >= test_assembly * assembly_defect_rate, "Disassemble_if_defective"prob.solve()print("Status:", pulp.LpStatus[prob.status])print("Should test Part 1? ", "Yes" if test_part1.varValue > 0.5 else "No")print("Should test Part 2? ", "Yes" if test_part2.varValue > 0.5 else "No")print("Should test Assembly? ", "Yes" if test_assembly.varValue > 0.5 else "No")print("Should disassemble defective products? ", "Yes" if disassemble.varValue > 0.5 else "No")print("Total Revenue: ", pulp.value(total_revenue))print("Total Cost: ", pulp.value(total_cost))print("Net Profit: ", pulp.value(total_revenue - total_cost))solve_decision_problem(0.125, 0.1416, 0.125, 4, 18, 6, 1.8, 2.33, 2.66, 56, 15.33, 5, 10)

第三题:

这段代码是一个使用Python编写的线性规划模型,旨在解决一个多阶段生产过程的优化问题。它使用了`pulp`库来定义和求解一个线性规划问题,目的是最大化生产过程的利润。以下是代码的详细解释:

import pulp

这行代码导入了`pulp`库,这是一个用于线性规划的Python库,它提供了定义优化问题、决策变量、目标函数和约束条件的功能

def solve_multistage_production():prob = pulp.LpProblem("Multistage_Production", pulp.LpMaximize)  # 改为最大化利润

这行代码定义了一个名为`solve_multistage_production`的函数,它封装了解决多阶段生产问题的逻辑。

创建了一个名为"Multistage_Production"的线性规划问题对象`prob`,目标是最大化(`pulp.LpMaximize`),这意味着我们的目标是最大化利润。

    # 示例数据num_parts = 8defective_rate_part = [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]# 零配件次品率purchase_price = [2, 8, 12, 2, 8, 12, 8, 12]# 零配件购买单价test_cost = [1, 1, 2, 1, 1, 2, 1, 2]# 零配件检测成本assembly_cost = [8, 8]# 半成品装配成本,假设有两个半成品defective_rate_assembly = [0.1, 0.1]# 半成品次品率final_assembly_cost = 10# 最终成品装配成本defective_rate_final = 0.1# 最终成品次品率market_price = 200# 成品市场售价replacement_loss = 40# 调换损失disassembly_cost_assembly = [6, 6]# 拆解半成品成本disassembly_cost_final = 10 # 拆解最终成品成本

这些行定义了用于模型的参数,包括零配件的数量、次品率、购买单价、检测成本、半成品的装配成本和次品率、最终成品的装配成本和次品率、市场售价、调换损失以及拆解成本。

    # 决策变量test_part = pulp.LpVariable.dicts("Test_Part", range(num_parts), cat='Binary')assemble = pulp.LpVariable.dicts("Assemble", range(2), cat='Binary')test_assembly = pulp.LpVariable.dicts("Test_Assembly", range(2), cat='Binary')produce_final = pulp.LpVariable("Produce_Final", cat='Binary')disassemble_assembly = pulp.LpVariable.dicts("Disassemble_Assembly", range(2), cat='Binary')disassemble_final = pulp.LpVariable("Disassemble_Final", cat='Binary')

这些行定义了模型的决策变量,它们是二进制变量(0或1),用于表示是否执行特定的操作,如测试零配件、组装半成品、测试半成品、生产最终产品、拆解不合格的半成品和最终产品。

    # 成本计算total_cost = (sum(purchase_price[i] * test_part[i] * (1 - defective_rate_part[i]) for i in range(num_parts)) +sum(test_cost[i] * test_part[i] for i in range(num_parts)) +sum(assembly_cost[j] * assemble[j] for j in range(2)) +sum(test_cost[j] * test_assembly[j] for j in range(2)) +final_assembly_cost * produce_final +replacement_loss * (1 - produce_final) +sum(disassembly_cost_assembly[j] * disassemble_assembly[j] for j in range(2)) +disassembly_cost_final * disassemble_final)

这段代码计算了总成本,包括购买成本、检测成本、装配成本、拆解费用和调换损失。每个成本项都乘以相应的决策变量,以确定在特定决策下的成本。

    # 收益计算total_revenue = market_price * (1 - defective_rate_final) * produce_final

这行代码计算了总收入,基于市场销售价格和最终产品的合格数量。

    # 目标函数:最大化利润prob += total_revenue - total_cost

这行代码设置了目标函数,即最大化总收入减去总成本的差值,也就是最大化利润。

    # 约束条件for i in range(num_parts):prob += test_part[i] == 1for j in range(2):prob += assemble[j] <= test_part[j]prob += test_assembly[j] <= assemble[j]prob += disassemble_assembly[j] >= test_assembly[j] * defective_rate_assembly[j]prob += produce_final <= sum(test_assembly)  # 只有所有半成品检测通过才能生产最终产品prob += disassemble_final >= produce_final * defective_rate_final  # 如果最终产品不合格则拆解

这些行定义了模型的约束条件,确保所有零配件都需要检测,只有检测通过的零配件才能用于组装,组装后需要检测半成品,如果半成品不合格,则需要拆解,只有所有半成品检测通过才能生产最终产品,如果最终产品不合格,则需要拆解。

    prob.solve()# 输出结果print("Status:", pulp.LpStatus[prob.status])for i in range(num_parts):print(f"Should test Part {i+1}? ", "Yes" if test_part[i].varValue > 0.5 else "No")for j in range(2):print(f"Should assemble Part {j+1}? ", "Yes" if assemble[j].varValue > 0.5 else "No")print(f"Should test Assembly {j+1}? ", "Yes" if test_assembly[j].varValue > 0.5 else "No")print("Should produce final product? ", "Yes" if produce_final.varValue > 0.5 else "No")for j in range(2):print(f"Should disassemble Assembly {j+1}? ", "Yes" if disassemble_assembly[j].varValue > 0.5 else "No")print("Should disassemble final product? ", "Yes" if disassemble_final.varValue > 0.5 else "No")print("Total Revenue: ", pulp.value(total_revenue))print("Total Cost: ", pulp.value(total_cost))print("Net Profit: ", pulp.value(total_revenue - total_cost))solve_multistage_production()

这行代码调用`pulp`的求解器来求解线性规划问题。

这些行打印求解状态和每个决策变量的结果,告诉我们是否应该执行特定的操作,以及总收入、总成本和净利润的数值。

这些行打印每个决策变量的结果,告诉我们是否应该测试每个零配件。

这些行打印总收入、总成本和净利润的数值。

这行代码调用`solve_multistage_production`函数来运行模型。

这个模型是一个完整的线性规划模型,用于帮助企业在多阶段生产过程中做出最优的决策。

以下就是完整的代码:

import pulpdef solve_multistage_production():prob = pulp.LpProblem("Multistage_Production", pulp.LpMaximize)  # 改为最大化利润# 示例数据num_parts = 8defective_rate_part = [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]# 零配件次品率purchase_price = [2, 8, 12, 2, 8, 12, 8, 12]# 零配件购买单价test_cost = [1, 1, 2, 1, 1, 2, 1, 2]# 零配件检测成本assembly_cost = [8, 8]# 半成品装配成本,假设有两个半成品defective_rate_assembly = [0.1, 0.1]# 半成品次品率final_assembly_cost = 10# 最终成品装配成本defective_rate_final = 0.1# 最终成品次品率market_price = 200# 成品市场售价replacement_loss = 40# 调换损失disassembly_cost_assembly = [6, 6]# 拆解半成品成本disassembly_cost_final = 10 # 拆解最终成品成本# 决策变量test_part = pulp.LpVariable.dicts("Test_Part", range(num_parts), cat='Binary')assemble = pulp.LpVariable.dicts("Assemble", range(2), cat='Binary')test_assembly = pulp.LpVariable.dicts("Test_Assembly", range(2), cat='Binary')produce_final = pulp.LpVariable("Produce_Final", cat='Binary')disassemble_assembly = pulp.LpVariable.dicts("Disassemble_Assembly", range(2), cat='Binary')disassemble_final = pulp.LpVariable("Disassemble_Final", cat='Binary')# 成本计算total_cost = (sum(purchase_price[i] * test_part[i] * (1 - defective_rate_part[i]) for i in range(num_parts)) +sum(test_cost[i] * test_part[i] for i in range(num_parts)) +sum(assembly_cost[j] * assemble[j] for j in range(2)) +sum(test_cost[j] * test_assembly[j] for j in range(2)) +final_assembly_cost * produce_final +replacement_loss * (1 - produce_final) +sum(disassembly_cost_assembly[j] * disassemble_assembly[j] for j in range(2)) +disassembly_cost_final * disassemble_final)# 收益计算total_revenue = market_price * (1 - defective_rate_final) * produce_final# 目标函数:最大化利润prob += total_revenue - total_cost# 约束条件for i in range(num_parts):prob += test_part[i] == 1for j in range(2):prob += assemble[j] <= test_part[j]prob += test_assembly[j] <= assemble[j]prob += disassemble_assembly[j] >= test_assembly[j] * defective_rate_assembly[j]prob += produce_final <= sum(test_assembly)  # 只有所有半成品检测通过才能生产最终产品prob += disassemble_final >= produce_final * defective_rate_final  # 如果最终产品不合格则拆解prob.solve()# 输出结果print("Status:", pulp.LpStatus[prob.status])for i in range(num_parts):print(f"Should test Part {i+1}? ", "Yes" if test_part[i].varValue > 0.5 else "No")for j in range(2):print(f"Should assemble Part {j+1}? ", "Yes" if assemble[j].varValue > 0.5 else "No")print(f"Should test Assembly {j+1}? ", "Yes" if test_assembly[j].varValue > 0.5 else "No")print("Should produce final product? ", "Yes" if produce_final.varValue > 0.5 else "No")for j in range(2):print(f"Should disassemble Assembly {j+1}? ", "Yes" if disassemble_assembly[j].varValue > 0.5 else "No")print("Should disassemble final product? ", "Yes" if disassemble_final.varValue > 0.5 else "No")print("Total Revenue: ", pulp.value(total_revenue))print("Total Cost: ", pulp.value(total_cost))print("Net Profit: ", pulp.value(total_revenue - total_cost))solve_multistage_production()

第四题:

import pulp
import numpy as np


这两行代码导入了所需的Python库。`pulp` 是一个线性规划库,用于定义和解决优化问题。`numpy` 是一个用于数值计算的库,提供了大量的数学函数和操作。

def simulate_sampling_error(true_rate, sample_size, num_samples=1000):


定义了一个名为 `simulate_sampling_error` 的函数,该函数用于模拟抽样误差。

    ""“模拟抽样误差,返回抽样得到的次品率估计值的平均值”""np.random.seed(0)  # 确保可重复性

这是一个多行字符串,作为函数的文档字符串,解释了函数的作用。
设置随机数生成器的种子,以确保每次运行代码时生成的随机数相同,从而保证结果的可重复性。

    estimates = [np.random.binomial(sample_size, true_rate) / sample_size for _ in range(num_samples)]


创建一个列表,其中包含根据二项分布模拟的次品率估计值。对于每个样本,都进行 `num_samples` 次模拟。

    return np.mean(estimates)


返回模拟次品率估计值的平均值。

def solve_decision_problem_with_sampling_error():


定义了一个名为 `solve_decision_problem_with_sampling_error` 的函数,用于解决生产决策问题。

    prob = pulp.LpProblem("Production_Decision_With_Error", pulp.LpMaximize)


创建一个线性规划问题对象 `prob`,命名为 "Production_Decision_With_Error",并设置为最大化问题。

    # 示例数据num_parts = 8sample_size = 100  # 假设抽样大小true_defective_rates = [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]  # 真实次品率estimated_defective_rates = [simulate_sampling_error(rate, sample_size) for rate in true_defective_rates]


设置一些示例数据,包括零配件的数量、抽样大小、真实次品率,并使用 `simulate_sampling_error` 函数估计次品率。

    # 其他参数purchase_price = [2, 8, 12, 2, 8, 12, 8, 12]  # 零配件购买单价test_cost = [1, 1, 2, 1, 1, 2, 1, 2]  # 零配件检测成本assembly_cost = [8, 8]  # 半成品装配成本,假设有两个半成品test_cost_assembly = [4, 4]  # 半成品检测成本disassembly_cost_assembly = [6, 6]  # 半成品拆解成本final_assembly_cost = 10  # 最终成品装配成本market_price = 200  # 成品市场售价replacement_loss = 40  # 调换损失disassembly_cost_final = 10  # 拆解最终成品成本


定义了其他与生产过程相关的参数,如购买单价、检测成本、装配成本、市场售价、调换损失和拆解成本。

    # 决策变量test_part = pulp.LpVariable.dicts("Test_Part", range(num_parts), cat='Binary')assemble = pulp.LpVariable.dicts("Assemble", range(2), cat='Binary')test_assembly = pulp.LpVariable.dicts("Test_Assembly", range(2), cat='Binary')produce_final = pulp.LpVariable("Produce_Final", cat='Binary')disassemble_assembly = pulp.LpVariable.dicts("Disassemble_Assembly", range(2), cat='Binary')disassemble_final = pulp.LpVariable("Disassemble_Final", cat='Binary')


定义了一组决策变量,用于表示是否进行检测、组装、生产最终产品和拆解等操作。

    # 成本计算total_cost = (sum(purchase_price[i] * test_part[i] * (1 - estimated_defective_rates[i]) for i in range(num_parts)) +sum(test_cost[i] * test_part[i] for i in range(num_parts)) +sum(assembly_cost[j] * assemble[j] for j in range(2)) +sum(test_cost_assembly[j] * test_assembly[j] for j in range(2)) +final_assembly_cost * produce_final +replacement_loss * (1 - produce_final) +sum(disassembly_cost_assembly[j] * disassemble_assembly[j] for j in range(2)) +disassembly_cost_final * disassemble_final
)


计算总成本,包括购买成本、检测成本、装配成本、调换损失和拆解成本。

    # 收益计算total_revenue = market_price * (1 - max(estimated_defective_rates)) * produce_final


计算总收入,即生产并销售最终产品的收入。

    # 目标函数:最大化利润prob += total_revenue - total_cost


设置目标函数为最大化利润,即总收入减去总成本。

    # 约束条件for i in range(num_parts):prob += test_part[i] == 1  # 假设所有零配件都需要检测


添加约束条件,假设所有零配件都需要检测。

    for j in range(2):prob += assemble[j] <= test_part[j]  # 只有检测通过的零配件才能用于组装prob += test_assembly[j] <= assemble[j]  # 组装后需要检测prob += disassemble_assembly[j] >= test_assembly[j] * estimated_defective_rates[j]  # 如果半成品不合格则拆解


添加其他约束条件,包括零配件检测、半成品组装和检测,以及不合格半成品的拆解。

    prob += produce_final <= sum(test_assembly)  # 只有所有半成品检测通过才能生产最终产品prob += disassemble_final >= produce_final * max(estimated_defective_rates)  # 如果最终产品不合格则拆解


添加最终产品的生产和拆解约束条件。

    prob.solve()


解决定义好的线性规划问题。

    # 输出结果print("Status:", pulp.LpStatus[prob.status])for i in range(num_parts):print(f"Should test Part {i+1}? ", "Yes" if test_part[i].varValue > 0.5 else "No")for j in range(2):print(f"Should assemble Part {j+1}? ", "Yes" if assemble[j].varValue > 0.5 else "No")print(f"Should test Assembly {j+1}? ", "Yes" if test_assembly[j].varValue > 0.5 else "No")print("Should produce final product? ", "Yes" if produce_final.varValue > 0.5 else "No")for j in range(2):print(f"Should disassemble Assembly {j+1}? ", "Yes" if disassemble_assembly[j].varValue > 0.5 else "No")print("Should disassemble final product? ", "Yes" if disassemble_final.varValue > 0.5 else "No")print("Total Revenue: ", pulp.value(total_revenue))print("Total Cost: ", pulp.value(total_cost))print("Net Profit: ", pulp.value(total_revenue - total_cost))


输出问题的解决状态、每个决策变量的结果、总收入、总成本和净利润。

请注意,代码中的一些约束条件可能需要根据实际情况进行调整,以确保它们正确地反映了生产过程中的逻辑关系。

以下是完整的代码:

import pulp
import numpy as npdef simulate_sampling_error(true_rate, sample_size, num_samples=1000):"""模拟抽样误差,返回抽样得到的次品率估计值的平均值"""np.random.seed(0)  # 确保可重复性estimates = [np.random.binomial(sample_size, true_rate) / sample_size for _ in range(num_samples)]return np.mean(estimates)def solve_decision_problem_with_sampling_error():prob = pulp.LpProblem("Production_Decision_With_Error", pulp.LpMaximize)# 示例数据num_parts = 8sample_size = 100  # 假设抽样大小true_defective_rates = [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]  # 真实次品率estimated_defective_rates = [simulate_sampling_error(rate, sample_size) for rate in true_defective_rates]# 其他参数purchase_price = [2, 8, 12, 2, 8, 12, 8, 12]  # 零配件购买单价test_cost = [1, 1, 2, 1, 1, 2, 1, 2]  # 零配件检测成本assembly_cost = [8, 8]  # 半成品装配成本,假设有两个半成品test_cost_assembly = [4, 4]  # 半成品检测成本disassembly_cost_assembly = [6, 6]  # 半成品拆解成本final_assembly_cost = 10  # 最终成品装配成本market_price = 200  # 成品市场售价replacement_loss = 40  # 调换损失disassembly_cost_final = 10  # 拆解最终成品成本# 决策变量test_part = pulp.LpVariable.dicts("Test_Part", range(num_parts), cat='Binary')assemble = pulp.LpVariable.dicts("Assemble", range(2), cat='Binary')test_assembly = pulp.LpVariable.dicts("Test_Assembly", range(2), cat='Binary')produce_final = pulp.LpVariable("Produce_Final", cat='Binary')disassemble_assembly = pulp.LpVariable.dicts("Disassemble_Assembly", range(2), cat='Binary')disassemble_final = pulp.LpVariable("Disassemble_Final", cat='Binary')# 成本计算total_cost = (sum(purchase_price[i] * test_part[i] * (1 - estimated_defective_rates[i]) for i in range(num_parts)) +sum(test_cost[i] * test_part[i] for i in range(num_parts)) +sum(assembly_cost[j] * assemble[j] for j in range(2)) +sum(test_cost_assembly[j] * test_assembly[j] for j in range(2)) +final_assembly_cost * produce_final +replacement_loss * (1 - produce_final) +sum(disassembly_cost_assembly[j] * disassemble_assembly[j] for j in range(2)) +disassembly_cost_final * disassemble_final)# 收益计算total_revenue = market_price * (1 - max(estimated_defective_rates)) * produce_final# 目标函数:最大化利润prob += total_revenue - total_cost# 约束条件for i in range(num_parts):prob += test_part[i] == 1  # 假设所有零配件都需要检测for j in range(2):prob += assemble[j] <= test_part[j]  # 只有检测通过的零配件才能用于组装prob += test_assembly[j] <= assemble[j]  # 组装后需要检测prob += disassemble_assembly[j] >= test_assembly[j] * estimated_defective_rates[j]  # 如果半成品不合格则拆解prob += produce_final <= sum(test_assembly)  # 只有所有半成品检测通过才能生产最终产品prob += disassemble_final >= produce_final * max(estimated_defective_rates)  # 如果最终产品不合格则拆解prob.solve()# 输出结果print("Status:", pulp.LpStatus[prob.status])for i in range(num_parts):print(f"Should test Part {i+1}? ", "Yes" if test_part[i].varValue > 0.5 else "No")for j in range(2):print(f"Should assemble Part {j+1}? ", "Yes" if assemble[j].varValue > 0.5 else "No")print(f"Should test Assembly {j+1}? ", "Yes" if test_assembly[j].varValue > 0.5 else "No")print("Should produce final product? ", "Yes" if produce_final.varValue > 0.5 else "No")for j in range(2):print(f"Should disassemble Assembly {j+1}? ", "Yes" if disassemble_assembly[j].varValue > 0.5 else "No")print("Should disassemble final product? ", "Yes" if disassemble_final.varValue > 0.5 else "No")print("Total Revenue: ", pulp.value(total_revenue))print("Total Cost: ", pulp.value(total_cost))print("Net Profit: ", pulp.value(total_revenue - total_cost))solve_decision_problem_with_sampling_error()

结语:

太久没有更新了实在不好意思了,之后我会持续更新的这次的数学建模比赛是我们团队一起完成的,这是我们最后的论文和代码。其实对于最后的结果我们也没有什么太大的把握,希望看到这篇文章的大神们可以给我们一些建议和改进的方法我们会虚心接受和认真改正的,最后也希望大家多多关注下小编。文章有任何问题和错误欢迎大家的斧正。

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

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

相关文章

鸿蒙OpenHarmony【轻量系统芯片移植案例】标准系统方案之扬帆移植案例

标准系统方案之扬帆移植案例 ​ 本文章是基于瑞芯微RK3399芯片的yangfan开发板&#xff0c;进行标准系统相关功能的移植&#xff0c;主要包括产品配置添加&#xff0c;内核启动、升级&#xff0c;音频ADM化&#xff0c;Camera&#xff0c;TP&#xff0c;LCD&#xff0c;WIFI&a…

观成科技:新版suo5隧道工具加密流量跟踪分析

1、工具简介 suo5是一个高性能的http隧道代理工具&#xff0c;支持全双工半双工模式&#xff0c;具有很高的传输性能&#xff0c;现在越来越多的webshell管理工具与内存马生成工具都支持了生成suo5木马的功能。从v1.1.0版本开始&#xff0c;其TLS协议传输功能中&#xff0c;增…

青海省基础地理矢量数据

青海是长江、黄河、沧澜江的发源地&#xff0c;因此被誉为“三江源”和“中华水塔”&#xff0c;具有全球独一无二的生态地位。青海省拥有丰富的水资源和生物多样性&#xff0c;对维护亚洲的水资源和生态平衡具有重要作用。 该数据集涵盖了青海省内的主要地理要素&#xff0c;包…

聚焦汽车智能化与电动化,亚洲领先的汽车工业技术博览会 2025年11月与您相约 AUTO TECH 华南展

抢占市场先机︱聚焦汽车智能化与电动化&#xff0c;亚洲领先的汽车工业技术博览会 2025年11月与您相约 AUTO TECH 华南展 随着汽车智能化与电动化的迅猛发展&#xff0c;汽车电子技术、车用功率半导体技术、智能座舱技术、轻量化技术/材料、软件定义汽车、EV/HV技术、测试测量技…

deepspeed安装报错 No module named ‘dskernels‘解决

pip install deepseek安装报错 Using cached https://pypi.tuna.tsinghua.edu.cn/packages/61/e6/04e2f2de08253e6b779fe7706f2e06d8fb48353e1d33a2fd7805062213d4/deepspeed-0.12.3.tar.gz (1.2 MB)Preparing metadata (setup.py) ... errorerror: subprocess-exited-with-err…

透明屏幕有普通屏幕有哪些优点

针对透明玻璃屏幕的安装方案&#xff0c;我们需要综合考虑多个因素&#xff0c;包括安装环境、屏幕尺寸、重量、安全要求以及视觉效果等。以下是一个概括性的安装方案框架&#xff0c;供您参考&#xff1a; 一、前期准备 1.1 需求分析 明确透明玻璃屏幕的使用场景&#xff08…

C++速通LeetCode中等第4题-三数之和

解题思路&#xff1a;先排序&#xff0c;固定第一个数&#xff0c;用两个指针分别指向右侧剩余数列的两端&#xff0c;右侧向左移动直到两指针重合&#xff0c;看三数合有没有解&#xff0c;指针遇到相同数字跳过。 class Solution { public:vector<vector<int>> …

【数据库】MySQL内置函数

本篇分享一些在MySQL中常见的一些内置函数&#xff0c;如日期函数&#xff0c;字符串函数和数学函数&#xff0c;以方便于操作数据库中的数据。 1.日期函数 我们先整体观察一下这些函数再讲解案例 日期函数使用起来都非常就简单 获得年月日&#xff1a; select current_dat…

为解决bypy大文件上传报错—获取百度云文件直链并使用Aria2上传文件至服务器

问题描述 一方面组内的服务器的带宽比较小&#xff0c;另一方面使用bypy方式进行大文件(大于15G)上传时会报错&#xff08;虽然有时可以成功上传&#xff0c;但是不稳定&#xff09;&#xff1a; 解决方式 总体思路: 获得云盘需要下载文件的直链复制直链到服务器中使用自带…

24年蓝桥杯及攻防世界赛题-MISC-3

21 reverseMe 复制图片&#xff0c;在线ocr识别&#xff0c;https://ocr.wdku.net/&#xff0c;都不费眼睛。 22 misc_pic_again ┌──(holyeyes㉿kali2023)-[~/Misc/tool-misc/zsteg] └─$ zsteg misc_pic_again.png imagedata … text: “$$KaTeX parse error: Undefined…

Excel快速填充颜色,快捷键真香

大家好&#xff0c;这里是效率办公指南&#xff01; &#x1f3a8; 在Excel中工作时&#xff0c;我们经常需要对单元格进行颜色填充&#xff0c;以突出显示重要数据或增加视觉可读性。今天&#xff0c;我们将分享几种快速填充颜色的方法&#xff0c;帮助你提高工作效率&#x…

Golang使用ReverseProxy实现反向代理

目录 1.源码结构体 2.官方单机示例 3.使用示例 4.简单的http服务&#xff08;用于测试&#xff09; 1.源码结构体 type ReverseProxy struct {// Rewrite 必须是一个函数&#xff0c;用于将请求修改为要使用 Transport 发送的新请求。然后&#xff0c;其响应将原封不动地…

用ASR PRO离线语音芯片和月饼盒做一个会跑会跳会说话的机器狗

中秋节刚过&#xff0c;大家月饼盒应该还有&#xff0c;不要扔&#xff0c;可以做点小玩意。 机器狗的创意来自B站石桥北的视频&#xff0c;他使用了一块ESP32芯片和打印件加四个舵机实现&#xff0c;应该说是比较复杂的&#xff0c;需要有3D打印机打印外壳&#xff0c;还得会…

Linux标准IO-系统调用详解

1.1 系统调用 系统调用&#xff08;system call&#xff09;其实是 Linux 内核提供给应用层的应用编程接口&#xff08;API&#xff09;&#xff0c;是 Linux 应用层进入内核的入口。不止 Linux 系统&#xff0c;所有的操作系统都会向应用层提供系统调用&#xff0c;应用程序通…

【Harmony】轮播图特效,持续更新中。。。。

效果预览 swiper官网例子 Swiper 高度可变化 两边等长露出&#xff0c;跟随手指滑动 Swiper 指示器导航点位于 Swiper 下方 一、官网 例子 参考代码&#xff1a; // xxx.ets class MyDataSource implements IDataSource {private list: number[] []constructor(list: nu…

软考高级:嵌入式系统调度算法 AI 解读

嵌入式系统中的调度算法用于管理任务的执行顺序&#xff0c;确保系统资源能够有效分配。以下是几种常见的调度算法的通俗讲解。 生活化例子 想象你是一位超市收银员&#xff0c;有很多顾客排队&#xff0c;每位顾客都可以看作一个任务&#xff0c;收银台就是你的处理器。你需…

PostgreSQL技术内幕10:PostgreSQL事务原理解析-日志模块介绍

文章目录 0.简介1.PG日志介绍2.事务日志介绍3.WAL分析3.1 WAL概述3.2 WAL设计考虑3.2.1 存储格式3.2.2 实现方式3.2.3 数据完整性校验3.3 check ponit 4.事务提交日志&#xff08;CLOG&#xff09;4.1 clog存储使用介绍4.2 slru缓冲池并发控制 0.简介 本文将延续上一篇文章内容…

【无标题】Java_Se 数据变量与运算符

标识符、变量、常量、数据类型、运算符、基本数据类型的类型转换等。这些是编程中的“砖块”&#xff0c;是编程的基础。要想开始正式编程&#xff0c;还需要再学“控制语句”&#xff0c;控制语句就像“水泥”&#xff0c;可以把“砖块”粘到一起&#xff0c;最终形成“一座大…

华为OD机试 - 二维伞的雨滴效应(Python/JS/C/C++ 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

ClickHouse-Kafka Engine 正确的使用方式

Kafka 是大数据领域非常流行的一款分布式消息中间件&#xff0c;是实时计算中必不可少的一环&#xff0c;同时一款 OLAP 系统能否对接 Kafka 也算是考量是否具备流批一体的衡量指标之一。ClickHouse 的 Kafka 表引擎能够直接与 Kafka 系统对接&#xff0c;进而订阅 Kafka 中的 …