AMPL, установить 1..T не работает - PullRequest
0 голосов
/ 24 мая 2018

Функция 1..T у меня не работает, и я не знаю почему.Мой код выглядит так:

set TIME;

data;

set TIME = 1..8760 by 3;

display TIME;

Здесь я хочу, чтобы он отображал 1, 4, 7, 10 и так далее, но он просто идет 1..8760 by 3.Как я могу это исправить, чтобы мне не приходилось писать 8 760 разных чисел?

Благодарю за ответы!

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Попробуйте удалить первые две строки вашего кода.

Похоже, что формат, который вы используете для указания ВРЕМЕНИ, работает только в режиме "модель";в режиме «данных» тот же текст интерпретируется как объявление набора литералов «3», «by» и «1..8760».(Быстрый тест: если вы наберете display card(TIME);, вы получите значение 3, сообщая, что в этом наборе ровно 3 члена.)

Раздел 5.2 Книги AMPL рекомендует использоватьобъявление типа "x..y by z" в модели (с x, y, z в качестве объявленных параметров), а затем указание значений для x, y, z в данных.

Обратите внимание, что начиная с 1 и увеличивая его с шагом 3, на самом деле точно не достигнет 8760, поэтому вы можете изменить свое начало на 0 или 3 или свой конец на 8761, если вы хотите равные промежуткимежду числами.

0 голосов
/ 25 мая 2018

Я не вижу ошибок в вашем коде.Я попытался в моей AMPL IDE:

AMPL IDE

Я полагаю, что когда вы пишете «данные», то ваш код находится в файле .dat, а когда вы пишете"display" - это ваш файл .run

Что вы используете, чтобы написать свою модель ??NEOS SERVER или IDE ??

С уважением!

...