首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有3个相关参数的Mathprog文本文件

带有3个相关参数的Mathprog文本文件
EN

Stack Overflow用户
提问于 2016-12-03 18:02:18
回答 1查看 55关注 0票数 1

我一直在尝试使用mathprog方法做一个问题,但是当我使用R来读取txt文件时,我遇到了麻烦。

我想我知道问题出在哪里,但我不知道如何解决它。

下面是完整的代码,但是当我在param a和param tc3变量中使用时,最后的问题是:

代码语言:javascript
复制
set I;
/* plants*/

set J;
/* customers*/

set T;
/* types*/

set S;
/* modes*/

param pc{i in I, s in S};
/* variable production cost */

param tc{i in I, j in J, t in T};
/* transportation cost */

param a{i in I, t in T, s in S};
/* quantity of product produced */

param b{j in J, t in T};
/* transportation cost */

var z{i in I, s in S} >= 0;
/* intensity of the plant */

var u{i in I, j in J, t in T} >= 0;
/* amount of product shipped from plant to costumer*/

minimize cost: sum{i in I, s in S} pc[i,s] * z[i,s] + sum{t in T, j in J, i in I} tc[i,j,t] * u[i,j,t];

/* production transportation problem */

s.t. first{i in I, j in J, t in T}: sum{i in I} u[i,j,t] = b[j,t];
/* First Constraint */

s.t. second{i in I, j in J, t in T, s in S}: sum{j in J} u[i,j,t] <= sum{s in S} a[i,t,s] * z[i,s];
/* Second Constraint */

s.t. third{i in I, s in S}: sum{s in S} z[i,s] <= 1;
/* Third Constraint */

s.t. fourth{i in I, s in S}: z[i,s] >= 0;
/* Fourth Constraint */

s.t. fifth{i in I, j in J, t in T}: u[i,j,t] >= 0;
/* Fifth Constraint */

data;

set I := P1 P2;

set J := C1 C2 C3 C4 C5;

set T := T1 T2 T3 T4;

set S := S1;

param pc : S1 :=
P1     5000
P2     7000;

param tc : P1T1 P1T2 P1T3 P1T4 P2T1 P2T2 P2T3 P2T4:= 
C1    10 15 10 20 10 10 12 12
C2    20 10 15 10 12 12 10 15
C3    20 15 10 10 15 10 12 18
C4    10 10 10 10 10 10 10 10
C5    5  10 15 20 20 23 21 15;

param a : S1P1 S1P2 := 
T1    50 100
T2    150 50
T3    200 80
T4    150 200;

param b : T1 T2 T3 T4 := 
C1    80 100 80 120
C2    50 100 105 100
C3    80 105 100 100
C4    80 50 15 100
C5    50  100 150 200;

end;

我将它与以下函数一起使用,以便在R中读取它:

代码语言:javascript
复制
model.lp <- Rglpk_read_file ("mathprog_file.txt", type = "MathProg", verbose = F)
EN

回答 1

Stack Overflow用户

发布于 2016-12-06 15:12:02

也许你的Rglpk运行得很好。我看到的是一些错误的数学程序语法。

在您的约束中,您声明了两次相同的索引:

代码语言:javascript
复制
s.t. first{i in I, j in J, t in T}: sum{i in I} u[i,j,t] = b[j,t];

在左约束语句中已经定义了i的同时,您还可以在sum语句中再次使用i。您可以在sum中使用不同的符号来修复此问题,如{ii in I},然后在引用u时使用适当的iii

您的三维参数的定义中也有一个错误。看看这里的例子:explanation of the datablock是一个例子,并解释了如何做到这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40946523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档