有没有办法解码语法错误,找出它所指的位置?

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

我正在制作一个MIP,我正试图通过NEOS cplex(AMPL)运行。每次运行它,我得到相同的错误代码,即使我已经尝试找到并修复错误我得到的错误是:“amplin,第9行(偏移93):语法错误上下文:>>> {\ < << rtf1 \ ansi \ ansicpg1252 \ cocoartf1671“

我对AMPL很新,因此我有点不确定,错误代码意味着什么。我的代码分为模型文件和数据文件,两者都写为.txt文件。我似乎找不到错误。模型:

# Parameters
    param m;
    param n;
    param T;
    param sigma{t in 1..T};
    param capacity{j in 1..m};
    param demand{i in 1..n};
    param cost{i in 1..n, j in 1..m};
    param holding;
    param InInv{j in 1..m};


# Decision variables
    var x{i in 1..n, j in 1..m} binary;
    var Produced{j in 1..m, t in 1..T} integer <= capacity[j] >= 0;
    var sold{j in 1..m, t in 1..T} integer >= 0;
    var inventory{j in 1..m, t in 0..T} integer >= 0;

# Objective function
    minimize TotalCost: sum{i in 1..n, j in 1..m} x[i,j]*cost[i,j] + sum{j in 1..m, t in 1..T}holding * inventory[j,t];

# Constraints
    subject to BalanceInventory {j in 1..m, t in 1..T}:
        Produced[j,t]+inventory[j,t-1]=sold[j,t]+inventory[j,t];

    subject to SingleSourcing {i in 1..n}:
        sum{j in 1..m} x[i,j] = 1;

    subject to InitInv {j in 1..m}:
        inventory[j,0]=InInv[j];

数据:

#Parameters
param m := 4;

param n := 30;

param T := 6;

param sigma := 1 0.125 2 0.125 3 0.25 4 0.125 5 0.125 6 0.25;

param capacity := 1 375  2 375  3 375  4 375;

param demand := 1 200 2 492 3 91 4 190 5 351 6 323 7 23 8 157 9 374 10 351 11 432 12 161 13 300 14 300 15 219 16 339 17 312 18 653 19 440 20 207 21 281 22 233 23 409 24 215 25 7 26 680 27 215 28 395 29 165 30 333;

param cost :
1 2 3 4 :=
1 6.97 3.47 1.73 4.34
2 9.67 3.05 2.78 6.89
3 4.01 4.33 7.2 8.67
4 3.97 5.33 4.75 4.47
5 5.91 5.98 3.6 2.42
6 9.49 6.14 1.67 3.28
7 6.03 3.60 7.53 9.83
8 6.12 6.13 3.57 2.17
9 2.48 7.22 6.9 5.66
10 8.41 3.41 1.11 5.07
11 2.34 5.47 6.32 8.08
12 6.97 5.22 2.15 2.59
13 4.51 3.43 6.32 8.08
14 8.63 8.46 4.63 0.69
15 3.57 4.06 6.01 7.18
16 8.05 4.06 8.48 11.35
17 10.36 5.38 1.77 5.19
18 0.89 8.38 9.5 8.87
19 7.04 1.11 5.39 8.4
20 0.99 6.88 8.33 8.28
21 0.59 7.22 8.49 8.24
22 7 1.34 3.36 6.48
23 2.88 5.28 7.59 8.5
24 8.32 0.73 4.4 8.01
25 6.85 1.41 3.4 6.43
26 4.09 7.19 5.88 4.06
27 8.48 1.38 3.5 7.26
28 1.02 8.47 9.05 8.03
29 6.14 2.39 6.3 8.83
30 9.07 6.23 1.83 2.7;

param holding := 1;

param InInv := 1 0 2 0 3 0 4 0;

所以,如果有人能帮助我指导我解决错误,那么我可以解决它,我真的很感激。

真诚的绝望的新编码器。

syntax-error ampl
1个回答
0
投票

您可以尝试安装size-limited demonstration version of AMPL,根据需要减小问题大小以适应该版本的限制,并使用它来测试您的代码。

这将有助于确定问题是在您的语法中,还是与您使用NEOS的方式有关。正如@melpomene所建议的那样,您发送的文件也可能不是预期的格式,因此请尝试将其传递给纯文本编辑器,例如: AMPL IDE的编辑器。

根据我的经验,调试NEOS运行可能令人沮丧,因此最好在本地系统上进行尽可能多的调试,以获得更多反馈。

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