根据前面的介绍,我们已经了解线性规划问题的建模和求解方法。本文简单讨论一下如何把这些能力应用到实际中去。

建模

在章节 建模基础 中,我们介绍了数学规划问题的写法。简单来说,给定一个优化问题。可以按照标准的步骤,得到下面的形式。

$$ \begin{aligned} \min ~ c^Tx \\ \text{s.t. } Ax = b\\ x \geq 0 \end{aligned} $$

其中 $A, b, c$ 问题的输入参数, $x$ 是要求解的变量。有些情况下,要求变量是整数,对应的问题称为整数规划问题。

求解

给定一个线性规划,可以用 单纯形法内点法 求它的最优解。如果是整数规划,可以用分支定界或者 割平面法 求解。

在实际应用中,我们没必要从头实现这些算法。可以调用开源求解器 OR-Tools 或者商用求解器 Gurobi 等。

从技术层面讲,具备了建模和求解这两个能力,就可以用来解实际问题,从而创造商业价值。例如,在企业的生产运营中,通过求解模型,计算出最小的成本,或者最大的利润。

交付

在实际应用中,还有一个重要因素考虑。就是如何交付计算结果。或者说,用户如何去使用这些能力。

有三种常用的交付方式。

  • 代码:把模型和求解能力封装成软件包(Software Develop Kit - SDK)。这是最直接的方式。但有个缺点,就是要求用户具备编程能力,而且会配置相应的开发环境。
  • 服务:把模型和求解能力封装成网络服务(Web Service)。用户可以基于 http 协议调用网络服务。这样做的好处是可以跨语言调用。简单来说,如果把 Python 代码封装成网络服务,其他语言例如 java 可以通过这个网络服务来使用对应的功能。
  • 产品:把模型和求解能力封装成产品(Software Product),例如网页、APP、小程序。软件产品就有交互界面,通过交互的方式,可以降低应用成本。这样一来,即使用户不懂编程,也能让模型发挥价值。降低用户的使用门槛,这一点在实际应用中非常重要。

从使用门槛上看,产品使用门槛最低,其次是服务,最后是代码。但是从开发成本上看,代码是最低,其次是服务,最后是产品。在实际应用中,还要注意平衡用户体验和开发成本。

Last updated 26 May 2025, 11:35 +0800 . history