ЗАГАЛЬНА ХАРАКТЕРИСТИКА ПРЕДМЕТНОЇ ОБЛАСТІ
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

ЗАВДАНЯ

На курсову роботу з курсу

“Моделювання виробничих процесів у суднобудуванні”

 

Студент 5142 групи  Ковальов Д.В.

1) Тема курсової роботи : C татистичне моделювання сітьового графіка побудови судна      .

2) Основні початкові дані наведено у таблиці 1.

3) Структура розрахунково-пояснювальної записки:

a) Титульний лист;

b) Завдання на курсову роботу;

c) Анотація (українською, російською, англійською);

d) Зміст;

e) Перелік умовних означень;

f) Вступ;

g) Загальна частина (Розділ 1);

1) Спеціальна частина (Розділ 2, 3);

i) Висновки;

j) Список використаної літератури;

k) Додатки.

 

4) Дата видачі завдання “ ”      ___       2006 року

 

5) Строк здачі студентом готової роботи “ ”      ____        2006 року

 

Керівник курсової роботи Шнейдер О. Б.

 

Студент                 н


 Таблиця 1 - Початкові дані

Коди робіт Найменування робіт Оцінка тривалості
    Варіант
    6
1-2 Підготовка стапеля до закладення судна 1     1.5
2-5 Зборка і зварювання днищевих секцій 1 будівельного району (79-134 шп.) 13   14
2-3 Зборка і зварювання днищевих секцій у районі 75-79 шп. 4     4.3
3-6 Зборка і зварювання секцій перегородок , бортів і палуб у районі 75-79 шп. 20   21
3-4 Зборка і зварювання днищевих секцій у районі 71-75 шп. 5     5.1
5-8 Іспит на непроникливість міждонних відсіків 1 будівельного району 8.7  8,8
6-12 Монтаж систем (вантажний, зачистний і обігріву) у районі 75-79 шп. 16   16.6
6-7 Залежність 0         
4-7 Зборка і зварювання секцій перегородок , бортів і палуб у районі 71-75 шп. 15   16
4-10 Зборка і зварювання секцій у районі 67-71 шп. 5     5.8
7-12 Монтаж систем у районі 71-75 шп. 13   14
7-11 Залежність 0
10-11 Зборка і зварювання секцій перегородок , бортів і палуб у районі 67-71 шп. 18   19
10-13 Зборка і зварювання днищевих секцій у районі 63-67 шп. 7     8
11-12 Монтаж систем у районі 67-71 шп. 17   18
11-14 Залежність 0
12-20 Іспит на непроникливість вантажних танків у районі 67-79 шп. 6     7
13-16 Зборка і зварювання днищевих секцій у районі 59-63 шп. 9     10
13-14 Зборка і зварювання секцій перегородок , бортів і палуб у районі 63-67 шп. 15   16
14-19 Монтаж систем у районі 63-67 шп. 15   17
14-17 Залежність 0
16-17 Зборка і зварювання секцій перегородок , бортів і палуб у районі 59-63 шп. 20   25
17-19 Монтаж систем у районі 59-63 шп. 20   23
8-22 Фарбування підводної частини корпусу в районі 79 шп. – корми 30   35
20-22 Фарбування підводної частини корпусу в районі 67-79 шп. 4     7
19-21 Іспит на непроникливість вантажних танків у районі 59-67 шп. 8     12
21-22 Фарбування підводної частини корпусу в районі 59-67 шп. 2     8

АННОТАЦИЯ

 

В данном курсовом проекте моделируется сетевой график (СГ) построения судна методом статистических испытаний.

В работе проводится разработка программного обеспечения, решающего две задачи:

1) реализующего модель сетевого графика и позволяющего расчитывать временные параметры проекта, а также изображать модель в виде диаграммы Гантта;

2) моделирующего сетевой граф методом статистических испытаний.

Курсовой проект изложен на 41 страницах машинописного текста, содержит 5 рисунков, 3 таблицы, 1 приложение.

Работа выполнена на украинском языке.

 

АНОТАЦІЯ

В даному курсовому проекті моделюється сітьовий графік (СГ) побудови судна методом статистичних випробувань.

В роботі проводиться розробка двох типів програмного забезпечення:

1) того, що реалізує модель сітьового графіка і дозволяє розрахувати часові параметри проекту, а також зобразити модель у виді діаграми Гантта;

2) того, що моделює сітьовий графік методом статистичних випробувань.

Курсовий проект виконано на 41 сторінках друкованого тексту, містить 5 рисунка, 3 таблиці, 1 доданок.

Робота виконана українською мовою.

 

ANOTATION

The shipbuilding net graph modeling was done in the term work. It’s introduced with the purpose of reception of the maximal profit from work of some enterprise.

The work is done on 41 pages of the printed text, contains 5 illustrations. The work also has 1 appendices, which contain the text and results of performance of the program. For creation of this work were used three sources of information.

The work is done in the Ukrainian language.





ЗМІСТ

 

 

Перелік умовних означень ...................................................................................................... 4

Вступ ............................................................................................................................................. 6

1.  Загальна характеристика предметної області............................................................... 6

1.1 Дослідження процесу побудови судна ……………………………………….7

1.1.1 Аналіз процесу побудови судна як об’єкта управління…...……………7

1.1.2 Поняття технологічного та виробничого процесів у суднобудуванні…………………………………….…………………..….8

1.1.3 Особливості виробничого процесу у суднобудуванні............................8

1.1.4 Принципи формування планово-облікових одиниць…...........................9

1.1.5 Етапи побудови суден.................................................................................9

1.1.6 Причини використання СУПС………………………………………..…10

1.2 Аналіз методів управління проектами………………………………………..10

               1.2.1 Метод критичного шляху…………………………………………….…11

               1.2.2 Метод критичного шляху та основні параметри сітьового графіка…12

1.3 Вітчизняний і закордонний досвід використання СУПС…………………...13

1.4 Змістовна постановка задачі………………………………………………….16

2. Розробка детермінованої моделі сітьового графіка і моделювання ……………17

2.1 Розробка програмного забезпечення для моделювання детермінованої моделі………………………………………………………………………….....17

3. Моделювання сітьового графіка методом статистичних випробувань …………19

3.1 Описання теоретичної суті методу …………………………………………...19

3.2 Розробка програмного забезпечення для моделювання……………………..23

3.3 Результати розрахунків…………………………………………………….…..24

Висновки ………………………………………………………………………………..29

Список використаної літератури ……………………………………………………...30

Додаток А - Текст програми …………………………………………………………..31



ПЕРЕЛІК УМОВНИХ ОЗНАЧЕНЬ

В курсовій роботі використовуються наступні умовні означення:

1. СУПС – система управління проектами у суднобудуванні

2. СГ – сітьовий граф

3. СПК – сітьове планування і керування

4. CPM – Critical Path Method

5. PERT – Program Evolution and Review Technique

6. ВП – виробничий процес



ВСТУП

 

Собівартість судна як виду продукції багато в чому визначається прийнятими конструктивними рішеннями. У силу зростання ролі вартості проектних і конструкторських робіт у виробничих витратах варто прагнути до прийняття конструкторами раціональних рішень за мінімальний час. Для цього використовується спеціальне ПЗ, що дозволяє планувати роботи у побудові судна - система управління проектами у суднобудуванні (СУПС). В свою чергу СУПС використовує технологію сітьового планування і керування.

Для дослідження моделювання виробничих процесів у суднобудуванні темою цієї курсової роботи було обрано розробка сітьових графіків побудови судна та їх дослідження методом статистичних випробувань. В ході роботи буде розроблене алгоритмічне та програмне забезпечення.

Для досягнення вказаної мети потрібно зробити наступні кроки:

· проаналізувати предметну область дослідження;

· виконати змістовну постановку задачі, що розв’язується у роботі;

· описати теоретичну суть та послідовність розрахунків імовірнісних
         характеристик параметрів проекту для методу статистичних випробувань;

· розробити детерміновану модель сітьового графіка, що дозволяє розрахувати
         часові параметри проекту і зобразити модель у виді діаграми Гантта і
         провести моделювання за початковими даними;

· розробити програмне забезпечення для статистичного моделювання сітьового
         графіка за початковими даними;

· зробити висновки по роботі та досягнутим результатам.

 







Періоди побудови суден.

 

Так як час побудови судна досить тривалий, то для зручного обліку виконання робіт прийнято поділяти його на періоди. Хоча періоди досить обособлені але вони можуть виконуватись паралельно, але більш раціонально щоб вони виконувались послідовно.

Виробничий цикл побудови судна поділяється на періоди:

² Заготовчий період – частина ВВ, що включає роботи, які виконуються від початку обробки метала до початку зборки секцій та блоків. На протязі заготов чого періоду виготовлюють деталі корпуса судна, вузлові секції корпуса, труби, елементи систем, пристроїв, обладнання суднових приміщень.

² Блочний період – частина ВВ, включає роботи, які виконуються від початку зборки блоків до початку формування корпуса. В цьому періоді збирають блоки, секції, встановлюють в них механізми, ділянки трубопроводів, елементи суднових систем та пристроїв.

² Стапельний період – частина ВВ, включає роботи, які виконуються від початку формування корпуса на стапелі до спуску судна на воду. На протязі цього періоду формується корпус, іспитується на непроникливість блоки секцій, виконується монтаж головних та частини допоміжних механізмів, монтаж валопроводів, систем та пристроїв, монтаж ізоляції.

² Добудовчий період – частина ВВ, включає роботи, які виконуються після спуску судна на воду та до початку швартових випробувань, закінчується монтаж механізмів, систем, вентиляції та систем кондиціювання, робіт по обладнанню та обробці приміщень.

² Здаточний період – роботи, що виконуються від початку швартових випробувань та до здачі замовнику.

 

 

Причини використання СУПС.

 

Відомо, що терміни розробки проектної документації як у цілому так і для окремих етапів будівництва судна, істотно впливають на величину витрат виробництва і ціну судна. Справді, собівартість судна як виду продукції багато в чому визначається прийнятими конструктивними рішеннями. Більш того, вплив цих рішень зростає в міру реалізації проекту судна, тому що вони лежать в основі організації постачань і закупівель комплектуючих виробів, що дуже важко змінити, а також у виготовлені суднові конструкції, які дуже складно переробляти. Роботи ці дорогі, оскільки конструкторські рішення альтернативні, важливо переконатися, що всі основні рішення оптимальні і прийняті настільки вчасно, наскільки це дозволяє специфіка проекту судна.

Радикальні конструкторські зміни, що виникли в ході реалізації проекту судна, впливають на витрати не пропорційно часу просування робіт, а по експонентному законі. Цим підтверджується необхідність прийняття на можливо ранньої стадії максимально можливого числа основних конструкторських рішень. У силу зростання частки вартості проектних і конструкторських робіт у виробничих витратах варто прагнути до прийняття конструкторами раціональних рішень за мінімальний час.

Цього можна досягти за допомогою систем, що дозволяють проаналізувати весь проект і його окремі частини, що забезпечують швидкий доступ до точної інформації. Саме таку можливість надають системи управління проектами у суднобудуванні, яка включає велику кількість підсистем, що контролюють окремі задачі.

 

Планирование проекта

Интерфейс аналогичен MS Office Да Нет Нет Интерактивный самоучитель Да Нет Нет Трудоемкость разработки структур работ Низкая Высокая Низкая Более чем 1 связь между работами Нет Да Нет Планирование от "Объема" ("реалии управления в 80-х годах прошлого века") Требуется знать методику использования Нет Да Структуры ресурсов Да Да Да Мастера предоставления и оптизации ресурсов для проекта Да Нет Нет Профили загрузки Да Да Нет Разделяемые пулы (Управление ресурсами проектного подразделения в целом) Да Да Нет Управление портфелями проектов Да Да Нет Планирование затрат Да Да Да Сверхурочные затраты Да Да Нет Оценка влияния рисков через имитационное моделирование "а что если?" Да Да Нет Анализ вероятности окончания проекта по условиям Нет Нет Да Интерактивная оптимизация планов проекта Да Да Нет Автоматическая оптимизация без интерактивности Да Да Да

Коллективная работа

Работа на основе промышленной СУБД (SQL Server) Да Да Нет Web-доступ к проектной информации Да Да Нет Web-анализ состояния ресурсов Да Да Нет Поддержка мобильных средств класса Palm Нет Да Нет Взаимодействие с исполнителями Да Да Нет Средства для информирования высшего управленческого звена Да Да Нет Средства для принятия стратегических решений топ-менеджерами Да Да Нет Отслеживание запросов по контролю качества Да Нет Нет Интегрированная поддержка проектного документооборота Да Нет Нет

Оценки применимости

Оптимальное сочетание цена/качество Да Нет Нет Сеть внедренцев Широкая Узкая Узкая Консалтинговая поддержка Широкая Узкая Узкая "Сегмент успеха" Лидерство в малых и средних компания Ниша: решения  свыше 350 раб. мест. Компании с советскими методиками управления

Змістовна постановка задачі

 

На основі проведеного аналізу предметної області можна зрозуміти, що в ході курсової роботи для досягнення поставленої мети потрібно виконати три наступні підзадачі:

 

I. Розробка детермінованої моделі сітьового графіка, що дозволяє розрахувати часові параметри проекту та зобразити модель у виді діаграми Ганта, та проведення моделювання за отриманими початковими даними. Цю підзадачу можна розбити на такі кроки:

1. Розробити програмні структури для обраного представлення сітьового графа (СГ).

2. Розробити програмне забезпечення для топологічного аналізу СГ на наявність обривів та контурів.

3. Розробити програмне забезпечення для розрахунку критичного шляху, визначення ранніх і пізніх термінів настання подій, ранніх і пізніх термінів початку і закінчення робіт, повних і вільних резервів часу виконання робіт.

4. Результати розрахунків представити у виді таблиці.

5. Розробити програмне забезпечення для графічного представлення СГ у вигляді діаграми Ганта.

 

II. Розробка алгоритмічного та програмного забезпечення для статистичного моделювання сітьового графіка методом статистичних випробувань за отриманими початковими даними. Друга підзадача поділяється на два кроки:

1. Описати теоретичну суть та послідовність розрахунків імовірнісних характеристик параметрів проекту.

2. Навести алгоритми основної програми, структуру вхідних і вихідних даних.

 

III. Основні висновки по роботі та аналіз досягнутих результатів.



Результати розрахунків

Рисунок 1 – Временные параметры для tmin

 

Рисунок 2 – Диаграмма Ганта для tmin

Рисунок 3 – Временные параметры для tmax

Рисунок 4 – Диаграмма Ганта для tmax

Рисунок 5 – Временные параметры для tavg

Рисунок 6 – Диаграмма Ганта для tavg

Рисунок 7 –Розрахунок імовірностних характеристик L_kp

Рисунок 8 – График статистического распределения T_kp 

Данное распределение можно считать нормальным

Результати виконання прогрими зберігаються у файлах.



ВИСНОВКИ

 

Моделювання сітьового графіка методом статистичних випробувань можна вважати більш достовірним, ніж детерміноване моделювання, бо отримані параметри СГ розгдядаються в ньому як випадкові величини. Такий підхід дозволяє розробити модель, більш наближену до реальних умов процесу створення судна. Також треба відзначити, що метод Монте-Карло враховує зміну не лише довжини критичного шляху, а й списку вершин, через які він проходить.

При моделювання сітьового графіка методом статистичних випробувань за початковими данними було з’ясовано, що T кр є нормально розподіленою випадковою величиною. Це обумовлено тим, що критичний шлях був постійним в кожній з реалізацій. Проте не всі t р i t п подій розподілені за нормальним законом, це викликано недостатньою кількістю випробувань. Таке допущення підтверджується тим, що зі збільшенням числа випробувань, збільшується і кількість t р та t п, розподілених за Гаусом. Однак використаний компілятор не дозволяє збільшити кількість експериментів через перевищення допустимого розміру сегменту даних. Така сітуація характерна для даного методу, бо кількість даних для обробки при достатньо великій кількості робіт накладає певні вимоги до програмних та апаратних засобів. Такі вимоги і є головним недоліком для застосування методу статистичних випробувань.



Додаток А – Текст программи

 

using System;

using System.Drawing;

using System.Drawing.Drawing2D;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.Data;

using System.IO;

using System.Diagnostics;

namespace WindowsApplication1

{

  public class Form1 : System.Windows.Forms.Form

  {

        private const int mx=5;

        private const int ht=8;

        private const int zz=130;

        private int n,m,k,v;

        static int /*nij,*/n_ij;

        private double Mx,S2x,Sx,X_2;

        private double L_kp_min,L_kp_max,L_kp_avg;

        private double L_kp_mat,L_kp_dsp,L_kp_otk;

        private System.Windows.Forms.MainMenu mainMenu1;

        private System.Windows.Forms.MenuItem menuItem1;

        private System.Windows.Forms.MenuItem menuItem2;

        private System.Windows.Forms.OpenFileDialog openFileDialog1;

        private ArrayList codi,codj,naim,mint,maxt;

        private double []tp_min; private double []tp_max; private double []tp_avg;

        private double []tn_min; private double []tn_max; private double []tn_avg;

        private double []R_min; private double []R_max; private double []R_avg;

        private double []r_min; private double []r_max; private double []r_avg;

        private double [,]tpn_min; private double [,]tpn_max;

private double [,]tpn_avg;

        private double [,]tnn_min; private double [,]tnn_max;

private double [,]tnn_avg;

        private double [,]tpo_min; private double [,]tpo_max;

private double [,]tpo_avg;

        private double [,]tno_min; private double [,]tno_max;

private double [,]tno_avg;

        private double [,]Rn_min; private double [,]Rn_max;

private double [,]Rn_avg;

        private double [,]Rcb_min; private double [,]Rcb_max;

private double [,]Rcb_avg;

        private double [,]C_min; private double [,]C_max; private double [,]C_avg;

        private int [,]P_min; private int [,]P_max; private int [,]P_avg;

        private double [,]C_rev_min; private double [,]C_rev_max;

private double [,]C_rev_avg;

        private int [,]P_rev_min; private int [,]P_rev_max;

private int [,]P_rev_avg;

        private System.Windows.Forms.TabControl tabControl1;

        private System.Windows.Forms.TabPage tabPage1;

        private System.Windows.Forms.TabPage tabPage2;

        private System.Windows.Forms.TabControl tabControl2;

        private System.Windows.Forms.TabPage tabPage3;

        private System.Windows.Forms.TabPage tabPage4;

        private System.Windows.Forms.TabPage tabPage5;

        private System.Windows.Forms.TabControl tabControl3;

        private System.Windows.Forms.TabPage tabPage6;

        private System.Windows.Forms.TabPage tabPage7;

        private System.Windows.Forms.TabPage tabPage8;

        private System.Windows.Forms.TabControl tabControl4;

        private System.Windows.Forms.TabPage tabPage9;

        private System.Windows.Forms.TabPage tabPage10;

        private System.Windows.Forms.DataGrid dataGrid1;

        private System.Windows.Forms.DataGrid dataGrid2;

        private System.Windows.Forms.PictureBox pictureBox1;

        private System.Windows.Forms.DataGrid dataGrid3;

        private System.Windows.Forms.PictureBox pictureBox2;

        private System.Windows.Forms.DataGrid dataGrid4;

        private System.Windows.Forms.PictureBox pictureBox3;

        private System.Windows.Forms.Label label1;

        private System.Windows.Forms.Label label2;

        private System.Windows.Forms.Label label3;

        private System.Windows.Forms.MenuItem menuItem3;

        private System.Windows.Forms.MenuItem menuItem4;

        private System.Windows.Forms.Label label4;

        private System.Windows.Forms.Label label5;

        private System.Windows.Forms.Label label6;

        private System.Windows.Forms.TabPage tabPage11;

        private System.Windows.Forms.Label label7;

        private System.Windows.Forms.Label label8;

        private System.Windows.Forms.Label label9;

        private System.Windows.Forms.PictureBox pictureBox4;

        private System.Windows.Forms.Label label10;

        private System.Windows.Forms.Button button1;

        private System.ComponentModel.Container components = null;

 

        public Form1()

        {

               InitializeComponent();

        }

        protected override void Dispose( bool disposing )

        {

               if( disposing )

               {

                      if (components != null)

                      {

                             components.Dispose();

                      }

               }

               base.Dispose( disposing );

        }

        [STAThread]

        static void Main()

        {

               Application.Run(new Form1());

        }

 

        static void Read_Data(string FileName,ArrayList codi,ArrayList codj,

ArrayList naim,ArrayList mint,ArrayList maxt)

        {

               FileStream f = new FileStream(FileName,FileMode.Open);

               StreamReader r = new StreamReader(f);

                                 

               string delimStr = "\t";

               char [] delimiter = delimStr.ToCharArray();

               string s;

               string [] split = null;

                   

               codi.Add(0);

               codj.Add(0);

               naim.Add(0);

               mint.Add(0);

               maxt.Add(0);

               while((s = r.ReadLine())!= null)

               {

                      split = s.Split(delimiter,5);    

                      codi.Add(split[0]);

                      codj.Add(split[1]);

                      naim.Add(split[2]);

                      mint.Add(split[3]);

                      maxt.Add(split[4]);

                          

               }

                   

               r.Close();

               f.Close();

        }

            

        private void ShowGrid1(DataGrid grid,ArrayList codi, ArrayList codj,

ArrayList naim, ArrayList mint, ArrayList maxt)

        {

               DataTable tab = new DataTable("tabl");

               DataColumn c0 = new DataColumn("Код работы i");

               DataColumn c1 = new DataColumn("Код работы j");

               DataColumn c2 = new DataColumn("Наименование работы");

          DataColumn c3 = new DataColumn("Минимальное время t");

               DataColumn c4 = new DataColumn("Максимальное время t");

                   

               tab.Columns.Add(c0);

               tab.Columns.Add(c1);

               tab.Columns.Add(c2);

               tab.Columns.Add(c3);

               tab.Columns.Add(c4);

               for(int i=1; i<codi.Count; i++)

               {

                      DataRow row = tab.NewRow();

                      row["Код работы i"] = codi[i];

                      row["Код работы j"] = codj[i];

                      row["Наименование работы"] = naim[i];

                      row["Минимальное время t"] = mint[i];

                      row["Максимальное время t"] = maxt[i];

                                                

                      tab.Rows.Add(row);

               }

                   

               grid.DataSource = tab;

 

        }

 

        private void ShowGrid2(DataGrid grid,double [,]C, double [,]tpn,

double [,]tpo, double [,]tnn, double [,]tno, double [,]Rn, double [,]Rcb)

        {

               int nn = (int)Math.Sqrt(C_avg.Length)-1;

               DataTable tab2 = new DataTable("tabl2");

               DataColumn c0 = new DataColumn("Код i,j");

               DataColumn c1 = new DataColumn("t(i,j)");

               DataColumn c2 = new DataColumn("tpn(i,j)");

               DataColumn c3 = new DataColumn("tpo(i,j)");

               DataColumn c4 = new DataColumn("tnn(i,j)");

               DataColumn c5 = new DataColumn("tno(i,j)");

               DataColumn c6 = new DataColumn("Rn(i,j)");

               DataColumn c7 = new DataColumn("Rcb(i,j)");

                   

               tab2.Columns.Add(c0);

               tab2.Columns.Add(c1);

               tab2.Columns.Add(c2);

               tab2.Columns.Add(c3);

               tab2.Columns.Add(c4);

               tab2.Columns.Add(c5);

               tab2.Columns.Add(c6);

               tab2.Columns.Add(c7);

                   

               string str;

               n_ij=0;

               for(int i=1; i<=nn; i++)

                      for(int j=1; j<=nn; j++)

                             if(C[i,j]>=0)

                             {

                               DataRow row = tab2.NewRow();

                                                           

                                   row["Код i,j"] = i.ToString()+"-"+j.ToString();

                                   str = String.Format("{0:F2}",C[i,j]);

                                   row["t(i,j)"] = str;

                                   str = String.Format("{0:F2}",tpn[i,j]);

                                   row["tpn(i,j)"] = str;

                                   str = String.Format("{0:F2}",tpo[i,j]);

                                   row["tpo(i,j)"] = str;

                                   str = String.Format("{0:F2}",tnn[i,j]);

                                   row["tnn(i,j)"] = str;

                                   str = String.Format("{0:F2}",tno[i,j]);

                                   row["tno(i,j)"] = str;

                                   str = String.Format("{0:F2}",Rn[i,j]);

                                   row["Rn(i,j)"] = str;

                                   str = String.Format("{0:F2}",Rcb[i,j]);

                                   row["Rcb(i,j)"] = str;

                                                                  

                                   tab2.Rows.Add(row);   n_ij++;

                             }

               grid.DataSource = tab2;

 

        }

 

        private void AlgorithmFloyda(double [,]C, int [,]P)

        {

               int i,j,k;

               int nn = (int)Math.Sqrt(C.Length)-1;

               double [,]A = new double[nn+1,nn+1];

               for(i=1; i<=nn; i++)

                      for(j=1; j<=nn; j++)

                      {

                             A[i,j] = C[i,j];

                             P[i,j] = 0;

                      }

               for(i=1; i<=nn; i++)

                      A[i,i] = 0;

               for(k=1; k<=nn; k++)

                      for(i=1; i<=nn; i++)

                             for(j=1; j<=nn; j++)

                                   if(A[i,k] + A[k,j] >A[i,j])

                                   {

                                          A[i,j]=A[i,k]+A[k,j];

                                          P[i,j]=k;

                                   }

 

        }

 

        private void Path(int [,]P, double [,]C, int i, int j, ref double l,

ref int sec)

        {

               int k;

               k=P[i,j];

               if(k!=0)

               {

                      sec=k;

                      Path(P,C,i, k, ref l, ref sec);

                      l=l+C[k,j];

                      Path(P,C,k, j, ref l, ref sec);

               }

        }

 

        private double MaxPath(double [,]C, int [,]P, int i, int j)

        {

               double l;int sec_v;

                   

               l=0;

               sec_v=0;

               Path(P,C,i, j,ref l, ref sec_v);

               if(sec_v!=0) return l+C[i,sec_v];//между ними min одна вершина –

вторая

               else return C[i,j];

        }

 

        private double GetMat(double tmin,double tmax,double tver)

        {

               double avg;

               avg = (tmin+4*tver+tmax)/6;

               return avg;

        }

 

        private double GetDsp(double tmin,double tmax)

        {

               double Ds;

               Ds = 0.4*Math.Pow(tmax-tmin, 2);

               return Ds;

        }

 

        private double GetOtk(double tmin,double tmax)

        {

               double ot;

               ot = (tmax-tmin)/6;

               return ot;

        }

 

        private void GetPar(double [,]C, double []tp,double []tn, double [,]tpn,

double [,]tpo, double [,]tno, double [,]tnn, double [,]Rn, double [,]Rcb)

        {

                          

               for(int i=1; i<=n; i++)

                      for(int j=1; j<=n; j++)

                             if(C[i,j]>=0)

                             {

                   

                                   //ранние сроки начала и окончания работы

                                   tpn[i,j]=tp[i]; tpo[i,j]=tpn[i,j]+C[i,j];

                                   //поздние сроки начала и окончания работы

                                   tno[i,j]=tn[j]; tnn[i,j]=tno[i,j]-C[i,j];

                                   //полный резерв времени работы

                                   Rn[i,j]=tno[i,j]-tpo[i,j];

                                   //свободный резерв времени работы

                                   Rcb[i,j]=tp[j]-tpo[i,j];

                             }

                   

        }

 

        private double GetNorm(Random r)

        {

               double U1,U2,V1,V2,S,X1,Norm;

               l1:

               U1 = r.NextDouble();

               U2 = r.NextDouble();

               V1 = 2*U1-1;

               V2 = 2*U2-1;

               S = V1*V1+V2*V2;

               if(S>=1) goto l1;

               X1 = V1*Math.Sqrt(-2*Math.Log(S,Math.E)/S);

                   

               Norm = X1;

               return Norm;

        }

            

        private double GetCC(Random r,double mint,double maxt,ref double Norm)

        {

                   

               double C;

               Norm = GetNorm(r);

               C = mint+Norm*(maxt-mint);

               return C;

        }

            

        private int GetMax(ArrayList codjj)

        {

               int Max;

               Max=0;

               for(int i=1; i<codi.Count; i++)

                      Max=Math.Max(Max,Convert.ToInt32(codjj[i]));

               return Max;

        }

 

        private double GetMax(double [,]C)

        {

               double Max;

               Max=0;

               int nn = (int)Math.Sqrt(C.Length)-1;

               for(int i=1; i<=nn; i++)

                      for(int j=1; j<=nn; j++)

                             if(C[i,j]>=0)

                                   Max=Math.Max(Max,C[i,j]);

               return Max;

        }

            

private void menuItem2_Click(object sender, System.EventArgs e)

        {

               int i,j;

               openFileDialog1.FileName="test.txt";

               openFileDialog1.ShowDialog();

                   

               codi = new ArrayList();

               codj = new ArrayList();

               naim = new ArrayList();

               mint = new ArrayList();

               maxt = new ArrayList();

                   

                   

               Read_Data(openFileDialog1.FileName,codi,codj,naim,mint,maxt);

                   

               ShowGrid1(dataGrid1,codi,codj,naim,mint,maxt);

                   

            

               n=GetMax(codj);

                   

            

               C_min = new double[n+1,n+1]; C_max = new double[n+1,n+1];

C_avg = new double[n+1,n+1];

               P_min = new int[n+1,n+1]; P_max = new int[n+1,n+1];

P_avg = new int[n+1,n+1];

C_rev_min = new double[n+1,n+1]; C_rev_max = new double[n+1,n+1]; C_rev_avg = new double[n+1,n+1];

               P_rev_min = new int[n+1,n+1]; P_rev_max = new int[n+1,n+1];

P_rev_avg = new int[n+1,n+1];

            

               ArrayList Li = new ArrayList();

               for(int c=0; c<zz; c++)

               {

                      for(i=1; i<=n; i++)

                             for(j=1; j<=n; j++)

                             {

                                   C_min[i,j]=-1000;

                                   C_max[i,j]=-1000;

                                   C_avg[i,j]=-1000;

                             }

                      Random r = new Random();

                      m=codi.Count;

                   

                      double nrm=0;

                          

                      for(i=1; i<m; i++)

                      {

                            C_min[Convert.ToInt32(codi[i]),

Convert.ToInt32(codj[i])]=Convert.ToDouble(mint[i]);

                             C_max[Convert.ToInt32(codi[i]),

Convert.ToInt32(codj[i])]=Convert.ToDouble(maxt[i]);

                                 

C_avg[Convert.ToInt32(codi[i]),

Convert.ToInt32(codj[i])]=GetCC(r,C_min[Convert.ToInt32(codi[i]),Convert.ToInt32(codj[i])],C_max[Convert.ToInt32(codi[i]),Convert.ToInt32(codj[i])],ref nrm);

                                 

                      }

                      for(i=1; i<=n; i++)

                             for(j=1; j<=n; j++)

                             {

                                   C_rev_min[n-j+1,n-i+1]=C_min[i,j];

                                   C_rev_max[n-j+1,n-i+1]=C_max[i,j];

                                   C_rev_avg[n-j+1,n-i+1] = C_avg[i,j];

//GetMat(C_rev_min[n-j+1,n-i+1],C_rev_max[n-j+1,

n-i+1]);

                             }

 

                      AlgorithmFloyda(C_min,P_min);

                      AlgorithmFloyda(C_rev_min,P_rev_min);

                   

                      AlgorithmFloyda(C_max,P_max);

                      AlgorithmFloyda(C_rev_max,P_rev_max);

 

                      AlgorithmFloyda(C_avg,P_avg);

                      AlgorithmFloyda(C_rev_avg,P_rev_avg);

 

                      tp_min = new double[n+1]; tp_max = new double[n+1];

tp_avg = new double[n+1];

                      tn_min = new double[n+1]; tn_max = new double[n+1];

tn_avg = new double[n+1];

                      R_min = new double[n+1]; R_max = new double[n+1];

R_avg = new double[n+1];

                      r_min = new double[n+1]; r_max = new double[n+1];

r_avg = new double[n+1];

            

      

 

                      tp_min[1]=0; tp_max[1]=0; tp_avg[1]=0;

                      for(i=2; i<=n; i++)

                      {

                             tp_min[i]=MaxPath(C_min,P_min,1,i);

                             tp_max[i]=MaxPath(C_max,P_max,1,i);

                             tp_avg[i]=MaxPath(C_avg,P_avg,1,i);

                      }

 

                   

                      L_kp_min=tp_min[n]; L_kp_max=tp_max[n]; L_kp_avg = tp_avg[n];

Li.Add(L_kp_avg);

               }

               label1.Text = "L_kp = "+String.Format("{0:F2}",L_kp_min);

               label2.Text = "L_kp = "+String.Format("{0:F2}",L_kp_max);

               label3.Text = "L_kp = "+String.Format("{0:F2}",L_kp_avg);

 

               L_kp_mat = GetMat(L_kp_min,L_kp_max,L_kp_avg); L_kp_otk =

GetOtk(L_kp_min,L_kp_max);

               L_kp_dsp = Math.Pow(L_kp_otk,2);

               tn_min[n]=L_kp_min; tn_max[n]=L_kp_max; tn_avg[n]=L_kp_avg;

                   

               for(i=2; i<=n; i++)

               {

                      tn_min[n-i+1]=L_kp_min-MaxPath(C_rev_min, P_rev_min, 1, i);

                      tn_max[n-i+1]=L_kp_max-MaxPath(C_rev_max, P_rev_max, 1, i);

                      tn_avg[n-i+1]=L_kp_avg-MaxPath(C_rev_avg, P_rev_avg, 1, i);

               }

 

               label4.Text="На критическом пути расположены следующие вершины: ";

               label5.Text="На критическом пути расположены следующие вершины: ";

               label6.Text="На критическом пути расположены следующие вершины: ";

               for(i=1; i<=n; i++)

               {

                      R_min[i]=tn_min[i]-tp_min[i];

                      R_max[i]=tn_max[i]-tp_max[i];

                      R_avg[i]=tn_avg[i]-tp_avg[i];

                          

                      if(R_min[i]==0)

                             label4.Text+=i.ToString()+" ";

                      if(R_max[i]==0)

                             label5.Text+=i.ToString()+" ";

                      if(R_avg[i]==0)

                             label6.Text+=i.ToString()+" ";

                          

               }

                   

                   

                   

               tpn_min = new double[n+1,n+1]; tpn_max = new double[n+1,n+1];

tpn_avg = new double[n+1,n+1];

               tnn_min = new double[n+1,n+1]; tnn_max = new double[n+1,n+1];

tnn_avg = new double[n+1,n+1];

           

tpo_min = new double[n+1,n+1]; tpo_max = new double[n+1,n+1];

tpo_avg = new double[n+1,n+1];

               tno_min = new double[n+1,n+1]; tno_max = new double[n+1,n+1];

tno_avg = new double[n+1,n+1];

               Rn_min = new double[n+1,n+1]; Rn_max = new double[n+1,n+1];

Rn_avg = new double[n+1,n+1];

               Rcb_min = new double[n+1,n+1]; Rcb_max = new double[n+1,n+1];

Rcb_avg = new double[n+1,n+1];

                   

               /*nij =

*/GetPar(C_min,tp_min,tn_min,tpn_min,tpo_min,tno_min,tnn_min,

Rn_min,Rcb_min);

                   

               ShowGrid2(dataGrid2,C_min,tpn_min, tpo_min, tnn_min, tno_min,

Rn_min, Rcb_min);

                                 

               /*nij =

*/GetPar(C_max,tp_max,tn_max,tpn_max,tpo_max,tno_max,tnn_max,

Rn_max,Rcb_max);

                   

               ShowGrid2(dataGrid3,C_max,tpn_max, tpo_max, tnn_max, tno_max,

Rn_max, Rcb_max);

GetPar(C_avg,tp_avg,tn_avg,tpn_avg,tpo_avg,tno_avg,tnn_avg,

Rn_avg,Rcb_avg);

                   

               ShowGrid2(dataGrid4,C_avg,tpn_avg, tpo_avg, tnn_avg, tno_avg,

Rn_avg, Rcb_avg);

                   

               k=(int)(1+3.32*Math.Log10(n));

                   

               MainStatistics(Li,out Mx,out S2x,out Sx,out X_2);

                   

               label7.Text="Матожидание T_kp="+String.Format("{0:F2}",Mx);

               label8.Text="Дисперсия T_kp = "+String.Format("{0:F2}",S2x);

               label9.Text="Ср. кв. от. T_kp="+String.Format("{0:F2}",Sx);

               label10.Text="Хі квадрат ="+String.Format("{0:F2}",X_2)+

", число ступеней свободы v="+v.ToString();

                   

        }

            

        private void MainStatistics(ArrayList x,out double Mx,out double

S2x,out double Sx,out double X_2)

        {

               int i, j;

               double /*m2, m4,*/ x_max, x_min, h;

               FileStream f = new FileStream("test.xls",FileMode.Create);

               StreamWriter w = new StreamWriter(f);

                   

               int []n_ = new int[k+1];

               double []p_ = new double [k+1];

               double []x_cp = new double [k+1];

                   

               Mx=0; S2x=0; Sx=0;

               x_max=Convert.ToDouble(x[0]);

               x_min=Convert.ToDouble(x[0]);

                   

               for(i=0; i<x.Count; i++)

               {

                      if( x_max < Convert.ToDouble(x[i]))

x_max=Convert.ToDouble(x[i]);

                      if( x_min > Convert.ToDouble(x[i]))

x_min=Convert.ToDouble(x[i]);

               }

               h=(x_max-x_min)/k;

               for(j=1; j<=k; j++)

               {

                      p_[j]=0;

                      n_[j]=0;

                      x_cp[j]=x_min+h*(j-1)+h/2;

               }

               n_[1]=1;

               for(i=0; i<x.Count; i++)

                      for(j=1; j<=k; j++)

                             if ((Convert.ToDouble(x[i]) > x_min+(j-1)*h) &&

(Convert.ToDouble(x[i]) <= x_min+j*h) )

                             {

                             n_[j]++;

                             break;

                             }

               for(i=1; i<=k; i++)

                      Mx=Mx+x_cp[i]*n_[i];

               Mx=Mx/x.Count;

               for(i=1; i<=k; i++)

                      S2x=S2x+Math.Pow(x_cp[i]-Mx,2)*n_[i];

               S2x=S2x/(x.Count-1);

               Sx=Math.Sqrt(S2x);

               X_2=0;

               for(j=1; j<=k; j++)

               {

                      p_[j]=h*Math.Exp(-Math.Pow(x_cp[j]-Mx,2)/(2*S2x))/(

Math.Sqrt(2*Math.PI)*Sx);

                      w.WriteLine(x_cp[j].ToString()+"\t"+p_[j].ToString());

                      X_2=X_2+Math.Pow(n_[j]-p_[j]*x.Count,2)/(p_[j]*x.Count);

               }

               v = k-3;

               w.Close(); f.Close();

        }

            

        private void DrawGant(Graphics g,/*int n_ij,*/double [,]C,

double [,]tpn,double [,]tpo,double [,]tno,double [,]tnn)

        {

               int i,j;

               Pen pn = new Pen(Color.Black);

               Pen p = new Pen(Color.Black);

               Pen p1 = new Pen(Color.Green,ht);

               Pen p2 = new Pen(Color.Red,ht);

               Font fnt = new Font("Courier New",ht);

          SolidBrush sbr = new SolidBrush(Color.Black);

               int dy=17;

               float y0,y1,y2,x0,x1,x2,yn,xn;

               x0=10; y0=10;

               x1=x0; y1=y0;

               double max = GetMax(tno);

               double dx = max/ 10;

               double sx=0;

               xn=x0+(float)max*mx;

               yn=m-1+dy*n_ij;

               pn.EndCap = LineCap.ArrowAnchor;

            

               g.DrawLine(pn,x0,yn,xn,yn);

               g.DrawString("Работы",fnt,sbr,x0,y0-10);

               //g.DrawString(max.ToString(),fnt,sbr,x0+(float)max*mx,yn);

                                       

               for(i=0; i<=10; i++)

               {

                      if(i<10)g.DrawLine(p,x0+(float)sx*mx,yn-2,

x0+(float)sx*mx,yn+2);

                          

g.DrawString(String.Format("{0:F2}",sx),fnt,sbr,

x0+(float)sx*mx,yn);

                      sx+=dx;

               }

            

               g.DrawLine(pn,x0,yn,x0,y0);

               g.DrawString("Время",fnt,sbr,xn+(float)dx*mx,yn);

               for(i=1; i<=n; i++)

                      for(j=1; j<=n; j++)

                             if(C[i,j]>=0)

                             {

                                   x1=x0+(float)tpn[i,j]*mx;

                                   x2=x1+(float)C[i,j]*mx;

                                   y1+=dy; y2=y1;

                                   g.DrawLine(p1,x1,y1,x2,y2);

                                       

                                   if(tpo[i,j]!=tno[i,j])

                                   {

                                          x1=x2;

                                          x2=x1+(float)(tno[i,j]-tpo[i,j])*mx;

                                          g.DrawLine(p2,x1,y1,x2,y2);

                                   }

                                       

                                   g.DrawString(i.ToString()+"-

"+j.ToString(),fnt,sbr ,x2,y2-ht);

                                       

                             }

        }

      

        private void pictureBox1_Paint(object sender,

System.Windows.Forms.PaintEventArgs e)

        {

                   

               Graphics g = e.Graphics;

               DrawGant(g,/*nij,*/C_min,tpn_min,tpo_min,tno_min,tnn_min);

                   

        }

 

        private void pictureBox2_Paint(object sender,

System.Windows.Forms.PaintEventArgs e)

        {

                   

               Graphics g = e.Graphics;

               DrawGant(g,/*nij,*/C_max,tpn_max,tpo_max,tno_max,tnn_max);

              

        }

 

        private void pictureBox3_Paint(object sender,

System.Windows.Forms.PaintEventArgs e)

        {

               Graphics g = e.Graphics;

               DrawGant(g,/*nij,*/C_avg,tpn_avg,tpo_avg,tno_avg,tnn_avg);

        }

 

 

        private void button1_Click(object sender, System.EventArgs e)

        {

               Process.Start("test.xls");

        }

 

                   private void button2_Click(object sender, System.EventArgs e)

        {

               int n = (int)Math.Sqrt(C_avg.Length)-1;

               FileStream f =new FileStream("tavg.xls",FileMode.Create);

               StreamWriter w = new StreamWriter(f);

          w.WriteLine("Код i,j\tt(i,j)\ttpn(i,j)\ttpo(i,j)\ttnn(i,j)\ttno(i,j)\t

Rn(i,j)\tRcb(i,j)");

               for(int i=1; i<=n; i++)

                      for(int j=1; j<=n; j++)

                             if(C_avg[i,j]>=0)

                             {

                                   w.WriteLine(i.ToString()+"-

"+j.ToString()+"\t"+C_avg[i,j]+"\t"+tpn_avg[i,j]+"\t"+

tpo_avg[i,j]+"\t"+tnn_avg[i,j]+"\t"+tno_avg[i,j]+"\t"+

Rn_avg[i,j]+"\t"+Rcb_avg[i,j]);

                             }

               w.Close();

               f.Close();

 

               DialogResult result = MessageBox.Show(

"Просмотреть отчет?","",MessageBoxButtons.YesNo);

               if(result==DialogResult.Yes)

                      Process.Start("tavg.xls");

        }

 

        private void button3_Click(object sender, System.EventArgs e)

        {

               int n = (int)Math.Sqrt(C_min.Length)-1;

               FileStream f =new FileStream("tmin.xls",FileMode.Create);

          StreamWriter w = new StreamWriter(f);

               w.WriteLine("Код i,j\tt(i,j)\ttpn(i,j)\ttpo(i,j)\ttnn(i,j)\ttno(i,j)\t

Rn(i,j)\tRcb(i,j)");

               for(int i=1; i<=n; i++)

                      for(int j=1; j<=n; j++)

                             if(C_min[i,j]>=0)

                             {

                                   w.WriteLine(i.ToString()+"-"+j.ToString()+"\t"+

C_min[i,j]+"\t"+tpn_min[i,j]+"\t"+tpo_min[i,j]+"\t"+

tnn_min[i,j]+"\t"+tno_min[i,j]+"\t"+Rn_min[i,j]+"\t"+Rcb_min[i,j]);

                             }

               w.Close();

               f.Close();

 

               DialogResult result = MessageBox.Show(

"Просмотреть отчет?","",MessageBoxButtons.YesNo);

               if(result==DialogResult.Yes)

                      Process.Start("tmin.xls");

        }

 

        private void button4_Click(object sender, System.EventArgs e)

        {

               int n = (int)Math.Sqrt(C_max.Length)-1;

               FileStream f =new FileStream("tmax.xls",FileMode.Create);

               StreamWriter w = new StreamWriter(f);

               w.WriteLine("Код i,j\tt(i,j)\ttpn(i,j)\ttpo(i,j)\ttnn(i,j)\ttno(i,j)\t

Rn(i,j)\tRcb(i,j)");

               for(int i=1; i<=n; i++)

                      for(int j=1; j<=n; j++)

                             if(C_max[i,j]>=0)

                             {

                                   w.WriteLine(i.ToString()+"-"+j.ToString()+"\t"+

C_max[i,j]+"\t"+tpn_max[i,j]+"\t"+tpo_max[i,j]+"\t"+tnn_max[i,j]+"\t"+tno_max[i,j]+"\t"+Rn_max[i,j]+"\t"+Rcb_max[i,j]);

                             }

               w.Close();

               f.Close();

 

               DialogResult result = MessageBox.Show(

"Просмотреть отчет?","",MessageBoxButtons.YesNo);

               if(result==DialogResult.Yes)

                      Process.Start("tmax.xls");

        }

  }

}

 

ЗАВДАНЯ

На курсову роботу з курсу

“Моделювання виробничих процесів у суднобудуванні”

 

Студент 5142 групи  Ковальов Д.В.

1) Тема курсової роботи : C татистичне моделювання сітьового графіка побудови судна      .

2) Основні початкові дані наведено у таблиці 1.

3) Структура розрахунково-пояснювальної записки:

a) Титульний лист;

b) Завдання на курсову роботу;

c) Анотація (українською, російською, англійською);

d) Зміст;

e) Перелік умовних означень;

f) Вступ;

g) Загальна частина (Розділ 1);

1) Спеціальна частина (Розділ 2, 3);

i) Висновки;

j) Список використаної літератури;

k) Додатки.

 

4) Дата видачі завдання “ ”      ___       2006 року

 

5) Строк здачі студентом готової роботи “ ”      ____        2006 року

 

Керівник курсової роботи Шнейдер О. Б.

 

Студент                 н


 Таблиця 1 - Початкові дані

Коди робіт Найменування робіт Оцінка тривалості
    Варіант
    6
1-2 Підготовка стапеля до закладення судна 1     1.5
2-5 Зборка і зварювання днищевих секцій 1 будівельного району (79-134 шп.) 13   14
2-3 Зборка і зварювання днищевих секцій у районі 75-79 шп. 4     4.3
3-6 Зборка і зварювання секцій перегородок , бортів і палуб у районі 75-79 шп. 20   21
3-4 Зборка і зварювання днищевих секцій у районі 71-75 шп. 5     5.1
5-8 Іспит на непроникливість міждонних відсіків 1 будівельного району 8.7  8,8
6-12 Монтаж систем (вантажний, зачистний і обігріву) у районі 75-79 шп. 16   16.6
6-7 Залежність 0         
4-7 Зборка і зварювання секцій перегородок , бортів і палуб у районі 71-75 шп. 15   16
4-10 Зборка і зварювання секцій у районі 67-71 шп. 5     5.8
7-12 Монтаж систем у районі 71-75 шп. 13   14
7-11 Залежність 0
10-11 Зборка і зварювання секцій перегородок , бортів і палуб у районі 67-71 шп. 18   19
10-13 Зборка і зварювання днищевих секцій у районі 63-67 шп. 7     8
11-12 Монтаж систем у районі 67-71 шп. 17   18
11-14 Залежність 0
12-20 Іспит на непроникливість вантажних танків у районі 67-79 шп. 6     7
13-16 Зборка і зварювання днищевих секцій у районі 59-63 шп. 9     10
13-14 Зборка і зварювання секцій перегородок , бортів і палуб у районі 63-67 шп. 15   16
14-19 Монтаж систем у районі 63-67 шп. 15   17
14-17 Залежність 0
16-17 Зборка і зварювання секцій перегородок , бортів і палуб у районі 59-63 шп. 20   25
17-19 Монтаж систем у районі 59-63 шп. 20   23
8-22 Фарбування підводної частини корпусу в районі 79 шп. – корми 30   35
20-22 Фарбування підводної частини корпусу в районі 67-79 шп. 4     7
19-21 Іспит на непроникливість вантажних танків у районі 59-67 шп. 8     12
21-22 Фарбування підводної частини корпусу в районі 59-67 шп. 2     8

АННОТАЦИЯ

 

В данном курсовом проекте моделируется сетевой график (СГ) построения судна методом статистических испытаний.

В работе проводится разработка программного обеспечения, решающего две задачи:

1) реализующего модель сетевого графика и позволяющего расчитывать временные параметры проекта, а также изображать модель в виде диаграммы Гантта;

2) моделирующего сетевой граф методом статистических испытаний.

Курсовой проект изложен на 41 страницах машинописного текста, содержит 5 рисунков, 3 таблицы, 1 приложение.

Работа выполнена на украинском языке.

 

АНОТАЦІЯ

В даному курсовому проекті моделюється сітьовий графік (СГ) побудови судна методом статистичних випробувань.

В роботі проводиться розробка двох типів програмного забезпечення:

1) того, що реалізує модель сітьового графіка і дозволяє розрахувати часові параметри проекту, а також зобразити модель у виді діаграми Гантта;

2) того, що моделює сітьовий графік методом статистичних випробувань.

Курсовий проект виконано на 41 сторінках друкованого тексту, містить 5 рисунка, 3 таблиці, 1 доданок.

Робота виконана українською мовою.

 

ANOTATION

The shipbuilding net graph modeling was done in the term work. It’s introduced with the purpose of reception of the maximal profit from work of some enterprise.

The work is done on 41 pages of the printed text, contains 5 illustrations. The work also has 1 appendices, which contain the text and results of performance of the program. For creation of this work were used three sources of information.

The work is done in the Ukrainian language.





ЗМІСТ

 

 

Перелік умовних означень ...................................................................................................... 4

Вступ ............................................................................................................................................. 6

1.  Загальна характеристика предметної області............................................................... 6

1.1 Дослідження процесу побудови судна ……………………………………….7

1.1.1 Аналіз процесу побудови судна як об’єкта управління…...……………7

1.1.2 Поняття технологічного та виробничого процесів у суднобудуванні…………………………………….…………………..….8

1.1.3 Особливості виробничого процесу у суднобудуванні............................8

1.1.4 Принципи формування планово-облікових одиниць…...........................9

1.1.5 Етапи побудови суден.................................................................................9

1.1.6 Причини використання СУПС………………………………………..…10

1.2 Аналіз методів управління проектами………………………………………..10

               1.2.1 Метод критичного шляху…………………………………………….…11

               1.2.2 Метод критичного шляху та основні параметри сітьового графіка…12

1.3 Вітчизняний і закордонний досвід використання СУПС…………………...13

1.4 Змістовна постановка задачі………………………………………………….16

2. Розробка детермінованої моделі сітьового графіка і моделювання ……………17

2.1 Розробка програмного забезпечення для моделювання детермінованої моделі………………………………………………………………………….....17

3. Моделювання сітьового графіка методом статистичних випробувань …………19

3.1 Описання теоретичної суті методу …………………………………………...19

3.2 Розробка програмного забезпечення для моделювання……………………..23

3.3 Результати розрахунків…………………………………………………….…..24

Висновки ………………………………………………………………………………..29

Список використаної літератури ……………………………………………………...30

Додаток А - Текст програми …………………………………………………………..31



ПЕРЕЛІК УМОВНИХ ОЗНАЧЕНЬ

В курсовій роботі використовуються наступні умовні означення:

1. СУПС – система управління проектами у суднобудуванні

2. СГ – сітьовий граф

3. СПК – сітьове планування і керування

4. CPM – Critical Path Method

5. PERT – Program Evolution and Review Technique

6. ВП – виробничий процес



ВСТУП

 

Собівартість судна як виду продукції багато в чому визначається прийнятими конструктивними рішеннями. У силу зростання ролі вартості проектних і конструкторських робіт у виробничих витратах варто прагнути до прийняття конструкторами раціональних рішень за мінімальний час. Для цього використовується спеціальне ПЗ, що дозволяє планувати роботи у побудові судна - система управління проектами у суднобудуванні (СУПС). В свою чергу СУПС використовує технологію сітьового планування і керування.

Для дослідження моделювання виробничих процесів у суднобудуванні темою цієї курсової роботи було обрано розробка сітьових графіків побудови судна та їх дослідження методом статистичних випробувань. В ході роботи буде розроблене алгоритмічне та програмне забезпечення.

Для досягнення вказаної мети потрібно зробити наступні кроки:

· проаналізувати предметну область дослідження;

· виконати змістовну постановку задачі, що розв’язується у роботі;

· описати теоретичну суть та послідовність розрахунків імовірнісних
         характеристик параметрів проекту для методу статистичних випробувань;

· розробити детерміновану модель сітьового графіка, що дозволяє розрахувати
         часові параметри проекту і зобразити модель у виді діаграми Гантта і
         провести моделювання за початковими даними;

· розробити програмне забезпечення для статистичного моделювання сітьового
         графіка за початковими даними;

· зробити висновки по роботі та досягнутим результатам.

 







ЗАГАЛЬНА ХАРАКТЕРИСТИКА ПРЕДМЕТНОЇ ОБЛАСТІ

Дата: 2019-07-24, просмотров: 236.