r - 具有过程限制的线性规划运输优化

标签 r restriction linear-programming glpk

我正在尝试使用 GLPK 或 R 中的优化(最小化运输成本)来解决典型的运输问题。

一个简单的案例:位于 2 个省份(A 和 B)的 4 家生产商正在向位于其他地方的两家导出商交付产品。我有每个路线生产商-导出商的成本矩阵(见下文)。这个解决方案很简单,这是交通问题的典型例子。

示例:

production (id, province, tons)
            1  A      300
            2  A      800
            3  B      800
            4  B     1200

    export (id, sourcing_province, tons)
            5  A      400
            5  B      600
            6        2000

    routes (id_orig, id_dest, cost) 
               1  5  5.1
               1  6  3.2
               2  5  6.7
               2  6  7.2
               3  5  2.8
               3  6  4.1
               4  5  6.9
               4  6  5.3

但是,存在额外的限制,使问题变得更加复杂:我知道导出商 (5) 实际上从每个省采购一定的固定数量。特别是在上面的示例中,导出商 (5) 必须从 A 省采购 400 Tn,从 B 省采购 600 Tn。导出商 (6) 没有限制,他可以从任何省份采购 cargo 。我找不到表达这些限制的方法。

你能帮我一下吗?

最佳答案

您可以从边缘角度考虑您的问题。如果 1、2、3、4 是生产商,5,6 是导出商,则假设 e15 是从生产商 1 到导出商 5 的流量,e25 是从生产商 2 到导出商 5 的流量,依此类推。

使用这种表示法,问题就变成了:

/* Objective function */
min: 5.1 e15 + 3.2 e16 + 6.7 e25 + 7.2 e26 + 2.8 e35 + 4.1 e36 + 6.9 e45 + 5.3 e46;

/* production limits */
e15 + e16 <= 300;
e25 + e26 <= 800;
e35 + e36 <= 800;
e45 + e46 <= 1200;

/* demand */
e15 + e25 + e35 + e45 >= 1000;
e16 + e26 + e36 + e46 >= 2000;

/* exporter 5 restrictions   */
e15 + e25 >= 400;
e35 + e45 >= 600;

最后两个不等式是固定金额约束。

您可以使用LpSolve对于这个问题。还有一个用于此目的的 R 包 lpsolveAPI。上面的问题表述已经采用 LP 格式。

关于r - 具有过程限制的线性规划运输优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21768954/

相关文章:

java - Eclipse 3.5.1 编译器错误 :The type OutputFormat is not accessible due to restriction on required library . ./rt.jar

R 如何使用 ggplot 强调 x Axis ?

html - 在 R 中抓取 html 表及其 href 链接

Java代码需要限制用户输入

algorithm - 我如何有效地找到这个约束系统中变量的最小值和最大值?

java - 获取CPLEX中线性规划的所有极值点

c++ - SCIP:捕获到 'node infeasibility' 事件后如何解析 LP,

r - glm eval 中的错误(family$initialize): y values must be 0 <= y <= 1 BUT values ARE 0 and 1

R 使用第二个 tibble 中的数据作为行和列更新 tibble

owl - 在Protege中添加限制