0

我使用IBM ILOG CPLEX Optimization Studio运行 MILProblem,但遇到大量代码错误。在我按下运行按钮之前,文件编辑器不会警告任何错误。

错误是

ÔËÐÐÅäÖá°option 1¡±²»´æÔڡ£          unknown OPL

作为这样的错误,我真的不知道如何谷歌它。这是 .mod 和 .dat 文件。

.mod 文件

    {string} prd = ...;
int NP = ...;//number of periods
range T = 0..NP;
int Inventory[prd] = ...;
int purchase[prd] = ...;

int sl = ...;
int sm = ...;
float cl = ...;
float cm = ...;
float hR = ...;
float hI = ...;
float cB = ...;
int demand[prd][1..NP] = ...;
int buy[prd][T] = ...;
int inv[prd][T] = ...;
int u[prd] = ...;
int lb = ...;
int ubl = ...;
int ubm = ...;

dvar int+ Y[prd][T];
dvar int+ X[prd][T];
dvar int+ raw[prd][T];
dvar int+ backlog[prd][T];
dvar boolean L[prd][T];
dvar boolean M[prd][T];


minimize
    sum(p in prd, t in T)
        (sl*L[p][t] + sm*M[p][t] + cl*Y[p][t] + cm*X[p][t] + 
        hR*raw[p][t] + hI*inv[p][t] + cB*backlog[p][t]);

subject to {
    forall(p in prd, t in T)
        ctraw:
            raw[p][t] + (X[p][t] + Y[p][t])*u[p] == buy[p][t] + raw[p][t-1] ;
    forall(p in prd, t in T)
        ctInventory:
            inv[p][t] + buy[p][t-1] + demand[p][t] == X[p][t] + Y[p][t] + inv[p][t-1] + buy[p][t] ;
    forall(p in prd, t in T)
      ctYub:
        Y[p][t] <= ubl*L[p][t];
    forall(p in prd, t in T)
      ctYlb:
        Y[p][t] >= lb*L[p][t];
    forall(p in prd, t in T)
      ctXub:
        X[p][t] <= ubm*M[p][t];
    forall(p in prd, t in T)
      ctYcapacity:
        sum(p in prd)
          Y[p][t] <= ubl;
    forall(p in prd, t in T)
      ctXcapacity:
        sum(p in prd)
            X[p][t] <= ubm;
    forall( p in prd )
      ctInitialInventory:
        inv[p][0] == Inventory[p]; inv[prd][0]
    forall( p in prd )
      ctInitialBuy:
        buy[p][0] == purchase[p];
};

.dat 文件

    prd = {A B C D E F G H I};
NP = 52;
demand = #[
...
]#;

buy = #[
...
]#;

Inventory = #[0 0 0 0 0 0 0 0 0]#;
purchase = #[2900 500 2400 900 500 30 800 20 150]#;
u = #[0.09 0.09 0.09 0.09 0.09 0.05 0.09 0.09 0.09]#;
sl = 1500;
sm = 500;
cl = 0.225;
cm = 0.5;
hR = 0.05;
hI = 0.01;
cB = 0.1;
lb = 1000;
ubl = 8000;
ubm = 2500;
4

2 回答 2

0

如果您使用的是中文版 Studio,请尝试将所有内容设置为英文,包括文件名、配置名和目录。工作室中有几个编码问题。

于 2018-09-04T16:06:38.867 回答
0

.dat

demand = [];
buy = [];
inv=[];

和 .mod

你还需要一些修复。

例如尝试

forall(p in prd, t in T:t-1 in T) 

当你需要使用 t-1.

问候

于 2016-04-13T11:45:58.900 回答