CPLEX OPL海量代码错误

问题描述 投票:0回答:2

我使用IBM ILOG CPLEX Optimization Studio来运行MILProblem,但是使用了大量代码时出错了。在我按下运行按钮之前,文件编辑器没有发出任何错误警报。

错误是

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

由于这样的错误,我真的不知道如何google它。这是.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;
cplex opl
2个回答
0
投票

。那

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

和.mod

你还需要一些修复。

例如试试

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

当你需要使用t-1时。

问候


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.