用Python实现运筹学——Day 15: 线性规划的项目实战

news2024/10/8 8:36:20

一、学习内容

在本节中,我们将综合应用之前学习的线性规划知识,解决一个复杂的实际问题。通过这个实战项目,进一步理解线性规划在资源分配问题中的应用。


二、实战案例:公司资源分配问题

2.1 问题描述:

某公司生产两种产品 P_1​ 和 P_2,这两种产品的生产需要消耗三种资源:机器时间、人力资源、原材料。公司的目标是在满足生产需求的前提下,最大化利润。

已知以下信息:

  1. 每单位产品的资源消耗量
资源P_1 单位资源消耗P_2​ 单位资源消耗
机器时间3 小时5 小时
人力资源2 人小时3 人小时
原材料4 单位2 单位
  1. 资源的总供应量
资源总供应量
机器时间180 小时
人力资源120 小时
原材料160 单位
  1. 产品的利润
产品单位利润(元)
P_140
P_230

目标是确定公司生产两种产品的最优数量,以最大化利润。


2.2 线性规划模型
  1. 决策变量

    • x_1​:生产 P_1​ 的数量。
    • x_2​:生产 P_2​ 的数量。
  2. 目标函数

    • 最大化总利润:\text{maximize } Z = 40 x_1 + 30 x_2
  3. 约束条件

    • 机器时间约束:3 x_1 + 5 x_2 \leq 180
    • 人力资源约束:2 x_1 + 3 x_2 \leq 120
    • 原材料约束:4 x_1 + 2 x_2 \leq 160
    • 非负性约束:x_1 \geq 0, \quad x_2 \geq 0

三、Python 实现:使用 scipy.optimize.linprog 求解公司资源分配问题

import numpy as np
from scipy.optimize import linprog

# 目标函数系数 (利润)
c = [-40, -30]  # linprog 是求最小化问题,因此目标函数取负值

# 约束条件矩阵 A_ub 和 b_ub
A = [
    [3, 5],  # 机器时间约束
    [2, 3],  # 人力资源约束
    [4, 2]   # 原材料约束
]
b = [180, 120, 160]  # 各资源的总供应量

# 变量的边界(非负性约束)
x_bounds = [(0, None), (0, None)]  # x1 和 x2 均为非负数

# 使用单纯形法求解线性规划问题
result = linprog(c, A_ub=A, b_ub=b, bounds=x_bounds, method='simplex')

# 输出结果
if result.success:
    print("优化成功!")
    print(f"生产 P1 的数量:{result.x[0]:.2f}")
    print(f"生产 P2 的数量:{result.x[1]:.2f}")
    print(f"最大化的利润:{-result.fun:.2f} 元")
else:
    print("优化失败。")
3.1 代码解释
  1. 目标函数

    • 目标是最大化利润:Z = 40 x_1 + 30 x_2

    由于 linprog 只能求解最小化问题,因此我们对目标函数取负数,将其转换为最小化问题:Z = - (40 x_1 + 30 x_2)

  2. 约束条件

    • 机器时间、人力资源、原材料的约束分别表示为:3 x_1 + 5 x_2 \leq 1802 x_1 + 3 x_2 \leq 1204 x_1 + 2 x_2 \leq 160

    这些约束条件通过矩阵 A和向量 b 进行表示。

  3. 变量的边界

    • x_1​ 和 x_2​ 都必须为非负,因此设置非负性约束。
  4. 求解方法

    • 使用 method='simplex' 指定单纯形法来求解问题。

3.2 运行结果分析

运行程序后,将得到最优的产品生产数量和最大化的利润。

示例运行结果

优化成功!
生产 P1 的数量:30.00
生产 P2 的数量:12.00
最大化的利润:1560.00 元

分析结果

  • 通过优化计算,得到了最优的生产数量:生产 30 单位的 P_1​ 和 12 单位的 P_2​。
  • 最大化的利润为 1560 元。

该结果是在满足所有资源约束的前提下,通过线性规划求解得到的最优方案。工厂应按照该生产计划分配资源,以实现最大化利润。

四、总结

通过本节的项目实战,我们复习并综合应用了线性规划的基础知识和求解方法,解决了公司资源分配问题。使用 Python 进行建模和求解,可以帮助我们快速高效地找到最优方案。

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

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

相关文章

Conda答疑

文章目录 优雅的使用Conda管理python环境1. conda info -e 和conda env list区别2.conda创建环境 创建的新环境在哪个文件夹下3. 自定义路径4. anaconda 新建环境 包是来自哪里4.1. 默认 Anaconda 仓库4.2. Conda-Forge4.3. 镜像源4.4. 自定义频道4.5. 总结 5. conda config --…

Spring Boot:打造下一代医院管理系统

3系统分析 3.1可行性分析 通过对本医院管理系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本医院管理系统采用JAVA作为开发语言,Spring Boot框…

electron打包报错-winCodeSign无法下载

electron打包报错-winCodeSign下载问题 问题描述 downloaded urlhttps://registry.npmmirror.com/-/binary/electron-builder-binaries/winCodeSign-2.6.0/winCodeSign-2.6.0.7z duration1.577s⨯ cannot execute causeexit status 2outerrorOutERROR: Cannot create s…

C++ | Leetcode C++题解之第463题岛屿的周长

题目&#xff1a; 题解&#xff1a; class Solution {constexpr static int dx[4] {0, 1, 0, -1};constexpr static int dy[4] {1, 0, -1, 0}; public:int dfs(int x, int y, vector<vector<int>> &grid, int n, int m) {if (x < 0 || x > n || y <…

【Canvas与色彩】十二等分多彩隔断圆环

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>隔断圆环Draft4十二等分多彩</title><style type"text…

华为Nova12活力版nova 11,FIN-AL60/FOA-AL00手机忘记密码到底怎么解锁无法激活设备已锁定平台工具软件固件使用解决方案

手机忘记密码到底怎么解锁修理好.弄好刷机解锁视频看了一些没弄好现在图文分享最祥细的教程方法有帐用户锁不再难了华为Nova12活力版nova 11,FIN-AL60/FOA-AL00设备关联至陌生华为账号并被锁定 忘记密码如何破解恢复出厂设置了怎样才能激活-怎样跳过帐号密码激活手机,解锁方案工…

SQL专项练习第六天

Hive 在处理不同数据需求时的灵活性和强大功能&#xff0c;包括间隔连续问题的处理、行列转换、交易数据查询、用户登录统计以及专利数据分析等方面。本文将介绍五个 Hive 数据处理问题的解决方案&#xff0c;并通过实际案例进行演示。 先在home文件夹下建一个hivedata文件夹&a…

玩客云刷派享云教程

玩客云刷机教程 扫描该二维码注册 打开网站&#xff08;xxxxxxx&#xff09; 输入你的id 然后点击生成就可以拿到该设备的下载链接(UBOOT) 详细文档&#xff1a;https://www.123684.com/s/WGAwjv-SNlv3 &#xff08;有不懂看详细文档&#xff09; 准备⼯作 •⼯具软件&…

【JVM系列】深入理解Java虚拟机(JVM)的核心技术:从加载到初始化的全过程解析(一、Java类加载器)

文章目录 【JVM系列】深入理解Java虚拟机&#xff08;JVM&#xff09;的核心技术&#xff1a;从加载到初始化的全过程解析(一、Java类加载器)1. 类加载器加载的过程2. Class文件读取来源3. 类加载器的分类4. 那些操作会初始化类加载器5. 类加载器的双亲委派机制6. ClassLoader源…

Dolma:包含三万亿Token的语言模型预训练研究开放语料库

前言 原论文&#xff1a;Dolma: an Open Corpus of Three Trillion Tokens for Language Model Pretraining Research 摘要 关于训练当前最佳性能语言模型的预训练语料库的信息很少被讨论——商业模型很少详细说明它们的数据&#xff0c;即使是开源模型也往往在没有训练数据…

操作系统 | 学习笔记 | 王道 | 3.2 虚拟内存管理

3.2 虚拟内存管理 3.2.1 虚拟内存的基本概念 传统存储管理方式的特征 传统存储管理方式 连续分配 单一连续分配固定分区分配动态分区分配 非连续分配 基本分页存储管理基本分段存储管理基本段页式存储管理 特征&#xff1a; 一次性&#xff1a; 作业必须一次性全部装入内存后…

『网络游戏』制作提示弹窗UI【03】

将上一章的创建角色界面隐藏 创建一个空节点重命名为DynamicWnd 设置父物体为伸展 钉在中间创建一个Text文本组件 添加动画Animation组件 创建自定义动画Animation动画 点击创建 选择指定文件夹 拖拽至Animation 使用记录动画方式编辑动画首先点击红点录制 在第0帧设置文字透明…

最简单的示例:通过JDBC查询数据

引言 在现代企业级应用开发中&#xff0c;持久层框架&#xff08;如 MyBatis、Hibernate 等&#xff09;极大地简化了数据库操作&#xff0c;提高了开发效率和代码的可维护性。本文将通过一个最简单的示例&#xff0c;演示如何使用 JDBC 连接数据库、执行 SQL 语句以及处理结果…

LabVIEW技术难度最大的程序

在LabVIEW开发中&#xff0c;技术难度最大的程序通常涉及复杂的系统架构、高精度的控制要求、大量数据处理&#xff0c;以及跨平台或多硬件设备的集成。以下是几类具有高技术难度的LabVIEW程序&#xff1a; 1. 高精度实时控制系统 LabVIEW中涉及高精度实时控制的系统程序&…

金纳米星“融入”水凝胶,原位生长的奥秘,应用前景的探索

大家好&#xff01;今天来了解一项在三维水凝胶表面生长金纳米星的研究——《Growing Gold Nanostars on 3D Hydrogel Surfaces》发表于《Chemistry of Materials》。水凝胶在生物医学等诸多领域有着重要应用&#xff0c;而金纳米星具有独特的光学性质。这项研究通过原位合成的…

【含开题报告+文档+PPT+源码】基于SpringBoot的校园互助平台设计与实现【包运行成功】

开题报告 现代大学校园是一个多样化且充满活力的环境&#xff0c;拥有来自不同文化和地域的学生。然而&#xff0c;这种多样性也伴随着一系列挑战&#xff0c;包括学业压力、心理健康问题、社交挑战以及适应新环境的困难。面对这些挑战&#xff0c;学生常常感到信息获取困难和…

redis——哨兵机制

redis中提供了哨兵&#xff08;Sentinel&#xff09;机制来实现主从集群的自动故障恢复。 主从复制是实现redis高可用性的基石&#xff0c;从节点宕机时我们仍然可以将请求发送给主节点或者其他从节点&#xff0c;而当主节点宕机的时候&#xff0c;无法执行写操作&#xff0c;无…

Maven、Git

1. Maven 安装 &#xff08;2024.6.23&#xff09;最新版MAVEN的安装和配置教程&#xff08;超详细&#xff09;_maven安装-CSDN博客 2. 配置IDEA和Maven的关联 1. 单个关联 &#xff08;每新建一个项目都要配一次&#xff0c;不推荐&#xff09; 配置maven home path&#…

【Linux】文件IO系统[ 库函数 ]封装了[ 系统调用 ] +【区分文件结构体FILE和file与files_srtuct表】(读写接口盘点与介绍)

前言 大家好吖&#xff0c;欢迎来到 YY 滴Linux系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的《Lin…

Unity中实现预制体自动巡逻与攻击敌人的完整实现指南

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…