Розробка автоматизованої системи оптимального використання заготовок за для розкрою площинних матеріалів

Автор работы: Пользователь скрыл имя, 03 Декабря 2014 в 16:18, курсовая работа

Описание работы

У сучасному світі є три основні проблеми , вирішення яких присвячені останнім часом зусилля вчених . Це економія природних ресурсів , розробка раціональних технологій виробництва та організація оптимального управління . Сучасне автоматизоване виробництво являє собою складну систему , домогтися оптимального функціонування якої можна тільки застосовуючи на всіх її рівнях ефективні методи автоматизації управління роботою її складових. Стрімкий прогрес в області засобів інформаційного забезпечення вирішення задач науки і техніки передбачає кардинальну зміну підходів до технології вирішення наукових і виробничих проблем. Одним з найважливіших напрямків прискорення науково -технічного прогресу та підвищення ефективності виробництва є автоматизація всіх ланок виробничого циклу , у тому числі проектування , технологічної підготовки виробництва і управління. Об'єкти виробництва стають більш складними , проте терміни на проектування і технологічну підготовку їх виробництва в умовах конкуренції скорочуються. Екстенсивно вирішити дану проблему неможливо, тому не всі процеси проектування можуть бути виконані паралельно. Інтенсифікація праці конструкторського і технологічного персоналу можлива тільки при наявності обчислювальної техніки , застосуванні комп'ютерних технологій , що базуються на створенні та / або використанні автоматизованих систем управління (АСУ) і складових їх частин: систем автоматизованого проектування ( САПР ) і автоматизованих систем технологічної підготовки виробництва ( АСТШТ ) . Розробка АСУ на базі математичних методів і моделей , сучасних інформаційних технологій дозволить вирішувати питання управління , проектування і виробництва на належному рівні , зберігаючи конкурентоспроможність виробленої продукції.
В умовах целюлозно-паперового, деревного і т.д, виробництва одним із способів зниження витрат на сировину і матеріали є скорочення кількості відходів, що утворюються в процесі виробництва продукції. У загальній системі організації і планування виробництва серед багатьох факторів оптимальний розкрій має важливе значення.
З проблеми оптимального розкрою опубліковано велику кількість робіт, починаючи з кінця 40-ч років, коли завдання розкрою вперше була поставлена і вирішена, і до теперішнього часу.
Однак, рішення вважається класичної задачі оптимального розкрою у виробничих умовах пов'язане з такими труднощами як, умова цеілочисельності рішення, вимоги гарантованого існування оптимального рішення за будь-яких вихідних даних, обмеження по кількості ножів поздовжньо-різального верстата (ПРС), а так само багатьох інших вимог, пов'язаних зі специфікою роботи окремих підприємств.
Літературний огляд показує, що існуючі моделі, алгоритми та методи вирішення оптимального розкрою не забезпечують виконання цих вимог.
З урахуванням цього метою курсової роботи є створення автоматизованої системи оптимального використання заготовок при розкрої площинних матеріалів на основі методів, моделей і алгоритмів оптимального розкрою.

Содержание работы

ВСТУП……………………………………………………………………………4
1 ТЕХНІЧНЕ ЗАВДАННЯ………………………………………………………6
2 АНАЛІЗ СУЧАСНОГО СТАНУ ЗАДАЧІ ПРОЕКТА………………………16
3 ВИБІР НАПРЯМКУ РОЗВ’ЯЗАННЯ ЗАДАЧІ ПРОЕКТУ…………………17
4 РОЗРОБКА МАТЕМАТИЧНОГО, ІНФОРМАЦІЙНОГО ТА МЕТРОЛОГІЧНОГО ЗАБЕЗПЕЧЕННЯ ПРОЕКТУ………………………….19
5 РОЗРОБКА ТА ОПТИМІЗАЦІЯ АЛГОРИТМІЧНОГО ЗАБЕЗПЕЧЕННЯ ПРОЕКТУ…………….………………………………………………………….23
5.1 Вибір і обґрунтування інструментальних засобів………………….23
5.2 Розробка блок-схем алгоритмів та їх оптимізація….………………25
5.3 Вибір та обґрунтування апаратного забезпечення проектованої системи…………………………………………………………………………...31
5.4 Розробка вихідних текстів програмного забезпечення та вибір стандартного програмного забезпечення………………………………………31
5.5 Компіляція та тестування ПО………………………………………...36
6 РОЗРОБКА ПРОГРАМНОЇ ДОКУМЕНТАЦІЇ……………………………...39
6.1 Вихідні тексти проектованої системи……………………………….39
6.2 Опис проектованої системи…………………………………………..43
6.3 Інструкції з використання проектованої системи…………………..44
7 ЕКОНОМІЧНЕ ОБГРУНТУВАННЯ…………………………………………46
ВИСНОВОК……………………………………………………………………...53
ВИКОРИСТАННІ В ПРОЕКТІ ДЖЕРЕЛА……………………………………54

Файлы: 1 файл

poyasnyuvalna_zapiska.docx

— 648.20 Кб (Скачать файл)

            }

    int nx=0, ny=0;

    for(int i=0; i<point_arr.count(); i++){

        scene->addRect(nx,ny,point_arr.at(i)->x(),point_arr.at(i)->y());

        nx=point_arr.at(i)->x();

        ny=point_arr.at(i)->y();

    }

}

 

Функція load_from_file() завантажує файл с координатами прямокутників:

void Widget::load_from_file(){

    list_view->clear();

    point_arr.clear();

    QStringList lst;

    QString fileName = QFileDialog::getOpenFileName(this,tr("Открыть"), "", "Текст (*.txt)");

    QFile file(fileName);

    if(file.open(QIODevice::ReadOnly |QIODevice::Text)){

        while(!file.atEnd()){

        lst.clear();

        QString str = file.readLine();

        list_view->addItem(str);

        lst = str.split(" ");

        point1 = new QPoint;

        point1->setX(lst.at(0).toInt());

        point1->setY(lst.at(1).toInt());

        point_arr.push_back(point1);

        }

    }

}

 

Після того як оператор виконав всі розрахунки, та маніпуляції з розкроєм, він може забрести свої результати. Для цього в програмі існує така функція save_to_file:

void Widget::save_to_file(){

    QImage image(scene->width(), scene->height(), QImage::Format_ARGB32_Premultiplied);

    QPainter painter(&image);

    scene->render(&painter);

    QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),"",tr("Images (*.png)"));

    image.save(fileName);

}

 

Що стосується стандартного програмного забезпечення, то для роботи з даною системою на комп’ютері користувача мають бути встановлені:

  • налаштована операційна система Windows, зі всіма необхідними для ПК драйверами;
  • Встановлений .NET Framework.

При дотриманні вищевказаних вимог, дане програмне забезпечення буде працювати коректно.

5.5 Компіляція та тестування ПО 

Для того щоб запустити програму необхідно відкрити файл squares_img.exe. Наступним кроком є відкриття текстового файлу або набір тексту з клавіатури. Для того щоб відкрити файл необхідно натиснути Файл→Відкрити. В програмі встановлений фільтр, а отже користувач зможе відкрити лише файл з форматом *.txt.

В якості вхідних даних завантажуємо текстовий файл з наступним текстом:

10 20 0

12 14 0

30 30 0

30 10 0

12 15 0

23 23 0

10 20 0

12 14 0

30 30 0

30 10 0

12 15 0

23 23 0

10 20 0

12 14 0

30 30 0

30 10 0

12 15 0

23 23 0

Проведемо ряд тестів, для виявлення помилок в проектованій системі.

Тест 1: В даному тесті, поведемо перевірку, оптимального розміщення прямокутників на полотні. Перевіримо працездатність ПЗ оптимізацію , причому проведемо тест 40 разів, засікаючи при цьому час (рис. 5.4)

 

Рисунок 5.4 – Тест 1

 

Як видно з даного тесту, всі прямокутники розташовані оптимально на полотні, з мінімальними затратами полотна. Середня обробка програмного забезпечення 1.84 секунди. Тобто, на обробку одного прямокутнику необхідно 0,00283951 секунди часу.

Тест 2: В даному тесті поміняємо місцями в текстовому файлі координати прямокутників, щоб вдостовіритись, що їхнє положення у файлі не міняє результату після оптимізації на полотні(рис 5.5).

 

Рисунок 5.5 – Тест 2

 

Як видно  з тесту 2, програма знов вистроїла усі прямокутники оптимально, с мінімальними затратами полотна. Алгоритм побудований таким чином, що вся прямокутники спочатку обробляються, а потім вистараються на полотні.

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

 

 

 

6 РОЗРОБКА  ПРОГРАМНОЇ ДОКУМЕНТАЦІЇ

6.1 Вихідні  тексти проектованої системи

 

Вихідні тексти файлу widget.cpp. Даний файл представляє собою структуру, яка береже в собі список всіх необхідних полів, для коректних маніпуляцій програми.

 

#include "widget.h"

 

Widget::Widget(QWidget *parent)

    : QWidget(parent)

{

    viewer = new QGraphicsView;

    scene = new QGraphicsScene;

    mainmenu = new QMenuBar;

    toolbar = new QToolBar ;

    statusbar = new QStatusBar;

    load_form = new QWidget;

    load_form->setWindowTitle("Загрузить координаты");

    QGridLayout *load_lay = new QGridLayout;

    list_view = new QListWidget;

    do_load = new QPushButton("Открыть файл...");

    load_submit = new QCommandLinkButton("Подтвердить");

    load_lay->addWidget(do_load);

    load_lay->addWidget(list_view);

    load_lay->addWidget(load_submit);

    load_form->setLayout(load_lay);

    QToolButton *paint_btn = new QToolButton;

    paint_btn->setText("Построить");

    toolbar->addWidget(paint_btn);

    QMenu *f_menu = new QMenu("Файл");

    QMenu *s_menu = new QMenu("Редактировать");

    QMenu *a_menu = new QMenu("Справка");

    QAction *open_act = f_menu->addAction("Загрузить");

    QAction *save_act = f_menu->addAction("Сохранить");

    f_menu->addSeparator();

    QAction *exit_act = f_menu->addAction("Выход");

    mainmenu->addMenu(f_menu);

    mainmenu->addMenu(s_menu);

    mainmenu->addMenu(a_menu);

    QGridLayout *lay = new QGridLayout;

    lay->setMenuBar(mainmenu);

    lay->addWidget(toolbar);

    lay->addWidget(viewer);

    lay->addWidget(statusbar);

    setLayout(lay);

    setWindowTitle("Squares");

    resize(500,400);

    viewer->setScene(scene);

    connect(paint_btn,&QToolButton::clicked,this,&Widget::paint_it);

    connect(open_act,&QAction::triggered,load_form,&QWidget::show);

    connect(save_act,&QAction::triggered,this,&Widget::save_to_file);

    connect(exit_act,SIGNAL(triggered(bool)),qApp,SLOT(quit()));

    connect(do_load,&QPushButton::clicked,this,&Widget::load_from_file);

    connect(load_submit,&QCommandLinkButton::clicked,load_form,&QWidget::close);

}

 

Widget::~Widget()

{

   

}

 

void Widget::paint_it(){

    QPoint *buffer = new QPoint;

    for(int i=point_arr.count()-1;i>0;i--)

        for(int j=0;j<i;j++)

            if(point_arr.at(j)->x()>point_arr.at(j+1)->x() || point_arr.at(j)->x()>point_arr.at(j+1)->x()){

                buffer->setX(point_arr.at(j)->x());

                buffer->setY(point_arr.at(j)->y());

                point_arr.at(j)->setX(point_arr.at(j+1)->x());

                point_arr.at(j)->setY(point_arr.at(j+1)->y());

                point_arr.at(j)->setX(buffer->x());

                point_arr.at(j)->setY(buffer->y());

            }

    int nx=0, ny=0;

    for(int i=0; i<point_arr.count(); i++){

        scene->addRect(nx,ny,point_arr.at(i)->x(),point_arr.at(i)->y());

      

        *if(i>1){

            if(point_arr.at(i)->y()>point_arr.at(i-1)->y()+point_arr.at(i+1)->y()){

                ny=point_arr.at(i)->y();

            }

        }*/

 

        nx=point_arr.at(i)->x();

        ny=point_arr.at(i)->y();

    }

}

 

void Widget::load_from_file(){

    list_view->clear();

    point_arr.clear();

    QStringList lst;

    QString fileName = QFileDialog::getOpenFileName(this,tr("Открыть"), "", "Текст (*.txt)");

    QFile file(fileName);

    if(file.open(QIODevice::ReadOnly |QIODevice::Text)){

        while(!file.atEnd()){

        lst.clear();

        QString str = file.readLine();

        list_view->addItem(str);

        lst = str.split(" ");

        point1 = new QPoint;

        point1->setX(lst.at(0).toInt());

        point1->setY(lst.at(1).toInt());

        point_arr.push_back(point1);

        }

    }

}

 

void Widget::save_to_file(){

    QImage image(scene->width(), scene->height(), QImage::Format_ARGB32_Premultiplied);

    QPainter painter(&image);

    scene->render(&painter);

    QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),"",tr("Images (*.png)"));

    image.save(fileName);

}

 

6.2 Опис  проектованої системи

 

Дане програмне забезпечення входить до групи програм «оптимізація положення», а тому дозволить користувачу в лічені секунди оптимізувати розкрій на полотні. Це значним чином скоротить час користувача, адже йому не треба буде самостійно, власноруч розраховувати всі данні, щоб оптимально розложити весь розкрій на полотні, а коли це полотно може бути умовно нескінченним – для користувача це і зовсім не можливо.

Алгоритм проектованої системи побудований на відомому алгоритмі послідовного розміщення, котрий застосовує базову стратегію пошуку вузлів.

Перш за все, дана програма стане у пригоді розробникам текстилю, целюлозно-паперової, металургійної и т.д. індустрії. Завдяки оптимізації розкрою, оператор економить дорогоцінний час, а також, не  менш ціні кошти на полотно. Завдяки програмному забеспеченю  можна скоротити кількість фахівців до одного оператора, з базовими знаннями комп’ютерної техніки.

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

В інтерфейсі програми присутній мінімалізм, а тому користувачу він буде інтуїтивно-зрозумілим.  При розробці інтерфейсу були дотримані всі вимоги, а саме: зрозумілість, адаптованість до дій користувача та ін. Завдяки відсутності лишніх елементів, користувач зможе вільно використовувати всі функції, передбачені програмою. 

 

 

6.3 Інструкції з використання  проектованої системи 

 

Для того, щоб почати працювати з даною програмою, необхідно відкрити файл  squares_img.exe. Програма складається з чотирьох робочих елементів, рисунок 6.1.

 

Рисунок 6.1 – Програма squares_img

 

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

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

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

Якщо користувач бажає завантажити координати (формат файлу має мати розширення *.txt), для цього, на панелі інструментів йому необхідно натиснути Файл→Загрузить, рисунок 6.2.

 

 

Рисунок 6.2 – Приклад відкривання файлу

 

Якщо файл не буде обраний, система видасть відповідне повідомлення. При завантаженні програмою файлу, користувач має змогу його корегувати. Далі, користувачу необхідно натиснути на кнопку «Построить».  Програма почне виконувати обробку тексту, при чому, стан обробки буде відображуватися у рядку статусу.

Після натискання відповідної кнопки, програма почне оптимізувати, після чого видасть результати. Для того щоб очистити текст, необхідно натиснути Редактировать→Очистить все.

Для того, щоб завершити роботу з даною програмою, користувачу необхідно натиснути Файл→Выход.

 

7 ЕКОНОМІЧНЕ ОБГРУНТУВАННЯ 

 

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

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

За впливом на собівартість кінцевого продукту витрати можна розділити:

  • прямі витрати;
  • непрямі витрати.

За взаємозв'язку з завантаженням виробничих потужностей можна розділити :

  • змінні витрати ;

  • постійні витрати .

Сукупність прямих ( змінних ) і непрямих ( постійних ) витрат становить валові витрати.

ВВ = Впост + Взмін ,                                (7.1 )

де ВВ - валові витрати;

Впост - постійні витрати;

Взмін - змінні витрати.

Змінні витрати, пов'язані із створенням програмного продукту розраховуються за формулою:

Взмін = Векспл + Вопл + Вдопом ,            ( 7.2)

де Векспл - витрати , пов'язані з експлуатацією використовуваних засобів праці, грн. ;

Вопт - сукупні витрати, пов'язані з оплатою праці розробника програмного продукту, грн. ;

Вдопом - витрати на допоміжні матеріали, грн.

Витрати на експлуатацію використовуваного обладнання розраховуються за формулою:

Векспл = Вм * Трозр ,                                 (7.3 )

де Вм - вартість одної машино-години роботи обладнання, за допомогою якого розроблявся даний програмний продукт , грн./ год ;

Тразр - час, витрачений на розробку даного проекту, час.

Розрахуємо витрати на експлуатацію використовуваного обладнання.

Вартість машино-години визначається за формулою:

Вм = А + Ве + Він ,                                          (7.4 )

де А - розмір амортизаційних відрахувань, грн. ;

Ве - витрати на оплату витраченої електроенергії, грн. / Ч. ;

Він - інші витрати, пов'язані з обслуговуванням устаткування, грн.

У інші витрати включаються: страхові внески, податки, витрати по сертифікації продукту, витрати, пов'язані зі збутом ( реалізацією ) товарів .

Для розрахунку амортизаційних відрахувань рекомендується використовувати наступну формулу:

А =
,                                       (7.5)

де КВ - капіталовкладення в проект (вартість обладнання, що використовується для розробки програмного продукту), грн.

Тпл - плановий термін служби обладнання, год .

Плановий термін служби обладнання розраховується за формулою:

Тпл = tзм * Дроб * Тсл,                (7.6)

де tзм - тривалість зміни (8 годин);

Дроб - число робочих днів у році ( Драб = 260 днів);

Тсл - термін служби обладнання, роки ( Nпл = 5 років).

Знаючи тривалість зміни, число робочих днів у році і термін служби обладнання, розрахуємо плановий термін служби обладнання, використовуючи формулу (7.6):

Тпл = 8 * 260 * 5 = 10 400 (год)

Тепер, знаючи плановий термін служби обладнання та вартість обладнання, що використовується для розробки програмного продукту , розрахуємо числове значення амортизаційних відрахувань, використовуючи формулу (7.5 ):

А = 2654 / 10400 = 0,2551 (грн./год)

Витрати на оплату витрачено електроенергії розраховуються з потужності, завантаження та часу роботи струмоприймачів (комп'ютерів), а також тарифів на електроенергію за формулою:

Вопл = Ае * * Кзагр,   (7.7)

де Ае – тариф 1кВт-година електроенергії (0,3167 грн./(кВт·год.));

Ni – потужність i -го струмоприймача , кВт;

Информация о работе Розробка автоматизованої системи оптимального використання заготовок за для розкрою площинних матеріалів