仓库选址问题【数学规划的应用(含代码)】阿里达院MindOpt

本文主要讲述使用MindOpt工具优化仓库选址的数学规划问题。
视频讲解👈👈👈👈👈👈👈👈👈

一、案例场景

image.png
仓库选址问题在现代物流和供应链管理中具有重要的应用。因为仓库的位置直接影响到货物的运输成本、交货时间和库存量等因素。
涉及的行业有:
农业的农产品的输出和分销需要适当的仓储设备,尤其对于易腐烂的农产品,像水果、蔬菜等等。在制造业中,为存放一些原料、半成品或成品,制造业需在生产基地附近或靠近市场的地方建立仓库。
零售业的零售商通常需要在城市中心或人口密集区域附近设计仓库,以便商品的快速配送。
电子商务食品行业以及医药行业等应用非常广泛。

通常考虑以下因素:运输成本,考虑与供应商和消费市场的距离;地理位置、土地成本等等。

二、数学规划

仓库选址问题也可以使用数学规划的方法。数学规划是一种数学优化方法,主要是寻找变量的取值在特定的约束情况下使我们的决策目标得到一个最大或最小值的决策。常见规划方法有线性规划、整数规划还有非线性规划。
工具:
MindOpt优化求解器:帮我们求解大规模数据的数学规划问题。

三、问题描述

某公司有很多家商店,要建造多个工厂为商店供货。不同工厂库存容量和建设成本不同,每个商店的需求和每个工厂向商店运输商品的成本也不同。如何选择最优的工厂建造方案和供货方案使得总成本最低?
hailuo_hi2242874510_RF.jpg
这个例题主要考虑了以下四点因素:
一是仓库建设成本,包括土地成本、建筑成本,以及设备成本等。在实际应用中,这个成本因素通常是已知的。因为仓库建设成本比较稳定,所以通过市场价格或预算确定。
二是库存成本,是在仓库中维护和管理存货所需成本,成本因素包括储存成本、订单处理成本,还有库存租金、保险费用等。在实际的应用中,需要调查和分析得出成本因素,以便在模型中考虑成本的影响。
三是运输成本,将货物从仓库运输到客户所需的成本,因素通常有运输距离、运输方式、运输时间、运输成本等,通常经过一定调查和分析之后得出,可通过运输网络模型、运输成本数据库或者实地考察等方式确定。
四是交通需求,是客户对货物的需求量,这个数据可通过客户的订单量、历史数据等方式获取。在实际的应用中,需要考虑客户对不同商户的需求量,以便在模型中考虑到对总成本的影响。

代码解析

使用工具:

  • MindOpt Studio 云建模平台**,**在线开发调试,免下载
  • MindOpt APL(MAPL)建模语言编程**,**代数建模语言,语法与数学公式相近

声明集合、参数

image.png
声明的集合:「PLANTS」是工厂的类型,「STORES」是拥有的商店数量。
image.png
声明的参数是每个工厂建造的成本和每个工厂的库存容量。

声明变量

image.png
在这个问题中,可以控制的决策变量是建造什么类型的工厂和由哪个工厂运输商品给哪个商店。所以声明两个二进制的决策变量,用0和1分别代表不建造不运输和建造运输两个场景,“1”表示建造工厂,“0”表示不建筑工厂。

声明目标函数

image.png
我们的决策目标是最小化成本。所以需要计算建造成本、运输成本,也就每个工厂建造的代价,以及建造的每个工厂+每个工厂运输商品到对应店的代价之和最小化。

声明约束

image.png

  1. 我们声明的约束在实际生活中,每个商店有不同工厂的选择。为了简化问题,我们假设每个商店只能选择一个工厂供货,

image.png

  1. 第二条约束是建造工厂才能提供货物给商店,由于第一条约束是每个商店只能选择一个工厂供货,所以我们需建造的工厂数量至少满足将商品提供给每个商店,也就是至少有一个工厂可以向所有的商店供货。比如A工厂,A工厂的二进制是“1”,即建造A工厂,然后A工厂提供给每一个商店的二进制状态也是“1”,也就是至少有一个工厂建造。

image.png

  1. 第三条约束是每间工厂的库存不能小于其所提供的商店需求之和,每个工厂储存的商品数量有限,一个工厂商品清空后,需要从另一个工厂运输。比如A工厂的库存是40,从A工厂运输到商店1、2、3,那么1、2、3商店需要的商品数量不能超过A工厂的库存数量。

结果解析

image.pngimage.png
我们对这个问题进行求解。最后得出的结果是最小化的总成本是1457。我们建造了一个A工厂、一个C工厂,二号商店是由A工厂供货,三号商店也是由A工厂供货。

四、内容回顾

我们本期主要讲述的是仓库选址问题,考虑仓库的建设成本、运输成本、库存成本、交货需求四个因素最小化总成本。
image.png
扫描二维码获取源代码
仓库选址规划-MindOpt Studio

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

findfont: Generic family ‘sans-serif‘ not found because none of the ...: SimHei

警告过程 python代码在使用matplotlib画图时,如果在title,xlabel,ylabel中出现了中文,则会出现字体警告,中文字符显示为方框 例如代码: # matplotlib画图# 设置色带plt.imshow(data, cmapplt.cm.YlGn) #…

【AI大模型】应用开发基础,学到就是赚到!

前言 1、了解大模型能做什么 2、整体了解大模型应用开发技术栈 3、浅尝OpenAI API的调用 AI全栈工程师:懂AI、懂编程、懂业务的超级个体,会是AGI(Artificial General Intelligence 通用人工智能)时代最重要的人。 知识体系 AI学习…

【Mybatis 与 Spring】事务相关汇总

之前分享的几篇文章可以一起看,形成一个体系 【Mybatis】一级缓存与二级缓存源码分析与自定义二级缓存 【Spring】Spring事务相关源码分析 【Mybatis】Mybatis数据源与事务源码分析 Spring与Mybaitis融合 SpringManagedTransaction: org.mybatis.spri…

Ubuntu/Linux调试安装南京来可CAN卡

准备好USB rules文件和can driver文件备用! 必做:放置USB rules文件到对应位置处理权限问题 而后:安装内核driver并编译。需求众多依赖编译环境,视情况安装填补。如GCC,G,make等等 进入对应64bit文件夹中,添加权限,执…

爬虫:爬取知乎热榜一级评论及回答2024不包含翻页

一、先上结果(注:本文仅为兴趣爱好探究,请勿进行商业利用或非法研究,负责后果自负,与作者无关) 1、爬标题及其具体内容 2、抓标题下的对应回答 3、爬取对应一级评论 二、上流程 1、获取cookies(相信哥哥姐姐…

Qt Creator创建一个用户登录界面

目录 1 界面设计 2 代码 2.1 登录界面 2.2 注册界面 2.3 登陆后的界面 3 完整资源 这里主要记录了如何使用Qt Creator创建一个用户登录界面,能够实现用户的注册和登录功能,注册的用户信息存储在了一个文件之中,在登录时可以比对登录信息…

大厂程序员上班猝死成常态?

大家好,我是瑶琴呀,拥有一头黑长直秀发的女程序员。 近日,连续看到大厂程序员猝死、低血糖晕倒的新闻,同为程序员感到很难受。互联网加班成常态这是既定事实,尤其在这个内卷严重、经济不景气的环境中,加班…

actual combat 31 —— 多级表头excel导出

设置模板占位符 &#xff08;模板占位符表头不带点&#xff0c;非表头数据行带点&#xff0c;举例{.ago}&#xff0c;{ago}&#xff09;引入easyExcel依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><v…

【深度学习】图形模型基础(1):使用潜在变量模型进行数据分析的box循环

1.绪论 探索数据背后的隐藏规律&#xff0c;这不仅是数据分析的艺术&#xff0c;更是概率模型展现其威力的舞台。在这一过程中&#xff0c;潜在变量模型尤为关键&#xff0c;它成为了数据驱动问题解决的核心引擎。潜在变量模型的基本理念在于&#xff0c;那些看似复杂、杂乱无…

uniapp加载打点点效果

uniapp加载打点点效果 背景实现思路代码实现尾巴 背景 为了增加系统的交互性&#xff0c;我们在加载数据时通常会增加一些loading动效&#xff0c;但是在某些场景下只需要一些简单文字提醒。比如说使用【加载中】或者【loading】等字段&#xff0c;但是写静态的字符又显得交互…

新手必备!短视频剪辑常用的18个技巧——剪映篇

导入素材&#xff1a;这里我们可以选择自己拍摄好的素材&#xff08;图片、视频或录制好的音频&#xff09;&#xff0c;按照顺序导入剪辑区剪辑。这一步是剪辑的基础&#xff0c;确定剪辑的大体思路与成片框架&#xff01;别忽略了&#xff0c;剪映官方素材库提供的素材&#…

Windows宝塔面板部署ThinkPHP8.0创建Vue项目案例

安装ThinkPHP8.0 登录宝塔面板&#xff0c;创建一个站点。 输入composer代码&#xff0c;执行完成后自动创建TP目录 composer create-project topthink/think tp 网站目录设置为tp&#xff0c;运行目录设置为public 设置PHP版本为8.0以上&#xff0c;不然会出现下面的报错代…

中科驭数第三代DPU芯片K2-Pro,专为数据中心打造的“六边形战士”

近日&#xff0c;中科驭数重磅发布第三代DPU芯片K2-Pro&#xff0c;是国内首颗面向量产的全功能芯片&#xff01; K2-Pro采用自主研发的Kernel Processing Unit架构&#xff0c;集网络、存储、安全及计算等多业务卸载功能于一体&#xff0c;包处理速率翻倍至80Mpps&#xff0c…

vue3+ts+vite项目报错:找不到名称“GC”。ts-plugin(2304)

GC变量通过script标签引入的第三方引入&#xff0c;但是ts-plugin并不知道&#xff0c;需要明确声明这个变量的类型 /// <reference types"vite/client" />declare module "*.vue" {import type { DefineComponent } from "vue";// eslint…

代表与民众的联系如何通过数字人大平台加强?正宇软件有方法

在数字时代的大潮中&#xff0c;数字中国建设已成为国家战略&#xff0c;数字人大平台作为战略中的组成部分&#xff0c;正逐步展现出其独特价值和重要作用。随着国家政策的引导与推动&#xff0c;数字人大平台不仅为人大代表履职提供了新工具&#xff0c;更为加强人大代表与民…

ctfshow web入门 sqli-labs web517--web524

web517 注入点id ?id-1’union select 1,2,3– 确认是否能够注入 ?id-1union select 1,database(),3-- 爆出库名 security爆出表名 ?id-1union select 1,(select group_concat(table_name) from information_schema.tables where table_schemasecurity),3-- emails,refer…

墨刀原型-单选按钮场景交互

画原型过程中&#xff0c;会遇到单选或多选的交互场景 这时就可以直接在基础组件部分&#xff0c;拉取单选按钮直接使用&#xff0c;只需要完成对应的交互事件就可实现交互 首先先说单选按钮实现交互 拉取一个单选组件&#xff0c;右侧可调整样式尺寸&#xff0c;在选项部分&…

生命在于学习——Python人工智能原理(2.5.1)

五、Python的类与继承 5.1 Python面向对象编程 在现实世界中存在各种不同形态的事物&#xff0c;这些事物之间存在各种各样的联系。在程序中使用对象来映射现实中的事物&#xff0c;使用对象之间的关系描述事物之间的联系&#xff0c;这种思想用在编程中就是面向对象编程。 …

【数据结构】线性表之《队列》超详细实现

队列 一.队列的概念及结构二.顺序队列与链队列1.顺序队列2.链队列 三.链队列的实现1.创建队列2.初始化队列3.入队4.出队5.获取队头元素6.获取队尾元素7.队列的大小8.队列的判空9.清空队列10.销毁队列 四.队列的盲区五.模块化源代码1.Queue.h2.Queue.c3.test.c 六.栈和队列必做O…

解题思路:LeetCode 第 209 题 “Minimum Size Subarray Sum“

解题思路&#xff1a;LeetCode 第 209 题 “Minimum Size Subarray Sum” 在这篇博文中&#xff0c;我们将探讨如何使用 Swift 解决 LeetCode 第 209 题 “Minimum Size Subarray Sum”。我们会讨论两种方法&#xff1a;暴力法和滑动窗口法&#xff0c;并对这两种方法的时间复…