Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Ввод из файлов с помощью @FILE

Другие функции | Пример для Windows | Доступ к элементам множества — функция @FOR | Использование других функций поэлементной обработки множеств с условиями | Плотное производное множество: TRAN.LNG | Разреженное производное множество — пример 2 | Условие принадлежности элементов множеству — Пример 1 | Условие принадлежности элементов множеству — Пример 2 | Обобщенные целочисленные переменные | Бинарные целые переменные |


Читайте также:
  1. Flash Film Works выполняет композитинг фильма «Шпион» с помощью Fusion Studio
  2. II. Разработка веб-страниц с помощью Publisher 2003.
  3. XVII. Укажите номера предложений в которых –ing-форма переводится на русский язык с помощью слова «будучи» и страдательного причастия.
  4. АКТИВАЦИЯ Windows 7 VL/Enterprise/Professional/Professional N С ПОМОЩЬЮ КОМАНДНОЙ СТРОКИ
  5. Аппроксимация экспериментальных данных с помощью встроенных функций
  6. Архитектура информационной системы организованной с помощью БД.
  7. Б. Удаление остатков плодного яйца с помощью кюретки.

 

Функция @FILE в LINGO позволяет строить текущую модель, используя текст или данные из других файлов. Эти файлы известны как включаемые (included) файлы.

Если LINGO встречает оператор

@FILE(имя_файла);

 

в процессе выполнения модели, программа начинает читать текст из файла, имя которого указанно в качестве аргумента. Чтение продолжается до тех пор, пока не встретится либо символ «конец файла» либо символ (~), означающий в LINGO «конец записи». В случае последовательных обращений к функции @FILE (имя _ файла) в одной и той же модели, LINGO возобновляет чтение с того места, где оно было остановлено в предыдущем обращении к файлу. Хотя модель может брать данные из любых файлов, вложенные вызовы (вызов функции @FILE из файла, который был сам вызван функцией @FILE) не допускаются.

Следующая модель (вариант стандартной транспортной задач с именем TRAN.LNG из поддиректории SAMPLES) иллюстрирует использование функции @FILE для импортирования данных из файла TDATA.LDT в строках 8, 9 и 28-30.

 

MODEL:

1]

2]! Стандартная транспортная задача с «плотным» множеством;

3]

4] SETS:

5]! Все вводимые данные, определенные в задаче

6] берутся из файла TDATA.LDT; Каждый

7]! поставщик имеет запас CAP, каждый получатель имеет потребность DEM;

8] ORIGINS / @FILE(TDATA.LDT)/: CAP;

9] SINKS / @FILE(TDATA.LDT)/: DEM;

10]! Для каждой комбинации поставщик-получатель

11] заданы затраты CST и объем перевозок VOL, подлежащий определению;

12] LINKS(ORIGINS, SINKS): CST, VOL;

13] ENDSETS

14]

15]! Целевая функция;

16] [COST] MIN = @SUM (LINKS: CST * VOL);

17]

18]! Ограничения, исходя из потребностей;

19] @FOR(SINKS(J): [DEMAND]

20] @SUM(ORIGINS(I): VOL(I, J)) > DEM(J));

21]

22]! Ограничения поставщиков;

23] @FOR(ORIGINS(I): [SUPPLY]

24] @SUM(SINKS(J): VOL(I, J)) < CAP(I));

25]

26]! Параметры;

27] DATA:

28] CAP = @FILE(TDATA.LDT);

29] DEM = @FILE(TDATA.LDT);

30] CST = @FILE(TDATA.LDT);

31]

32] ENDDATA

END

 

Конкретный вариант транспортной задачи описывается данными в файле TDATA.LDT:

 

! Имена складов-поставщиков;

WH1, WH2, WH3~

! Имена получателей;

C1, C2, C3, C4~

! Запасы;

30, 25, 21~

! Потребности;

15, 17, 22, 12~

! Матрица транспортных затрат;

6, 2, 6, 7,

4, 9, 5, 3,

8, 8, 1, 5

Секции этого включаемого файла между метками «конца записи» (~) (равно как и между началом и первой меткой «конца записи» и между последней меткой «конца записи» и концом файла) называются записями. Если во включаемом файле нет меток «конца записи», то LINGO читает весь файл целиком как одну запись.

Заметим, что все — текст и данные, кроме самой метки конца записи, — появляется в модели так, как будто они являются частью ее самой.

Также отметим, как работает метка конца записи, по мере того, как функция @FILE вызывается в модели. Первый вызов @FILE(TDATA.LDT) в строке 8 открывает файл TDATA.LDT и включает в модель первую запись. Второй вызов в строке 9 включает в модель вторую запись и т.д.

Последняя запись в файле не требует метки конца записи. Когда LINGO встречает символ конца файла, он закрывает файл. Если вы завершите последнюю запись во включаемом файле меткой конца записи, LINGO не закроет файл, пока идет процесс решения задачи. Это может привести к некоторым проблемам в моделях, читающих данных из нескольких файлов, поскольку открытые файлы могут приводить к превышению машинно-зависимого предела открытых файлов.

Представляйте себе функцию @FILE следующим образом: во-первых, определите запись, к которой обращается конкретный вызов @FILE. Затем представьте содержимое записи (за исключением метки конца записи) заменяющим в модели слова “@FILE(имя_файла)”. Таким образом, вы можете включать целый оператор, часть оператора или целую серию операторов из записи. Посмотрим, например, на вызовы функции @FILE в строках

8] ORIGINS / @FILE(TDATA.LDT)/: CAP;

9] SINKS / @FILE(TDATA.LDT)/: DEM;

выше приведенной модели. Также посмотрите на две записи

 

! Имена складов-поставщиков;

WH1, WH2, WH3~

! Имена получателей;

C1, C2, C3, C4~

… во включаемом файле. Эти записи соответствуют указанным вызовам @FILE.

Результатом этих вызовов будет преобразование операторов модели к следующему виду

 

8] ORIGINS / WH1, WH2, WH3/: CAP;

9] SINKS / C1, C2, C3, C4/: DEM;

 

Комментарии во включаемом файле игнорируются.

Интерфейс с электронными таблицами

 

LINGO может непосредственно импортировать и экспортировать данные в электронные таблицы с помощью функции @ IMPORT и команды EXPORT TO SPREADSHEET.

Ниже указаны поддерживаемые форматы электронных таблиц:

 

Extenstion Spreadsheet
XLS Excel (to Release 4, two-dimensional only)
WKS 1-2-3
WK1 1-2-3
WK3 1-2-3
WK4 1-2-3
WR1 Symphony
WQ1 WQ1 Quattro Pro

 


Дата добавления: 2015-11-16; просмотров: 47 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Освобожденные» переменные и простые границы| Функция @IMPORT

mybiblioteka.su - 2015-2024 год. (0.012 сек.)