2024 年高教社杯全国大学生数学建模竞赛B题第三问详细解题思路(终版)

news2024/12/26 20:59:47

示例代码:

import numpy as np
import pandas as pd

# 参数设定
params = {
    'm': 8,  # 零配件数量
    'n': 2,  # 半成品数量
    'p': [0.10, 0.10, 0.10, 0.10, 0.10, 0.10, 0.10, 0.10],  # 零配件次品率
    'c': [2, 8, 12, 2, 8, 12, 8, 12],  # 购买单价
    'd': [1, 1, 2, 1, 1, 2, 1, 2],  # 检测成本
    'a': [8, 8],  # 装配成本
    'pf': 0.10,  # 成品次品率
    's': 200,  # 市场售价
    'l': 40,  # 调换损失
    'r': 6  # 拆解费用
}

# 决策变量
decisions = [0, 1]

# 利润计算函数
def calculate_profit(D, C, R, params):
    cost_parts = sum(params['c'][i] + params['d'][i] * D[i] for i in range(params['m']))
    cost_subassemblies = sum(params['a'][j] + params['d'][j + params['m']] * C[j] for j in range(params['n']))
    revenue = params['s'] * (1 - params['pf'])
    cost_rework = params['r'] * R * params['pf']
    loss_replacement = params['l'] * params['pf']
    profit = revenue - cost_parts - cost_subassemblies - cost_rework - loss_replacement
    return profit

# 遍历所有可能的决策组合
best_profit = -np.inf
best_decision = None
for D in itertools.product(decisions, repeat=params['m']):
    for C in itertools.product(decisions, repeat=params['n']):
        for R in decisions:
            profit = calculate_profit(D, C, R, params)
            if profit > best_profit:
                best_profit = profit
                best_decision = (D, C, R)

print(f"Best Decision: {best_decision}, Maximum Profit: {best_profit}")

可视化代码:

import numpy as np
import matplotlib.pyplot as plt
import itertools
import pandas as pd

# 参数设定
params = {
    'm': 8,  # 零配件数量
    'n': 2,  # 半成品数量
    'p': [0.10, 0.10, 0.10, 0.10, 0.10, 0.10, 0.10, 0.10],  # 零配件次品率
    'c': [2, 8, 12, 2, 8, 12, 8, 12],  # 购买单价
    'd': [1, 1, 2, 1, 1, 2, 1, 2],  # 检测成本
    'a': [8, 8],  # 装配成本
    'pf': 0.10,  # 成品次品率
    's': 200,  # 市场售价
    'l': 40,  # 调换损失
    'r': 6  # 拆解费用
}

# 决策变量
decisions = [0, 1]

# 利润计算函数
def calculate_profit(D, C, R, params):
    cost_parts = sum(params['c'][i] + params['d'][i] * D[i] for i in range(params['m']))
    cost_subassemblies = sum(params['a'][j] + (params['d'][params['m'] + j] if j < len(params['d']) - params['m'] else 0) * C[j] for j in range(params['n']))
    revenue = params['s'] * (1 - params['pf'])
    cost_rework = params['r'] * R * params['pf']
    loss_replacement = params['l'] * params['pf']
    profit = revenue - cost_parts - cost_subassemblies - cost_rework - loss_replacement
    return profit

# 遍历所有可能的决策组合
profits = []
decision_combinations = list(itertools.product(decisions, repeat=params['m'] + params['n'] + 1))
for combo in decision_combinations:
    D = combo[:params['m']]
    C = combo[params['m']:params['m'] + params['n']]
    R = combo[-1]
    profit = calculate_profit(D, C, R, params)
    profits.append(profit)

# 转换为DataFrame以便可视化
df = pd.DataFrame(decision_combinations, columns=[f'D{i}' for i in range(params['m'])] + [f'C{j}' for j in range(params['n'])] + ['R'])
df['Profit'] = profits

# 绘制决策变量对利润的影响图
plt.figure(figsize=(12, 8))
plt.bar(df.index, df['Profit'], color='skyblue')
plt.xlabel('Decision Combination Index')
plt.ylabel('Profit')
plt.title('Profit for Different Decision Combinations')
plt.xticks(rotation=90)
plt.show()

# 敏感性分析图
sensitivity_params = ['c1', 'c2', 's', 'l', 'r']
for param in sensitivity_params:
    values = np.linspace(0.5, 1.5, 10) * params[param]
    profits_sensitivity = [calculate_profit(*[1]*params['m'], *[1]*params['n'], 1, {**params, param: value}) for value in values]
    plt.figure(figsize=(10, 6))
    plt.plot(values, profits_sensitivity, marker='o', label=f'Sensitivity to {param}')
    plt.xlabel(f'{param} Value')
    plt.ylabel('Profit')
    plt.title(f'Sensitivity Analysis for {param}')
    plt.legend()
    plt.grid(True)
    plt.show()

图表说明:

  1. 决策变量对利润的影响图:展示了所有可能的决策组合下的总利润,帮助理解不同决策对利润的影响。
  2. 敏感性分析图:展示了关键参数(如零配件成本、市场售价、调换损失、拆解费用)变化对总利润的影响,帮助理解哪些参数对决策影响最大。

原文链接:https://www.cnblogs.com/qimoxuan/articles/18401499

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

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

相关文章

个性化阅读体验:Spring Boot驱动的图书推荐系统

1 绪论 1.1研究背景 随着网络不断的普及发展&#xff0c;图书个性化推荐系统依靠网络技术的支持得到了快速的发展&#xff0c;首先要从学生的实际需求出发&#xff0c;通过了解学生的需求开发出具有针对性的首页、图书信息、好书推荐、留言反馈、个人中心、后台管理功能&#x…

文本分类场景下微调BERT

How to Fine-Tune BERT for Text Classification 论文《How to Fine-Tune BERT for Text Classification?》是2019年发表的一篇论文。这篇文章做了一些实验来分析了如何在文本分类场景下微调BERT&#xff0c;是后面网上讨论如何微调BERT时经常提到的论文。 结论与思路 先来看…

19:HAL—-DAC

一&#xff1a;介绍 1&#xff1a;简历 2&#xff1a;简图 F1,F4,F7的DAC框架图都一样。 触发源&#xff1a; 宏定义补全及解释 #define DAC_TRIGGER_NONE 0x00000000UL /*!< 转换是自动的&#xff0c;一旦DAC1_DHRxxxx寄存器被加载&#xff0c;不由外部触发 */ #define …

ctfshow-php特性(web123-web150plus)

​web123 <?php error_reporting(0); highlight_file(__FILE__); include("flag.php"); $a$_SERVER[argv]; $c$_POST[fun]; if(isset($_POST[CTF_SHOW])&&isset($_POST[CTF_SHOW.COM])&&!isset($_GET[fl0g])){if(!preg_match("/\\\\|\/|\~|…

AI模型的未来之路:全能与专精的博弈与共生

人工智能(AI)领域正迅速发展,伴随着技术的不断进步,AI模型的应用范围也在不断扩展。当前,AI模型的设计和使用面临两个主要趋势:全能型模型和专精型模型。这两者之间的博弈与共生将塑造未来的AI技术格局。本文将从以下七个方面探讨AI模型的未来之路,并提供实用的代码示例…

软考-高级架构师Keywords(上半部分)

概述 本文用于备考时自查知识点掌握情况&#xff0c; 知识点只以关键词方式提点出来&#xff0c;算是对照考纲的细碎化转化。 太简单的知识点不会收录。特别适合 通过中级-软件设计师的同学 / 八股文爱好者 / 408选手 计算机硬件 码距&#xff1a;改变n位成为另一个编码所需要…

业务资源管理模式语言09

示例&#xff1a; 图13 表示了QuoteTheMaintenance 模式的一个实例&#xff0c;在汽车修理店系统中&#xff0c;其中“Vehicle”扮演“Resource”&#xff0c;“Repair Quotation”扮演“Maintenance Quotation”&#xff0c;“Repair shop branch”扮演“Source-party”&…

halcon图像怎么显示在我们指定的区域

要想搞明白这个问题,首先我们要了解句柄的传递关系. halcon生成图像,会产生一个图像句柄,只要把该句柄传递给我们需要显示的组件就可以了. 简单说,就是一个句柄的传递关系. 下面这个例子简单说明句柄传递关系: 我们获取一个图像控件的句柄,把图像句柄传递给halcon的图像窗口句…

BN于神经网络调优

目录 一:神经网络调优 1.算法层面: 2.网络层面 二:调参技巧: 2.合理的参数设置: 3.运行: 三:批标准化(Batch Normalizetion) 1.批标准化公式: 2.过程图: 3.为什么标准化能够是优化过程变得简单: 一:神经网络调优 参数调优也称为超参数调优 1.算法层面…

JS手写实现深拷贝

手写深拷贝 一、通过JSON.stringify二、函数库lodash三、递归实现深拷贝基础递归升级版递归---解决环引用爆栈问题最终版递归---解决其余类型拷贝结果 一、通过JSON.stringify JSON.parse(JSON.stringify(obj))是比较常用的深拷贝方法之一 原理&#xff1a;利用JSON.stringif…

刘诗诗现身纽约两场活动,演绎极具松弛感的优雅,生图状态绝美

近期&#xff0c;纽约迎来了时装周&#xff0c;还有奢侈品牌活动陆续举办&#xff0c;演员刘诗诗也现身部分活动现场&#xff0c;以绝佳好状态收获大量关注和好评。 纽约时间9月4日&#xff0c;刘诗诗现身Bobbi Brown芭比波朗「IN MY SKIN GLOBALEVENT」活动&#xff0c;身穿裸…

ubuntu 和windows用samba服务器实现数据传输

1&#xff0c;linux安装samba服务器 sudo apt-get install samba samba-common 2&#xff0c;linux 配置权限&#xff0c;修改目录权限&#xff0c;linux下共享的文件权限设置。 sudo chmod 777 /home/lark -R 3. 添加samba用户 sudo smbpasswd -a lark 4&#xff0c;配置共享…

【AcWing】853. 有边数限制的最短路(bellman-ford贝尔曼福特算法)

存储&#xff1a; 这个算法存边不一定要写成邻接表&#xff0c;随便存&#xff0c;只要能遍历到所有边即可&#xff0c;结构体数组。 过程&#xff1a; 负权边、负权回路&#xff1a; 贝尔曼福特算法处理有负权边的图。(注意&#xff0c;有负权回路的话&#xff0c;最短路径就不…

AI预测福彩3D采取888=3策略+和值012路或胆码测试9月7日新模型预测第80弹

经过近80期的测试&#xff0c;当然有很多彩友也一直在观察我每天发的预测结果&#xff0c;得到了一个非常有价值的信息&#xff0c;那就是9码定位的命中率非常高&#xff0c;70多期一共只错了8次&#xff0c;这给喜欢打私房菜的朋友提供了极高价值的预测结果~当然了&#xff0c…

2024PyCharm专业版详细安装激活教程

如果你正在学习Python&#xff0c;那么你需要的话可以&#xff0c;点击这里&#x1f449;Python重磅福利&#xff1a;入门&进阶全套学习资料、电子书、软件包、项目源码等等免费分享&#xff01; 前言 PyCharm是由JetBrains公司开发的一款强大的Python集成开发环境&#…

11--kubernetes的Ingress应用

前言&#xff1a;本章主要记录ingress暴露服务方式&#xff0c;会详细解释其原理及两种网络模式应用实操。 1、Ingress概念详解 Kubernetes 暴露服务的方式目前只有三种&#xff1a;LoadBlancer Service、NodePort Service、Ingress&#xff0c;Service属于4层负载均衡&#…

MySQL数据库的SQL注入漏洞解析

说明:本文仅是用于学习分析自己搭建的SQL漏洞内容和原理,请勿用在非法途径上,违者后果自负,与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》‌及其相关法规内容【学法时习之丨网络安全在身边一图了解网络安全法_中央网络安全和信息化委员会办公室】 …

FreeRTOS内部机制学习01(任务创建的细节以及任务调度的内部机制)

文章目录 前言&#xff1a;首先要谢谢韦东山老师的无私奉献&#xff0c;让我学到了很多东西&#xff0c;我做这个笔记是害怕我会忘记&#xff0c;所以就记录了下来&#xff0c;希望对大家有帮助&#xff01;关于寄存器CPU内部的寄存器这些寄存器到底要保存一些什么&#xff1f;…

Leetcode67---二进制求和

https://leetcode.cn/problems/add-binary/description/ 给出的两个二进制&#xff0c;我们可以从最后开始往前运算。 给当前短的一位前面补充0即可。 class Solution {public String addBinary(String a, String b) {//给的就是二进制字符串 最后一位开始遍历 如果没有就补充…

SAP学习笔记 - 开发02 - BTP实操流程(账号注册,BTP控制台,BTP集成开发环境搭建)

上一章讲了 BAPI的概念&#xff0c;以及如何调用SAP里面的既存BAPI。 SAP学习笔记 - 开发01 - BAPI是什么&#xff1f;通过界面和ABAP代码来调用BAPI-CSDN博客 本章继续讲开发相关的内容&#xff0c;主要就是BTP的实际操作流程&#xff0c;比如账号注册&#xff0c;登录&#…