【问题标题】:Is there a way to decode the syntax error, to find out where it is referring to?有没有办法解码语法错误,找出它指的是哪里?
【发布时间】:2019-03-30 15:56:59
【问题描述】:

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

我对 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;

因此,如果有人可以帮助我引导我解决错误,以便我可以修复它,我将不胜感激。

真诚的,一个绝望的新程序员。

【问题讨论】:

  • 听起来你的代码不是纯文本,而是RTF

标签: syntax-error ampl


【解决方案1】:

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

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

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

【讨论】:

  • 问题是,该文件不是我认为的格式。感谢您的帮助。
猜你喜欢
  • 2020-12-13
  • 1970-01-01
  • 2021-05-25
  • 2017-09-24
  • 1970-01-01
  • 1970-01-01
  • 2021-10-21
  • 2020-11-24
相关资源
最近更新 更多