Опубликован: 16.11.2010 | Доступ: свободный | Студентов: 5154 / 2848 | Оценка: 4.43 / 4.14 | Длительность: 27:21:00
Лекция 8:

Организация компьютерных экспериментов

< Лекция 7 || Лекция 8: 12345 || Лекция 9 >

Для сохранения матрицы результатов при обнулении переменных перед очередным наблюдением используется команда CLEAR OFF. Для изменения начального числа генератора случайных чисел в каждом наблюдении процедуре передается номер запуска.

****************************************************
*              Dis_Server                          *
*      Факторный отсеивающий эксперимент           *
****************************************************
Dis_Server_Results       MATRIX                ,2,2,2
      INITIAL Dis_Server_Results,UNSPECIFIED
Dis_Server_NextRunNumber EQU                    0
EXPERIMENT Dis_Server() BEGIN

     /* Наблюдение 1 */
     T1_ = 60;
     Koef = 0.5;
     Q_ = 300000;
     IF (StringCompare(DataType(Dis_Server_Results[1,1,1]),
               "UNSPECIFIED")'E'0)
     THEN BEGIN
/* Установить начальное значение переменной количества наблюдений */
     Dis_Server_NextRunNumber = 1;
/* Записать данные наблюдения и запустить процесс моделирования*/
     Dis_Server_GetResult();
     Dis_Server_Results[1,1,1] = N$ObrZap/N$KolZap;
     END;

     /* Наблюдение 2 */
     T1_ = 60;
     Koef = 0.5;
     Q_ = 700000;
     IF (StringCompare(DataType(Dis_Server_Results[1,1,2]),
          "UNSPECIFIED")'E'0)
     THEN BEGIN
/* Записать данные наблюдения и запустить процесс моделирования */
     Dis_Server_GetResult();
     Dis_Server_Results[1,1,2] = N$ObrZap/N$KolZap;
	 END;

     /* Наблюдения 3 - 7 для краткости пропущены */
     /* Наблюдение 8 */
     T1_ = 180;
     Koef = 1.5;
     Q_ = 700000;
     IF (StringCompare(DataType(Dis_Server_Results[2,2,2]),
               "UNSPECIFIED")'E'0)
     THEN BEGIN
/* Записать данные наблюдения и запустить процесс моделирования */
     Dis_Server_GetResult();
     Dis_Server_Results[2,2,2] = N$ObrZap/N$KolZap;
     END;
/* Эффекты смешивания в дробном факторном эксперименте */
     SE_Effects(Dis_Server_Results,"I");
END;

*******************************************************
*        Процедура запуска наблюдения                 *
*******************************************************
PROCEDURE Dis_Server_GetResult() BEGIN
/* Выполнить указанное число прогонов и записать результаты. */
/* Факторы для этого наблюдения уже были определены. */
TEMPORARY CurrentYield,ShowString,CommandString;
/* Вызов процедуры запуска */
     Dis_Server_Run(Dis_Server_NextRunNumber);
     CurrentYield = N$ObrZap/N$KolZap;
     ShowString = PolyCatenate("Run ",String(Dis_Server_NextRunNumber),
	      ". ", "" );
     ShowString = PolyCatenate(ShowString," Yield=",String(CurrentYield),
	      ". ");
     ShowString = PolyCatenate(ShowString," T1_=",String(T1_), ";" );
     ShowString = PolyCatenate(ShowString," Koef=",String(Koef), ";" );
     ShowString = PolyCatenate(ShowString," Q_=",String(Q_), ";" );
     CommandString = PolyCatenate("SHOW """,ShowString,
          """", "" );
     DoCommand(CommandString);
     Dis_Server_NextRunNumber = Dis_Server_NextRunNumber + 1;
     RETURN CurrentYield;
END;
*******************************************************
*             Процедура запуска                       *
*******************************************************
PROCEDURE Dis_Server_Run(Run_Number) BEGIN
     DoCommand("CLEAR OFF"); /* Использовать OFF для сохранения результата. */
/* Увеличьте число команд RMULT, если у вас большее число ГСЧ. */
/* Задать новые случайные числа всем потокам случайных чисел. */
     TEMPORARY CommandString;
/* Вычислить, прежде чем перейти к DoCommand. */
     CommandString = Catenate("RMULT ",Run_Number#111);
/* DoCommand контролирует строку в глобальном контексте. */
     DoCommand(CommandString);
/* Установить собственные условия наблюдения. */
     DoCommand("START 100,NP");  /* Пройти неустоявшийся режим. */
     DoCommand("RESET");         /* Начать период измерений. */
     DoCommand("START 9604,NP"); /* Провести моделирование. */
END;

Проведем эксперимент. Для вызова эксперимента предназначена команда CONDUCT. Однако за функциональной клавишей [F11] была закреплена соответствующая команда CONDUCT ( Edit / Settings / Function Keys ( Правка / Настройки / Функциональные клавиши ).

Проведите трансляцию, т. е. создайте объект "Процесс моделирования", для чего нажмите [Ctrl]+[Alt]+[S] или выполните команду Command / Create Simulation ( Команда / Создать процесс моделирования ).

При отсутствии ошибок в сгенерированном эксперименте в окне Journal ( Журнал ) появится сообщение (рис. 7.7), свидетельствующее об отсутствии ошибок.

Теперь нажмите функциональную клавишу [F11]. Эксперимент начинает работать.

Замечание. Во время эксперимента доступна только команда HALT, а все остальные команды становятся неактивными, т. е. процесс моделирования можно только остановить и потом продолжить, но просмотреть его с использованием меню, вызываемого командой WINDOW / SIMULATION WINDOW и другими командами, нельзя.

В ходе выполнения сгенерированного эксперимента автоматически создается отчет, который по готовности записывается в окно Journal ( Журнал ) объекта "Процесс моделирования". Фрагмент отчета для четырех наблюдений ( Run1 Run4 ) показан на рис. 7.8. В отчете содержатся Yield - целевая функция и значения факторов, при которых получение значение целевой функции.

Окно Journal (Журнал) с сообщением об успешном создании объекта "Процесс моделирования"

Рис. 7.7. Окно Journal (Журнал) с сообщением об успешном создании объекта "Процесс моделирования"
Окно Journal (Журнал) с отчетами по каждому наблюдению

Рис. 7.8. Окно Journal (Журнал) с отчетами по каждому наблюдению

Так как эксперимент включает 8 наблюдений по 9604 прогонов в каждом из них, то будет выдано 8 отчетов (на рис. 7.8 в целях сокращения показаны только первые четыре отчета). Окончательные результаты моделирования после статистической обработки будут выведены в виде таблицы Anova (рис. 7.9).

В таблице каждый фактор и взаимодействие факторов представлены отдельной строкой. В каждой строке для всех эффектов указаны коэффициенты, с которыми они входят в целевую функцию (столбец Effect ), а для главных эффектов (А, В, С) - суммы квадратов отклонений, аналогичных величинам Q 1 (см. п. 5.7) - столбец Sum of Squares.

В столбце Degrees of Freedom приведены степени свободы соответствующих измерений.

В столбце F-for Only Main Effects - вычисленные значения F-статистик для главных эффектов, а в столбце Critical Value of F (p=0,05) - соответствующие критические значения F - распределения для уровня значимости 50%.

В строке Error показаны остаточная составляющая дисперсии (аналогичная Q 2 в п. 5.7) и соответствующая степень свободы.

В строке Total - общая сумма квадратов ошибок по всему эксперименту.

Результаты дисперсионного анализа

увеличить изображение
Рис. 7.9. Результаты дисперсионного анализа

В строке Greand - среднее значение результата исследования (в примере - вероятности) по данным всего эксперимента.

Чем больше значение F-статистики ( F-for Only Main Effects ), тем сильнее эффект. Эффект, а, следовательно, и фактор, считается значимым, если превышает критическое значение ( Critical Value of F ( p=.05 )).

В данном примере факторы А, В и С являются значимыми, так как их F-статистики больше критического значения, равного 7.71.

Наибольший эффект на вероятность обработки запросов оказывают факторы В и А, так как они имеют самые большие и близкие статистики (356,055 и 355.658 соответственно). Обратите внимание, что эффекты факторов А и В противоположны.

Таким образом, по результатам моделирования можно сделать вывод, что при данном потоке и характеристике сервера вероятность обработки запросов в среднем составляет 0,481, т. е. вероятность потерь запросов составляет 0,519. Для уменьшения потерь запросов нужно продолжить исследование каждого значимого фактора и в первую очередь факторов В и А, как наиболее существенных.

< Лекция 7 || Лекция 8: 12345 || Лекция 9 >
Владислав Нагорный
Владислав Нагорный

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

Спасибо!

Лариса Парфенова
Лариса Парфенова

1) Можно ли экстерном получить второе высшее образование "Программная инженерия" ?

2) Трудоустраиваете ли Вы выпускников?

3) Можно ли с Вашим дипломом поступить в аспирантуру?