线性优化在商业决策中的应用

在当今的商业环境中,数据科学商业决策之间的桥梁至关重要。数据科学流程的结果通常是数据中的预测、模式和洞察(通常不考虑任何约束),但这对商业决策者来说还远远不够。数据科学输出必须输入到商业决策流程中,这涉及到一些优化,包括约束和决策变量,这些变量模拟了商业的关键方面。

线性优化简介

在优化技术中,使用单纯形方法的线性优化被认为是最强大的之一,并被评为20世纪十大算法之一。作为数据科学从业者,掌握线性优化的实践知识非常重要,本文旨在通过Python的PuLP包演示其实现。为了使事情更有趣且易于理解,将通过一个实际的日常问题来学习这种优化技术。需要指出的是,所学的内容也适用于各种商业问题。

假设是一家超市连锁店的经营者——数据科学流程将预测预期销售额。然后,将使用这些输入创建一个优化的库存/销售策略。

线性优化的实际应用:TED视频观看列表

TED是一个致力于传播思想的非营利组织。TED始于1984年,最初是一个技术、娱乐和设计交汇的会议,如今涵盖了几乎所有主题——从科学到商业到全球问题——超过100种语言。TED演讲由对其领域工作充满热情的专家进行,并且拥有丰富的信息。

现在,为了本文的目的,想象一下,如果有人有兴趣根据他们的约束(观看视频的时间和演讲的数量)创建他们最受欢迎TED演讲的观看列表。将看到如何实现Python程序以帮助以最优的方式创建观看列表。

代码实现步骤

PuLP是一个用Python编写的免费开源软件。它用于描述优化问题作为数学模型。PuLP可以调用众多外部LP求解器(CBC、GLPK、CPLEX、Gurobi等)来解决这个模型,然后使用Python命令来操作和显示解决方案。默认情况下,PuLP捆绑了CoinMP求解器。

从Kaggle下载包含所有TED演讲(2550个)的数据集,并读入数据框架。选择相关列的子集,结果数据集具有以下详细信息——演讲的索引、演讲的名称、TED事件名称、演讲持续时间(分钟)、观看次数(演讲受欢迎程度的代理)。

首先定义LP对象。prob变量被创建以包含问题公式。

# 创建决策变量 for index, row in data.iterrows(): decision_variables[index] = LpVariable(f"talk_{index}", cat='Binary') # 定义目标函数 objective = lpSum([decision_variables[index] * row['views'] for index in data.index]) # 定义约束 constraints = [ lpSum([decision_variables[index] * row['duration'] for index in data.index]) <= total_time, lpSum(decision_variables) <= max_talks ] # 问题公式 prob = LpProblem("TED_Talks_Optimization", LpMaximize) prob += objective # 添加约束 for constraint in constraints: prob += constraint
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485