Есть ли способ расшифровать синтаксическую ошибку, чтобы узнать, на что она ссылается?

Я делаю MIP, который пытаюсь запустить через NEOS cplex (AMPL). Каждый раз, когда я запускаю его, я получаю один и тот же код ошибки, даже если я пытался найти и исправить ошибку. Я получаю следующую ошибку: "ampin, строка 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;

Так что, если кто-нибудь может помочь мне направить меня к ошибке, чтобы я мог ее исправить, я был бы очень признателен.

Искренне отчаянный новый программист.


person Emil Zacharias Persson    schedule 30.03.2019    source источник
comment
Похоже, ваш код - это не простой текст, а RTF.   -  person melpomene    schedule 31.03.2019


Ответы (1)


Вы можете попробовать установить демонстрационную версию AMPL с ограниченным размером, уменьшение размера проблемы по мере необходимости, чтобы соответствовать ограничениям этой версии, и использование этого для тестирования вашего кода.

Это поможет определить, связана ли проблема с вашим синтаксисом или с тем, как вы используете NEOS. Как было предложено @melpomene, также возможно, что файл, который вы отправляете, находится не в ожидаемом формате, поэтому попробуйте передать его через текстовый редактор, например. редактор AMPL IDE.

По моему опыту, отладка запусков NEOS может вызывать разочарование, поэтому лучше всего выполнять как можно больше отладки в локальной системе, где вы можете получить немного больше отзывов.

person Geoffrey Brent    schedule 30.03.2019
comment
Проблема заключалась в том, что формат файла был не того формата, о котором я думал. Спасибо за помощь. - person Emil Zacharias Persson; 31.03.2019