运筹学工程化流程和常见的运筹学算法分类以及常见软件
文章目录
- 前言
- 运筹学工程化流程
- 运筹学算法分类
- 运筹学软件
- 参考文献
前言
自2023年初新冠疫情管控放开后,各家公司各类岗位的人员都有被裁的消息传出,但用人市场上运筹学算法岗位却反其道行之,用工出现了激增。可以预见的是数据算法将从传统的机器学习算法转变到运筹学算法这一块来,这跟大环境不无关系,疫情三年,亏损的亏损,破产的破产,能够活下来的公司都在降本增效,各种成本,包括人力成本,运营成本,维护成本等高筑,企业急需一套能够将这些成本有效控制的方法,而运筹学就是一块能够将这些成本降低又能够提升效益的敲门砖,所以,运筹学算法岗位如雨后春笋出现也好理解。
运筹学工程化流程
运筹学的生产应用符合一般学科知识的工程化应用流程,但又有自身的一些特点,具体来说可以分为以下几个环节。
-
明确需求,界定目标任务,设定目标函数;
明确客户的需求,将需求解读分解成若干个子模块,界定每个子模块的目标任务,各个模块之间的接承前启后的关系,同时确定各个模块中的目标任务由哪些变量构成,不同变量之间的组成关系,设定目标函数。 -
理清变量关系,构建约束条件;
理清不同变量之间的逻辑关系,不同变量的界限,不同变量组合后的界限和其他要求条件,从而构建约束条件; -
确定模型的求解方案,包括程序设计和调试开发;
-
模型检验和评价作答;
-
包括检验模型的一致性、灵敏度、似然性和工程能力,并用试验数据来评价模型的解的优劣。一致性是指主要参数变动时(尤其是变到极值时)模型得出的结果是否合理;灵敏度是指输入发生微小变化时输出变化的相对大小是否合适;似然性是指对于真实数据的案例,模型是否适应;工程能力则是指模型是否容易解出,即在规定时间内算出所需的结果。
-
模型迭代升级,在对模型结果充分评估后将模型输出的方案实施应用去解决实际问题,并在方案实施过程中发现新的问题和不断进行优化,不断提升模型的泛化能力和稳健性。
运筹学算法分类
运筹学的算法模型分类众多,所依据也众多,具体的
根据目标函数和约束函数都是否为线性可分为:线性规划问题(Linear programming)和非线性规划问题(Non-linear programming)
根据是否有约束条件可分为:约束规划(constrained programming)和无约束规划(unconstrained programming)
根据决策变量类型可分为:动态规划(dynamic programming)、随机规划(stochastic programming)、几何规划(geometric programming)、整数规划(Integer programming)、混合整数规划(mixed integer programming)、二次规划(quadratic programming)、分离规划(separable programming)
根据实际的决策过程是否随时间而变化可以分为:分析中将决策变量分阶段并需要包含时间参量集为动态规划(Dynamic Programming);否则为静态规划(Static Programming)。
根据目标函数的寡众分为:多目标规划(multi-objective programming)、和多层规划(multi-level programming)
其他分类还包括:模糊规划(fuzzy)、进化计算(遗传、模因算法、差分进化、进化策略)、群智能算法(蚁群算法、粒子群算法、人工鱼群算法)
运筹学软件
俗话说得好,工欲善其事必先利其器,恰当的软件可以让你如鱼得水,事半功倍。运筹学常用的软件梳理如下
- Excel
Excel求解线性规划、整数规划等需要用到Solver工具包,Excel自带,免费使用。如果想要更强大的工具包,可以考虑其付费升级版Analytic Solver for Excel - solver。
- CPLEX
CPLEX是IBM出品的一款运筹优化工具包,商用优化软件,有免费的社区版。该工具继承了IBM软件的一贯的功能强大、使用复杂的特点。CPLEX算是业界标准,很多公司都会要求会用CPLEX的人优先录用。CPLEX除了集成开发环境外,还有Python接口,可以在Python里面直接调用,文档资料相对缺少一些。
- Gurobi
gurobi是由美国Gurobi公司开发的新一代大规模数学规划优化器,有着非常出色的优化速度和精度,商用优化软件,提供Python API。
- Lingo
LINGO是Linear Interactive and General Optimizer的缩写,即“交互式的线性和通用优化求解器”,由美国LINDO系统公司(Lindo System Inc.)推出的,可以用于求解非线性规划,也可以用于一些线性和非线性方程组的求解等,功能十分强大,是求解优化模型的最佳选择。其特色在于内置建模语言,提供十几个内部函数,可以允许决策变量是整数(即整数规划,包括 0-1 整数规划),方便灵活,而且执行速度非常快。能方便与EXCEL,数据库等其他软件交换数据。
- python
python是一门脚本语言,主要依赖于一些专门的第三方模块,这里重点推荐SciPy,Pyomo,ortoolpy,pulp,cvxpy。
参考文献
1,最优化问题及其分类——决策变量、目标函数、约束条件
https://blog.csdn.net/Neurant/article/details/123797847
2,运筹学的基本定义、分类
https://zhuanlan.zhihu.com/p/332260423
3,常用运筹学软件整理
https://www.likecs.com/show-204569276.html
4,即时配送的订单分配策略:从建模和优化播
https://mbd.baidu.com/newspage/data/landingsuper?pageType=1&isBdboxFrom=1&urlext=%7B%22cuid%22%3A%2208vn8lP128gKaSib0uBj8j8c-il6av8rguH38giPvtgoaSfS_PvOultsHalPt3O09IWmA%22%7D&sid_for_share&context=%7B%22nid%22%3A%22news_10078507902386218890%22%7D
相关文章:
运筹学工程化流程和常见的运筹学算法分类以及常见软件
文章目录 前言运筹学工程化流程运筹学算法分类运筹学软件参考文献 前言 自2023年初新冠疫情管控放开后,各家公司各类岗位的人员都有被裁的消息传出,但用人市场上运筹学算法岗位却反其道行之,用工出现了激增。可以预见的是数据算法将从传统的…...

JAVA面向对象(三)
第三章 封装与继承 目录 第三章 封装与继承 1.1.封装 1.2.包 1.3.访问权限控制 1.4.static修饰符 1.4.1.成员变量 1.4.2.成员方法 1.4.3.代码块 总结 内容仅供学习交流,如有问题请留言或私信!!!!࿰…...
前端面试题---跨域处理和异常、错误处理
一.跨域处理 在前端开发中,当我们在浏览器中向不同域名或端口发起请求时,就会遇到跨域请求的限制。为了处理跨域请求,有几种常见的方法 1.JSONP(JSON with Padding) JSONP是一种利用 <script> 标签可以跨域加载…...

网络安全之反序列化漏洞分析
简介 FastJson 是 alibaba 的一款开源 JSON 解析库,可用于将 Java 对象转换为其 JSON 表示形式,也可以用于将 JSON 字符串转换为等效的 Java 对象分别通过toJSONString和parseObject/parse来实现序列化和反序列化。 使用 对于序列化的方法toJSONStrin…...
19 贝叶斯线性回归
文章目录 19 贝叶斯线性回归19.1 频率派线性回归19.2 Bayesian Method19.2.1 Inference问题19.2.2 Prediction问题 19 贝叶斯线性回归 19.1 频率派线性回归 数据与模型: 样本: { ( x i , y i ) } i 1 N , x i ∈ R p , y i ∈ R p {\lbrace (x_i, y_…...

第七十天学习记录:高等数学:微分(宋浩板书)
微分的定义 基本微分公式与法则 复合函数的微分 微分的几何意义 微分在近似计算中应用 sin(xy) sin(x)cos(y) cos(x)sin(y)可以用三角形的几何图形来进行证明。 假设在一个单位圆上,点A(x,y)的坐标为(x,y),点B(x’, y’)的坐标为(x’, y’)。则以两点…...

Jmeter
目录 一、jmeter 安装 二、jmeter 介绍 1、jmeter是什么? 2、jmeter 用来做什么? 3、优点 4、缺点 5、jmeter 目录介绍 ①_bin 目录介绍 ② docs 目录 — — 接口文档目录 ③ extras目录 — — 扩展插件目录 ④ lib 目录 — — 所用到的插件目录 ⑤ lic…...
Flutter 学习 之 时间转换工具类
Flutter 学习之时间转换工具类 在 Flutter 应用程序开发中,处理时间戳是非常常见的需求。我们通常需要将时间戳转换为人类可读的日期时间格式。为了实现这一点,我们可以创建一个时间转换工具类。 实现方法 以下是一个简单的时间转换工具类的示例&…...

docker consul
docker consul的容器服务更新与发现 服务注册与发现是微服务架构中不可或缺的重要组件,起始服务都是单节点的,不保障高可用性,也不考虑服务的承载压力,服务之间调用单纯的通过接口访问的,直到后来出现多个节点的分布式…...

全志V3S嵌入式驱动开发(开发环境再升级)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们陆陆续续开发了差不多有10个驱动,涉及到网口、串口、音频和视频等几个方面。但是整个开发的效率还是比较低的。每次开发调试的…...
ChatGPT:人工智能助手的新时代
ChatGPT:人工智能助手的新时代 文章目录 ChatGPT:人工智能助手的新时代引言ChatGPT的原理GPT-3.5架构概述预训练和微调过程生成式对话生成技术 ChatGPT的应用场景智能助理客服机器人虚拟角色教育辅助创意生成个性化推荐 ChatGPT的优势ChatGPT的使用技巧与…...
【面试】二、Java补充知识
JVM中的存储 JVM的五块存储区: 方法区(线程共享) 方法区用来存储类的各种信息(类名、方法信息等)、静态变量、常量和编译后的代码也存储在方法区中 方法区中也存在运行时常量池 常量池中会存放程序运行时生成的各种…...
LISTENER、TNSNAMES和SQLNET配置文件
LISTENER、TNSNAMES和SQLNET配置文件 用户连接验证listener.ora文件配置监听日志local_listener参数 tnsnames.ora文件配置 sqlnet.ora文件配置 用户连接验证 Oracle数据库中用户有三种常见的登录验证方式: 通过操作系统用户验证:必须是在数据库服务器…...

【Leetcode -225.用队列实现栈 -232.用栈实现队列】
Leetcode Leetcode -225.用队列实现栈Leetcode -232.用栈实现队列 Leetcode -225.用队列实现栈 题目:仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 …...

悟道3.0全面开源!LeCun VS Max 智源大会最新演讲
夕小瑶科技说 原创 作者 | 小戏 2023 年智源大会如期召开! 这场汇集了 Geoffery Hinton、Yann LeCun、姚期智、Joseph Sifakis、Sam Altman、Russell 等一众几乎是 AI 领域学界业界“半壁江山”的大佬们的学术盛会,聚焦 AI 领域的前沿问题,…...

2023蓝桥杯大学A组C++决赛游记+个人题解
Day0 发烧了一晚上没睡着,感觉鼻子被打火机烧烤一样难受,心情烦躁 早上6点起来吃了个早饭,思考能力完全丧失了,开始看此花亭奇谭 看了六集,准备复习数据结构考试,然后秒睡 一睁眼就是下午2点了 挂了个…...

wkhtmltopdf踩坑记录
1. 不支持writing-mode。 需求是文字纵向排列,内容从左到右,本来用的是writing-mode: tb-rl;,插件转pdf后发现失效。 解决方法: 让每一列文字单独用一个div容器包裹,对它的宽度进行限制,控制每一行只能出现…...
贪心算法part2 | ● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II
文章目录 122.买卖股票的最佳时机II思路思路代码官方题解困难 55. 跳跃游戏思路思路代码官方题解代码困难 45.跳跃游戏II思路思路代码困难 今日收获 122.买卖股票的最佳时机II 122.买卖股票的最佳时机II 思路 局部最优:将当天价格和前一天比较,价格涨…...

[C++]异常笔记
我不怕练过一万种腿法的对手,就怕将一种腿法 练一万次的对手。 什么是C的异常 在C中,异常处理通常使用try-catch块来实现。try块用于包含可能会抛出异常的代码,而catch块用于捕获并处理异常。当异常被抛出时,程序会跳过try块中未执行…...

浅谈一级机电管道设计中的压力与介质温度
管道设计是工程设计中的一个非常重要的部分,管道的设计需要考虑到许多因素,其中就包括管道设计压力分类和介质温度分类。这两个因素是在设计管道时必须非常严格考虑的, 首先是管道设计压力分类。在管道设计中,根据工作要求和要传输…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...

如何在Windows本机安装Python并确保与Python.NET兼容
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)
引言 在嵌入式系统中,用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例,介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单,执行相应操作,并提供平滑的滚动动画效果。 本文设计了一个…...

负载均衡器》》LVS、Nginx、HAproxy 区别
虚拟主机 先4,后7...