npm 包 simple-simplex 使用教程

阅读时长 4 分钟读完

简介

simple-simplex 是一个 JavaScript 实现的线性规划(Linear Programming)库,可以通过 npm 安装使用。它支持标准形式和松弛形式的线性规划问题。本文将详细介绍如何使用 simple-simplex 解决线性规划问题。

安装

安装 simple-simplex 可以使用 npm,命令如下:

使用

基本用法

假设我们要求解以下线性规划问题:

我们可以使用 simple-simplex 来求解。

-- -------------------- ---- -------
----- ------- - --------------------------

----- ------- - -
  --------- --- ---
  ---------- -
    --- -- ----- ----
    --- -- ----- ----
    --- -- ----- ---
    --- -- ----- ---
  --
--

----- ------ - -----------------
--------------------

代码运行的结果是:

其中 feasible 表示问题是否可行,result 表示问题的最优解,variables 表示每个变量的取值。

参数

simplex 函数的参数为一个对象,其中包括以下属性:

  • maximize (Array<number>): 要最大化的目标函数系数数组。
  • minimize (Array<number>): 要最小化的目标函数系数数组。
  • subjectTo (Array<Array<number|string>>): 约束条件数组,每个约束条件是一个子数组,数组元素依次为变量系数、不等式符号('<=' 或 '>=')、约束值。
  • bounds (Array<Array<number>>): 变量的取值范围数组,每个变量的范围是一个子数组,数组元素依次为变量最小值和最大值。
  • ints (Array<number>): 整数变量数组,对其进行整数规划。
  • method (string): 采用的算法,可选值为 'simplex' 或 'dual',默认 'simplex'。

其中,maximize 和 minimize 属性不可以同时使用。

案例:生产计划

我们现在有两种设备可供选择,分别可以生产产品 A 和产品 B。生产一个单位 A 和一个单位 B 需要分别消耗 2 和 4 个零件。生产一个单位 A 可以获得 120 的利润,而生产一个单位 B 可以获得 150 的利润。每个工时可以获得 20 元,而生产一个单位 A 和一个单位 B 分别需要花费 5 和 8 个工时。设备 A 可以每周可用 100 个工时,而设备 B 可以每周可用 60 个工时。生产计划是将工时最大化,问应该如何分配生产任务。我们可以使用 simple-simplex 来求解。

-- -------------------- ---- -------
----- ------- - --------------------------

----- ------- - -
  --------- ---- ----
  ---------- -
    --- -- ----- -----
    --- -- ----- ----
    --- -- ----- ---
    --- -- ----- ---
  --
--

----- ------ - -----------------
--------------------

代码运行的结果是:

表示最佳的生产计划是生产 20 个单位 A 和 20 个单位 B,每周用掉了 100 个工时。

总结

simple-simplex 提供了方便易用的线性规划求解方法,明确的参数和返回值可以让开发者更快上手。希望本文能为大家提供帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055eb281e8991b448dc537

纠错
反馈