1 Конспект некоторых лекций по курсу «Технологии компьютерного моделирования» Введение Данный курс дает представление о различных подходах к моделированию и о технологиях, которые позволяют применять на практике самый распространенный из этих подходов – численное моделирование (т.е. математическое моделирование с помощью компьютера и численных методов). Альтернативные подходы (в т.ч. нематематические подходы, используемые в слабо формализуемых предметных областях типа физиологии и социологии), рассматриваются только теоретически. Методы моделирования, которые являются первичными по отношению к технологиям (они включают как методику построения моделей, так и алгоритмы их вычисления), в курсе подробно не описываются, поскольку этому учит большинство физических и математических курсов в МФТИ. Вместо этого упор делается на следующие этапы процесса моделирования и на современное оформление моделей (компонентное, объектно-ориентированное), которое позволяет быстро строить и рассчитывать сложные и адекватные модели, в том числе с помощью различных прикладных пакетов. В курсе рассматривается обеспечение повторной используемости результатов работы на всех этапах процесса моделирования, а также особенности самого трудоемкого этапа этого процесса – написание моделирующих программ. Все это позволяет во много раз экономить время, затрачиваемое на техническую сторону вычислительного моделирования, и сосредотачиваться на научной части вычислительной модели: на уравнениях и методах их численного решения. В нижеследующей таблице указывается место знаний по технологиям численного моделирования, которые даются в данном курсе. Этап моделирования Построение модели Реализация модели Использование модели Что не рассматри- Вывод уравнений Решение уравнений (этому никто не учит) вается в курсе (учат физики и др.) (учат математики) Что рассматрива- Структурное Готовые пакеты, Методика численных ется в курсе оформление модели написание программ экспериментов Обеспечение повторной используемости (в т.ч. документирование) 1 Обзор подходов к моделированию 1.1 Понятия и цели моделирования 1.1.1 Понятия Можно сказать, что все научные знания делятся на две части: знания о поведении реальных систем и знания о моделировании этих систем. «Модель» и «моделирование» – это, без преувеличения, одни из самых многозначных понятий, встречаемых в научной и околонаучной литературе. Они обычно базируются на понятии задачи и ее решения. Под задачей в данном контексте следует понимать некоторую проблему из реальности, то есть набор взаимосвязанных вопросов по поводу реальной системы, задаваемых обычными людьми (которые ничего не понимают в моделировании и часто называются «экспертами предметной области»). Модель в самом общем понимании – это любой аналог реальной системы, используемый для решения задачи или группы задач о ней (т.е. ответа на вопросы). Такое решение является альтернативой наблюдению за реальной системой (из которого ответы на вопросы следуют напрямую). Соответственно, моделирование в общем смысле – это процесс косвенного решения задачи с помощью модели, включающий: 1. построение модели на основе знаний о реальной системе (формализация); 2. процесс получения решения из модели (с помощью каких-либо алгоритмов); 3. обратный переход к реальной системе (интерпретация результатов моделирования). 2 Следует заметить, что слово «моделирование» часто используется для обозначения отдельных этапов 1 или 2 или этапов 1–2 (или даже 1–3) вместе. На практике процесс моделирования (как и многие другие эффективные процессы получения некоторого продукта, например, компьютерной программы) является итерационным. С целью достижения адекватности модели полученные в конце этапов 2 и 3 ответы на вопросы сравниваются с чем-либо. Это могут быть наблюдения реальной системы в частных случаях, результаты других моделей и алгоритмов; также с этой целью могут делаться предельные переходы и проверяться соответствие решения не использованным напрямую в модели законам (например, законам сохранения). По результатам такого сопоставления происходит корректировка этапов 1 и 2 (см. 2.1). Адекватностью называют соответствие модели решаемой задаче, то есть любая модель не может быть «адекватна исходной системе», отражая свойства системы ровно в той полноте, в какой необходимо для конкретного исследования. Как правило, модель надо стремиться делать (по крайней мере, на первой итерации) наиболее простой среди учитывающих все «существенные для задачи» факторы. Усложнять модель нет смысла, в том числе, и потому, что возникающие при усложнении параметры далеко не всегда имеют известные значения; их можно определить (идентифицировать) в рамках отдельного итерационного процесса моделирования, однако при этом адекватность решения исходной задачи может существенно пострадать. К сожалению, вопрос об адекватности особенно остро стоит для вычислительных моделей, поскольку к ошибкам ввиду неучета какихлибо факторов, неточности исходных данных и неверной записи законов в данном случае добавляются трудно контролируемые ошибки численных методов. С понятием модели обычно связывают понятие входных и выходных данных. Входные и выходные данные часто рассматриваются независимо модели, поскольку относятся к конкретной задаче о системе, а не к самой системе. Они являются отражением некоторых интересных с точки зрения задачи свойств реальной системы (которые можно определить, а в некоторых случаях можно также изменить). Соответственно, благодаря такому разделению одна и та же модель может помочь решить различные задачи (реальные системы не всегда обладают этим полезным свойством, имея фиксированные свойства). Не следует забывать о том, что при решении разных задач об одной системе часто используются не только разные исходные данные, но и разные модели или, по крайней мере, разные версии одной модели (на схеме это показано пунктиром). Например, при одних исходных данных существенными являются одни взаимодействия в системе, при других – совершенно другие; иными словами, каждая модель системы имеет свою область применимости (которая выражается в перечне упрощающих предположений модели и учитываемых ею факторов). Однако было бы неразумным не использовать наработки одной модели в другой модели той же системы (обладающей, например, более широкой областью применимости). Некоторые в таких случаях говорят об иерархии моделей [1], получающейся одна из другой за счет отказа от предположений («от простого к сложному») или выбрасыванием соотношений или их частей («от общего к частному»). Таким образом, из этапа 1 (построение модели) выделяется этап 1а – определение исходных данных, – и этап 1б – определение требуемых результатов. Они являются сравнительно простыми, однако нетривиальными этапами: условие задачи может быть введено в модель разными способами, а решение задачи (на этапе 3) может быть получено из разных результатов модели. Исходные данные не всегда имеют значения; например, если модель математическая и допускает аналитическое решение, числовые значения ее параметрам не нужны. Однако даже в этом случае этап 1а присутствует в процессе моделирования, поскольку нужно указать, какие параметры системы следует считать входными (через них будут выражены выходные параметры). 3 Задача о системе (вопросы) 1а Исходные данные 1б Решение задачи (ответы) 3 2 Результаты модели Реальная система 1 2 Модель Существуют и другие определения модели, противоречащие приведенной выше схеме. Например, во многих случаях модель настолько тесно переплетается с алгоритмами получения результатов моделирования, что понятие модели начинает включать и алгоритмы («вычислительная модель»). Для краткости часто моделью также называют реализацию модели, – например, если модель компьютерная, так называют специализированную моделирующую программу или данные, описывающую модель (и алгоритм) в универсальной программе. 1.1.2 Виды моделей Приведенные определения работают как для теоретических (идеальных, абстрактных, знаковых), так и для экспериментальных (материальных, предметных) моделей. Экспериментальная установка (которая может быть макетом – физической моделью – или системой иной природы, нежели реальная система, но с близким к ней поведением – аналоговой моделью) напрямую также не дает прямых ответов на интересующие вопросы о реальной системе, поскольку представляет собой другую реальную систему; ее входные/выходные данные также могут отличаться от данных реальной системы. В данном контексте к теоретическим моделям (несуществующим в физическом мире) относятся и компьютерные модели, хотя они весьма похожи на экспериментальные (недаром исследование модели на компьютере называют вычислительным экспериментом). Однако большинство специалистов (например, [1]) по историческим причинам выделяют компьютерное (и даже более узко – численное) моделирование в отдельный метод познания наряду с теорией и экспериментом (которые моделированием в этом случае не называют). Компьютерные модели, основанные на программной реализации теоретических, отличает максимальная простота создания и модификации, а также невероятная (для теории или эксперимента) допустимая сложность моделей, которая формально ограничена лишь мощностью компьютерной техники (хотя на практике очень сложно добиться адекватности слишком сложных компьютерных моделей). Следует заметить, что в отличие от теоретических, компьютерные модели во многих случаях могут быть подключены вместо моделируемой системы к другим реальным системам. Если необходимо подключение (количественной) модели к физическим системам, в компьютер необходимо вставить цифроаналоговый (ЦАП) и/или аналогово-цифровой (АЦП) преобразователь (получаемые с АЦП данные могут обрабатываться моделью и передаваться через ЦАП обратно). Такое взаимодействие материального и идеального мира возможно благодаря тому, что компьютерные модели, в отличие от всех остальных, может интерпретировать (обрабатывать) не только человек, но и процессор компьютера. Компьютерное моделирование, в свою очередь, часто разделяют на математическое (основанное на решении уравнений: численном или аналитическом) и информационное (основанное на эмпирических данных). Однако граница между ними неоднозначна: например, статистическое моделирование формально является математическим, но простейшие его варианты, например, вычисление среднего по выборке из базы данных к математике отнести сложно. Взаимодействие математики и эмпирики в модели может быть очень многообразным. Если же модель не содержит математики, ее роль по связыванию данных могут выполнять не менее сложные интеллектуальные конструкции (в частности, логические), и поэтому такие модели обычно называют основанными не на данных, а на знаниях (модели искусственного интеллекта). Понятие системы выше обозначает любую часть реального мира (вместе с происходящими в ней процессами), которая не требует привлечения других частей реальности для 4 формулировки и решения рассматриваемой задачи. К реальным системам относятся не только естественные, но и искусственно созданные, например, социальные и информационные (компьютерные, «виртуальные») системы. Во время моделирования система может еще или уже не существовать, но в этом случае она должна планироваться в будущем или существовать в прошлом. Несмотря на столь высокую степень общности, понятие системы является неэлементарным: широко распространено разделение между моделируемой системой и «внешней средой» (или «воздействием на систему», которая характеризуется своими данными и закономерностями). Иногда под внешней средой понимается совокупность входных параметров модели, однако часто бывает так, что взаимодействие между средой и системой достаточно сложно, и поэтому из модели системы выделяется модель взаимодействия между средой и системой. 1.1.3 Цели моделирования Очевидно, даже если ответ на вопрос в «модельном» мире получен с абсолютной точностью (это бывает не всегда), отсюда совсем не следует, что он будет точным и в реальности. Зачем же нужно моделирование, не дающее «правильного» решения и требующее значительных усилий? Дело в том, что зачастую прямое наблюдение за системой в интересующих условиях долго, дорого или невозможно принципиально – в связи с тем, что сама система отсутствует (например, проектируется) или существует в единственном экземпляре (например, человечество в целом). Часто бывает также, что помещение системы в интересующие условия будет иметь для нее разрушительные последствия, или что условия невозможно создать – они появляются сами со временем (при этом ответ на вопросы задачи интересно получить до наступления того времени – чтобы что-то изменить). Другим недостатком реальных систем является их вариабельность (разнообразие свойств), в связи с чем наблюдение за конкретной системой (например, за конкретным человеком) далеко не всегда позволяется делать выводы о поведении других. При этом, к сожалению, задача формулируется некорректно – для всех таких систем (а их число обычно слишком велико, чтобы наблюдать за всеми). Во всех этих случаях вместо реальной системы необходимо использовать модель (в худшем экспериментальном случае это может делаться ценой разрушения модели, но не более). Многие из приведенных факторов действуют не только для реальных систем, но и для их экспериментальных моделей. Что касается чисто теоретических моделей, то этот подход сильно ограничен по классу решаемых задач, да и трудоемкость построения современных теоретических моделей очень высока. Именно поэтому сейчас под моделированием понимается, прежде всего, моделирование с помощью компьютера, лишенное этих проблем (хотя и имеющее свои проблемы). Как ни странно, решение реальных задач – не единственное назначение моделей. Вопервых, модели могут использоваться для обучения (в качестве тренажера или виртуальной лаборатории). Иногда они могут решать реальные задачи (например, заменяя реальную систему на ранних стадиях ее разработки), но обычно решаемые при обучении задачи не имеют никакого практического смысла (смысл имеет лишь получаемые знания о системе и/или навыки работы с ней). Во-вторых, во многих областях (особенно в слабо формализуемых областях, не описываемых на языке математики) моделирование часто имеет цель, вообще не имеющую отношения к задачам. Модель как средство осмысления являться самоцелью, позволяя исследователям «лишь» лучше понять внутреннюю структуру реальной системы и действующие в ней законы (которые, в отличие от случая с обучением, неизвестны). В широком смысле, вся наука, изучающая естественные и искусственные процессы, сводится к построению моделей систем и явлений с целью их осмысления. При таком подходе свойства исходной системы разделяются на существенные и второстепенные (с точки зрения интересующей стороны ее функционирования), а разделение на входные и выходные данные становится условным: модель получается на основе известного соответствия между наборами входных и «выходных» данных. Если дело касается не открытия фундаментальных законов (что бывает редко и к моделированию в узком смысле 5 не относится), а применения ранее открытых законов, то построение модели выполняется ручным подбором данных (как количественных, так и структурных) или автоматически, например, методами искусственного интеллекта. Следует заметить, что полученные таким образом модели могут применяться и обычным явным способом – для решения задач, однако до этого этапа в слабо формализуемых областях доходят далеко не всегда. Автоматическое получение модели применяется также к задачам, в которых вопросы о системе формулируются не прямые (например, «что будет, если»), а обратные (например, «как сделать, чтобы»). По отношению к задачам второго типа модель (например, модель проектируемой системы) может являться результатом (выходными данными), а не средством решения задачи (конечно, при этом неявно используется и другая модель, отражающая в качестве реальной системы не только внешнюю по отношению к системе среду, но и различные соображения проектировщиков). Следует, однако, заметить, что в простых обратных задачах модель задана, и нужно лишь определить ее исходные данные. Частным случаем таких обратных задач являются задачи идентификации, которые играют важную роль при решении прямых задач (см. раздел 1.2.1). 1.2 Классификации научных задач В понятие модели, несмотря на его общность, заложена некоторая внутренняя структура (а не только внешнее назначение, рассмотренное выше). Любая модель состоит из множества данных (элементов) и множества отношений (связей) между этими элементами, а также функций над ними (функция – способ конструктивно задавать отношения). Это позволяет классифицировать модели по типу элементов, отношений и функций. В частности, математическими моделями называются те, в которых данные выражены числами (значениями параметров), отношения представлены в виде уравнений (и неравенств), а функции сводятся к математическим функциям. Дальнейшие уточнения приведенных в разделе 1.1 понятий модели базируются на типах задач, в которых они используются. Самая общая научная классификация задач содержит следующие их типы: 1) порождение (вычисление) некоторого объекта; 2) распознавание (доказательство) некоторых свойств объекта; 3) поиск объекта (поиск решения), что сводится к задачам типов 1 и 2. В задачах первого типа (на вычисление) выделяют: 1) набор исходных данных задачи; 2) набор выходных данных – требуемых результатов решения; 3) набор условий (отношений), которым должны удовлетворять данные модели. Задачи второго типа (на распознавание) включают: 1) условие (о том, что заданный объект (набор данных) обладает заданным свойством (принадлежит отношению)); 2) заключение («да» или «нет», а в случае использования нечёткой логики – и правдоподобность этого вывода, см. 1.2.4). Ниже рассматриваются классификации задач по различным критериям, которые относятся, в большинстве случаев, только к первому (самому распространенному) типу. 1.2.1 Стационарные и динамические задачи Простейшая задача на вычисление – стационарная – требует вычисления (в некоторый момент времени) значений неизвестных данных модели (результатов) по известным исходным данным (в тот же момент времени). Во всех динамических задачах рассматривается изменение состояния модели (всех данных) во времени. Граница между ними не такая четкая, как кажется на первый взгляд, что связано с универсальностью многих подходов к моделированию (прежде всего, математического). Во-первых, часто вместо времени в задаче фигурирует другая независимая переменная (например, пространственная координата), но модель (и алгоритм решения) точно такая же, как для динамической задачи; прежде всего, это касается обыкновенных дифференциальных уравнений. Во-вторых, 6 для численного решения чисто стационарной задачи (не содержащей никакого аналога времени) часто используется итерационный алгоритм, близкий к алгоритму решения динамической задачи. Аналогом времени в данном случае является номер итерации, а аналогом начальных условий динамической задачи – начальные приближения результатов стационарной задачи. Следует отметить неочевидный факт: численное решение динамических задач обычно проще итерационного решения стационарных. Динамические задачи отличаются друг от друга тем, в какие моменты времени заданы исходные данные, и в какие моменты времени требуется вычислить результаты. В приведённой ниже классификации динамических задач по умолчанию предполагается математическое моделирование, однако математический аппарат, с помощью которого описывается состояние и поведение модели (дискретные преобразования, дифференциальные уравнения, уравнения в частных производных), по возможности, не фиксируется. Во-первых, исходные данные могут быть заданы в начальный момент времени, охватывая весь набор параметров (состояние) модели. Состояние модели во все остальные моменты времени подлежит вычислению (предсказанию), поэтому такая задача называется задачей прогнозирования или задачей Коши. Принципиально не отличаются от неё задачи, в которых во все моменты времени заданы значения некоторых параметров модели (например, граничные условия первого рода) или соотношения между этими параметрами, не входящие в саму модель (граничные условия произвольного вида). Первый случай преобразуется к задаче Коши формальным исключением из модели параметров с известной динамикой, а второй – формальным добавлением в модель указанных (например, граничных) соотношений. При решении задачи прогнозирования часть параметров, будучи не связаны ни какими отношениями, могут оставаться постоянными во времени, и их также имеет смысл исключить из основной модели (рассматривая, например, в качестве постоянных граничных условий первого рода). Во-вторых, часть исходных данных может быть задана в конечный момент времени (и только часть, по-прежнему, в начальный момент); определить же нужно динамику всех параметров во времени. Такую (обратную в некотором смысле) задачу естественно назвать краевой (хотя постановка краевых задач в теории обыкновенных дифференциальных уравнений может быть и более общей: исходные данные представлены в виде соотношений между значениями параметров в начальный и в конечный моменты времени). Решение общих (нелинейных) краевых задач предполагает итерационный алгоритм, на каждом шаге которого решается задача Коши («метод стрельбы») либо линейная краевая задача (метод квазилинеаризации). В свою очередь, линейную краевую задачу можно решить разложением искомой функции времени по базису (фундаментальной системе) из решений задач Коши с последующим нахождением коэффициентов разложения из линейной системы алгебраических уравнений, а можно применить алгоритм прогонки. Следует заметить, что прогонка подходит далеко не для всех задач, а разложение по фундаментальной системе – не всегда устойчиво (в случае уравнений в частных производных (или интегральных уравнений) это приводит к некорректным задачам). В-третьих, динамическая задача может требовать определения некоторых постоянных во времени параметров модели при условии, что заданы значения всех остальных параметров в начальный момент времени и части остальных параметров – в конечный момент (более общая постановка – заданы во все моменты времени – относится к некорректным задачам). Это есть усложненный вариант стационарной задачи идентификации параметров (см. 1.2.2). Как и задача управления, требующая определить (на основе тех же данных) зависимости параметров (управления) от времени, эта задача относится к обратным. 1.2.2 Прямые и обратные задачи Одно из самых неоднозначных разделений задач на вычисление (порождение) – это разделение на прямые и обратные задачи, которое характерно для математического моделирования (нематематические типы моделей обычно решают либо только прямые, либо только обратные задачи, и такая терминология там не нужна). Неоднозначность связана с 7 некоторым произволом выбора входных и выходных данных. Иногда известными являются значения параметров, которые должны служить результатами моделирования, а неизвестными – значения исходных данных; такая обратная задача называется задачей идентификации параметров. Другой тип обратных задач (который можно назвать экстремальным) отличается формулировкой известных данных (требуемых результатов): необходимо обеспечить не заданное, а минимальное или максимальное значение параметров (которое также определяется в процессе моделирования). В стационарном случае такие задачи называется задачами оптимизации (к ним относятся, например, задачи линейного программирования), а в динамическом случае – задачами управления. В задачах управления обеспечение экстремума требуется не для отдельного значения, а для некоторого функционала, зависящего от значений на всем отрезке времени. Впрочем, такая общая постановка легко сводится к задаче с терминальным (определённым только в конечный момент времени) функционалом введением дополнительного параметра, что приближает задачи управления к краевым (см. 1.2.1). Характерной особенностью экстремальных задач является наличие связей между исходными и другим данными, заданных в форме неравенств. Для решения прямой стационарной задачи часто используется итерационный алгоритм, поэтому необходимо знать также приближённые значения результатов, и в связи с этим обратная задача внешне мало отличается от прямой. Однако обычно обратные стационарные задачи требуют дополнительного (тоже итерационного) алгоритма решения, одна итерация которого включает решение прямой задачи. Это обусловлено тем, что конструктивный алгоритм вычисления части данных заложен в модель (если среди результатов только такие данные, то задача прямая), а для другой части данных этот алгоритм нужно строить искусственно (если такие данные – результаты, то задача обратная). Многие обратные задачи (не экстремального типа) называются некорректными, поскольку при их решении модели получаются из реальных систем косвенно, а алгоритмы решения не имитируют процессы в реальной системе (как часто бывает в случае прямых задач). Как следствие, при изменении заданных значений решение обратных задач может меняться не непрерывно (особенно это характерно для задач, описываемых дифференциальными моделями). Тем не менее, некорректные (а также просто не имеющие обычного решения) задачи успешно решаются на основе понятия квазирешения. При этом исходная задача заменяется экстремальной, то есть ищется решение, дающее минимум отклонения результатов от их известных значений (функции или функционала ошибки) при дополнительных (априорных) ограничениях на решение. 1.2.3 Количественные, логические, вербальные задачи Любые задачи могут классифицироваться по способу формализации их данных (значений). Строго говоря, во многих случаях форма данных зависит от модели, а не от задачи (недаром переход от задачи к модели часто называют формализацией), однако достаточно большое число задач явно диктуют необходимую форму данных (а те модели для них, которые оперируют с другой формой, являются неконкурентоспособными). Как правило, входные и выходные данные имеют одинаковую форму, хотя в задачах на доказательство (второго типа, см. выше), а также во многих обратных задачах (например, в задачах поддержки принятия решений) результаты моделирования всегда имеют логическую форму (да/нет), независимо от формализации остальных. Аналитическое моделирование – исключение, когда не требуется задание данных в какой-либо форме (кроме текстового обозначения), – не имеет практического значения (оно обретает практическое значение только после подстановки значений в формульное решение в рамках неаналитических задач). Самая распространенная форма значений – вещественное число. Несмотря на ее простоту, при решении реальных задач нельзя забывать, что число имеет также единицу измерения (а переход к единой, наиболее выгодной, системе единиц – обезразмеривание – не всегда является тривиальной задачей). Некоторые задачи (особенно из «неестественных» наук) решаются в целых числах. Возможна также ситуация, когда параметры могут принимать бесконечный набор дискретных значений, не являющихся целыми (или, наобо- 8 рот, отличающихся друг от друга на целое число, большее 1) – эта ситуация сводится к целочисленной или вещественной задаче. В слабо формализуемых областях часто параметры могут принимать конечный набор значений (именно такие задачи и модели обычно называются дискретными). Наиболее распространены логические значения, но дискретные значения могут также представлять собой словесные обозначения степени выраженности некоторого свойства (например, большой, средний, малый) – такие значения называются вербальными. 1.2.4 Детерминированные и недетерминированные задачи При рассмотрении задач на вычисление предполагалось, что исходные данные модели известны точно, и поэтому возможно получить результаты моделирования абсолютно точно (если они являются дискретными) или (в случае численного моделирования) с некоторой приемлемой точностью (она определяется машинным представлением чисел, а также погрешностью алгоритма, которую обычно можно оценить и уменьшить за счёт более длительных вычислений). В ряде задач, однако, неточность результата не может быть уменьшена за счёт алгоритма, поскольку определяется в том числе свойствами исходных данных. Для этих данных могут быть заданы диапазоны изменения их значений, коэффициенты уверенности, нечеткие множества, средние значения вместе с ожидаемыми отклонениями, несколько значений в один и тот же момент времени, противоречащие друг другу значения в разные моменты и т. д. Если заданы лишь диапазоны значений исходных данных, ничего нельзя сказать про вероятности принять исходным данным заданные значения из этих диапазонов, поэтому естественный результат решения такой задачи – диапазоны результатов (иногда вычисляют множество в пространстве результатов, не являющееся гиперкубом). Если имеются какие-либо другие свойства неопределенности (вероятности), заданные в соответствии с каким либо способом формализации (полуширина распределения Гаусса, байесовская вероятность, коэффициент уверенности, функция принадлежности нечеткого числа, коэффициенты нечеткости и т. п.), то результат представляется в тех же терминах. Если же сведений о неопределенности в явном виде не задано, но зато имеются противоречащие друг другу избыточные данные, то их сначала сводят к вероятностям статистическими методами (например, вычисляют среднеквадратичное отклонение или более сложный критерий). Форма задания неопределенности данных, конечно, зависит от формы задания самих данных (см. 1.2.3). В частности, при переходе от детерминированной задачи к недетерминированной вещественное число может заменяться диапазоном, нечетким числом или числом с вероятностью, логическое и вербальное значение – многозначно-логическим (например, «да/нет/не знаю») или нечетко-логическим значением (функцией принадлежности). Следует отметить, что формализация и интерпретация неопределенности значительно усложняет, соотвественно, переходы от задачи к модели и от результатов моделирования к решению задачи (см. 1.1). 1.2.5 Задачи синтеза До сих пор под решением задачи понималось нахождение значений некоторых заранее (при построении модели) заданных параметров. В принципе, не только значения параметров, но и качественная структура модели (например, факт существования там некоторых параметров или связей между ними) может быть предметом определения в задаче. Результат решения такой задачи на порождение (задачи синтеза или конструирования) можно использовать для решения задач большинства других типов. Задача синтеза характерна для искусственного интеллекта (самообучающиеся системы), однако в современной науке существует очень мало универсальных и математически обоснованных подходов к её решению (большинство подходов являются эвристическими, то есть во многих случаях дают полезные результаты без всякого обоснования). Частный случай задачи синтеза – задача классификации, то есть задача порождения классов объектов – служит основой для задач распознавания этих объектов. 9 1.2.6 Задачи на порождение алгоритмов Даже в самых общих качественных задачах синтеза целью является порождение некоторой системы объектов (с более или менее заданной начальной структурой, расширяющейся и уточняющейся по мере самообучения). Однако существует область искусственного интеллекта – самореструктурирующиеся (self-restructurable) модели, – в которой предметом определения задачи являются алгоритм (вычисления какого-либо объекта). Если задан алгоритм видоизменения искомого алгоритма, то самореструктурирующаяся система имеет первый порядок реструктуризации (SR1), если алгоритм изменения этого алгоритма – то второй (SR2) и т. д. Если же для любого n (n+1)-ый порядок реструктуризации определяется n-ым порядком, то такая рекурсивная система имеет первый порядок в классе super-self-restructurable (SSR1). Человек, по некоторым соображениям, является системой типа SSR2 (по другим данным, для творчества достаточно SR4– SR5), однако искусственно пока не созданы даже системы SR2. Поэтому рассматривать перспективный класс задач, связанный с автоматическим порождением алгоритмов решения любых других задач, сейчас не представляется возможным. 1.3 Подходы к моделированию и области их применения В предыдущем разделе речь шла о способах постановки задачи для моделирования, а здесь рассматриваются способы внутренней организации моделей, а также методы (алгоритмы), позволяющие с их помощью решать задачи (совокупность способа описания моделей и подходящих для него методов будем называть подходом к моделированию). Некоторые подходы позволяют решать только один из рассмотренных выше типов задач, другие обладают более широкой областью применения. Комбинирование типов задач и типов моделей (не говоря уже о алгоритмах) дает такое огромное количество вариантов, что в мире не существует сколько-нибудь полного их перечня. В настоящее время лишь сложилось определенная классификация моделей и задач лишь для математического моделирования и для искусственного интеллекта, однако не для подходов, находящихся на стыке этих областей. Неиспользованные до сих пор варианты сочетаний «тип задачи – тип модели» до сих пор дают широкие возможности для научных исследований (не говоря уже про варьирование алгоритмов для одного и того же типа модели; про решение новых конкретных задач старыми моделями и алгоритмами, а также про создание бесконечного числа моделей для известных задач). Поэтому моделирование можно без преувеличения назвать самой неисчерпаемой областью науки, что особенно видно в сравнении с естественными науками, имеющими в распоряжении конечное число исследуемых реальных объектов, а также с математикой, возможности которой по созданию новых методов уже давно ограничиваются конечностью числа допустимых формул. 1.3.1 Информационное (семантическое) моделирование: вербальное и графическое описание 1.3.2 Аналитическое моделирование 1.3.3 Вычислительно-математическое моделирование 1.3.4 Имитационное моделирование 1.3.5 Гибридные (дискретно-непрерывные по времени) модели 10 1.3.6 Дискретное моделирование (конечные автоматы, предикаты, продукции, фреймы) 1.3.7 Нейронные сети, другие самообучающиеся модели 1.3.8 Статистическое моделирование 1.3.9 Недетерминированные модели разных типов 2 Обзор технологий моделирования 2.1 Организация процесса моделирования: жизненный цикл модели 2.1.1 Построение модели (см. этап 1 в разделе 1.1) 1. 2. 3. 4. 5. Конструирование модели начинается со словесного описания системы и происходящих в ней процессов (иногда это называется формулировкой предмодели). Часто слова на этом этапе иллюстрируются рисунками. В словах почти всегда уже содержатся некоторые предположения (толстый слой, быстрый переход и т.п.). Создание кратких описаний (иерархических списков) качественно различных элементов модели, их параметров и качественных связей между ними (а также внешних связей, если модель строится как часть более сложной модели). Это далеко не всегда однозначно вытекает из формулировки предмодели: информация о многих параметрах и связях там может попросту отсутствовать, и лишь обдумывание взаимосвязей различных частей будущей модели позволяет выявить недостающие звенья. На этой стадии формализации словесная формулировка может уточняться. Слово «качественно различные элементы» в данном контексте означает, что однотипные элементы здесь описываются как одно целое (фактически, описываются типы элементов и, соответственно, типы параметров и типы связей). Завершение идеализации системы, при котором отбрасываются все факторы, которые представляются несущественными. При этом некоторым параметрам (точнее, типам параметров) придаются некоторые (обычно качественные или относительные), значения. Это необходимо для строгой формулировки предположений модели (например, в форме a>>b), которые уже можно будет в дальнейшем применять для проверки ее пригодности к решению той или иной задачи. Окончательная формализация в выбранной форме (в искусственном интеллекте такие формы называются языками представления знаний). В математическом моделировании формами являются различные типы уравнений, а кроме форм, существуют типовые (более или менее универсальные) соотношения, определяющие содержание формализованной модели. К наиболее универсальным соотношениям относятся законы сохранения и вариационные принципы (они применяются не только в физике, в которой были впервые получены). Существуют и менее универсальные законы, специфичные для разных предметных областей. Определение структуры модели (например, пространственной структуры, если моделируется физическая система) – это нужно в том случае, если в модели имеется много однотипных элементов. Очень полезными на этой стадии являются разнообразные диаграммы, которые уточняют и дополняют рисунки, иллюстрирующие предмодель (см. пункт 1). Описываются также отличия между разными элементами одного типа 11 6. (некоторые элементы могут иметь свои специфические параметры или соотношения между ними) и их конкретные связи. Четкое выделение входных и выходных данных модели, определение их значений (последнее иногда не требуется – например, в случае аналитических моделей). Эта стадия моделирования часто оформляется в виде таблиц. Вопрос о том, на чем могут быть основаны модели (законы, принципы, аналогии, факты, правдоподобные представления о характере объекта) подробно рассмотрен в [1] (для математических моделей). В целом, исходные соображения могут быть любыми (лишь бы модель была адекватна), хотя знакомство со стандартными универсальными методиками и стандартными соображениями, применяемыми в конкретной предметной области, позволяет строить модели гораздо быстрее. Часто бывает даже так, что различные соображения приводят не только одинаковым результатам моделирования, но и к эквивалентным моделям (конечно, для этого необходимо, чтобы соображения формулировались на одном и том же языке представления знаний, например, на языке математики). В этом проявляется замечательное свойство универсальности моделей (прежде всего, математических), благодаря которому на решение задач с помощью моделирования сейчас тратится сравнительно мало усилий. Дело в том, что современным ученым и инженерам уже не требуется изобретать законы природы на основе творческого осмысления эмпирических данных, достаточно подобрать и скомбинировать друг с другом давно открытые законы (подходящие к рассматриваемой системе и задаче). Помимо элементарных (фундаментальных) законов, известны и их конкретные выражения по отношению к типичным системам. Более того, методы применения законов и даже готовые программы, в которые они заложены, также имеются в распоряжении. 2.1.2 Получение результатов моделирования Жизненный цикл моделей (особенно некомпьютерных), создаваемых с целью осмысления (см. 1.1) иногда заканчивается на этапе построения, поэтому рассматриваемые в этом и следующем разделах стадии процесса моделирования не всегда являются необходимыми. 1. Исследование построенной модели начинается с формулировки (в виде слов, формул или диаграмм) методов исследования (обработки модели); это можно формально отнести к построению обобщенной (в частности, «вычислительной») модели. Метод является наиболее общим из уместных здесь термином; более узким, но чаще употребляемым в данном контексте словом является «алгоритм» – последовательность действий, необходимых для получения результатов на основе модели. В случае численного моделирования данная стадия может разбиваться на несколько: сначала выбирается (или создается) численный метод, затем описывается особенности его применения к модели, и только затем пишется алгоритм расчета. 2. Реализация модели (и методов). При экспериментальном моделировании этот этап обычно опускается (методику проведения экспериментов не нужно «реализовывать», ее нужно просто выполнять на следующем этапе), а при теоретическом (некомпьютерном) моделировании он выражается в преобразовании модели к конструктивной форме (из которой на следующем этапе можно напрямую получать результаты). Если модель математическая, то конструктивной формой являются формулы с результатами в левой части и функциями в правой. Для компьютерных моделей данный этап обычно состоит в проектировании, реализации и отладке программной системы, реализующей модель и метод ее исследования. Этот этап моделирования часто выделяется как отдельный процесс, выполняющийся по своим правилам (описываемым в литературе по разработке программного обеспечения). В программную систему, помимо выполняемого кода, обязательно входит также разнообразные данные (в файлах или в базе данных). Если специальную программу для конкретной компьютерной модели 12 3. создавать не нужно, данный этап заменяется вводом всего содержания модели в готовую программу (она может называться не только системой моделирования, но и математическим пакетом, экспертной системой и т.д.). Такая информация обычно подразделяется на те же составляющие, что были описаны для этапа создания модели (см. раздел 2.1.1): 1) выбор имеющихся в программе типов элементов модели (например, типа системы уравнений или нейросети, формализаций функциональных зависимостей или логических правил); 2) формирование структуры элементов выбранных типов; 3) ввод (количественных) значений внутренних параметров модели (исходные данные задачи, как правило, задаются на следующем этапе – непосредственно перед обработкой модели). Собственно решение задачи с помощью исследования (некоторой обработки) построенной и реализованной модели. В случае численного моделирования данная стадия называется проведением вычислительных экспериментов. Под экспериментом, как правило, понимается не один, а несколько расчетов («прогонов») модели при различных значениях выбранных входных параметров, на основе которых можно построить зависимости результатов от исходных данных и т.п. Численное решение некоторых типов задач (например, обратных) предполагает многократный расчет модели даже для получения одного набора результатов. 2.1.3 Интерпретация результатов Данный этап моделирования, который иногда называют деформализацией, является тем более существенным, чем большие усилия были потрачены на формализацию модели. Как правило, так бывает в слабо формализуемых предметных областях, в которых знания плохо согласуются с используемыми «языками» формализации (в частности, с математикой). Для того чтобы перевести полученные выходные данные модели в ответы на вопросы задачи (в слова) в некоторых случаях недостаточно логического мышления, построения зависимостей на основе многократных вычислений и т.п.; иногда приходится проводить дополнительный анализ совокупности результатов. Можно рассматривать такую интерпретацию как отдельный процесс моделирования. Например, можно обучить вспомогательную модель на других значениях выходных данных с известной интерпретацией («диагнозами») и затем воспользоваться методами диагностики, которые сопоставят полученным с помощью основной модели выходным данным те или иные «диагнозы». 2.2 Технология моделирования: понятие и варианты Сравнение технологий численного моделирования: Модель -> алгоритм -> программа Модель в готовой программе Литература 1. Самарский А.А., Михайлов А.П. Математическое моделирование: Идеи. Методы. Примеры – 2-е изд. – М.: Физматлит, 2002 – 320 с. 2. Бенькович Е.С., Колесов Ю.Б., Сениченков Ю.Б. Практическое моделирование динамических систем – СПб.: БХВ-Петербург, 2002 – 464с.