Розробка автоматизованої системи оптимального використання заготовок за для розкрою площинних матеріалів
Курсовая работа, 03 Декабря 2014, автор: пользователь скрыл имя
Описание работы
У сучасному світі є три основні проблеми , вирішення яких присвячені останнім часом зусилля вчених . Це економія природних ресурсів , розробка раціональних технологій виробництва та організація оптимального управління . Сучасне автоматизоване виробництво являє собою складну систему , домогтися оптимального функціонування якої можна тільки застосовуючи на всіх її рівнях ефективні методи автоматизації управління роботою її складових. Стрімкий прогрес в області засобів інформаційного забезпечення вирішення задач науки і техніки передбачає кардинальну зміну підходів до технології вирішення наукових і виробничих проблем. Одним з найважливіших напрямків прискорення науково -технічного прогресу та підвищення ефективності виробництва є автоматизація всіх ланок виробничого циклу , у тому числі проектування , технологічної підготовки виробництва і управління. Об'єкти виробництва стають більш складними , проте терміни на проектування і технологічну підготовку їх виробництва в умовах конкуренції скорочуються. Екстенсивно вирішити дану проблему неможливо, тому не всі процеси проектування можуть бути виконані паралельно. Інтенсифікація праці конструкторського і технологічного персоналу можлива тільки при наявності обчислювальної техніки , застосуванні комп'ютерних технологій , що базуються на створенні та / або використанні автоматизованих систем управління (АСУ) і складових їх частин: систем автоматизованого проектування ( САПР ) і автоматизованих систем технологічної підготовки виробництва ( АСТШТ ) . Розробка АСУ на базі математичних методів і моделей , сучасних інформаційних технологій дозволить вирішувати питання управління , проектування і виробництва на належному рівні , зберігаючи конкурентоспроможність виробленої продукції.
В умовах целюлозно-паперового, деревного і т.д, виробництва одним із способів зниження витрат на сировину і матеріали є скорочення кількості відходів, що утворюються в процесі виробництва продукції. У загальній системі організації і планування виробництва серед багатьох факторів оптимальний розкрій має важливе значення.
З проблеми оптимального розкрою опубліковано велику кількість робіт, починаючи з кінця 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_
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,&
connect(open_act,&QAction::
connect(save_act,&QAction::
connect(exit_act,SIGNAL(
connect(do_load,&QPushButton::
connect(load_submit,&
}
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_
buffer->setX(point_arr.at(j)->
buffer->setY(point_arr.at(j)->
point_arr.at(j)->setX(point_
point_arr.at(j)->setY(point_
point_arr.at(j)->setX(buffer->
point_arr.at(j)->setY(buffer->
}
int nx=0, ny=0;
for(int i=0; i<point_arr.count(); i++){
scene->addRect(nx,ny,point_
*if(i>1){
if(point_arr.at(i)->y()>point_
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(
QFile file(fileName);
if(file.open(QIODevice::
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_
QPainter painter(&image);
scene->render(&painter);
QString fileName = QFileDialog::getSaveFileName(
image.save(fileName);
}
6.2 Опис проектованої системи
Дане програмне забезпечення входить до групи програм «оптимізація положення», а тому дозволить користувачу в лічені секунди оптимізувати розкрій на полотні. Це значним чином скоротить час користувача, адже йому не треба буде самостійно, власноруч розраховувати всі данні, щоб оптимально розложити весь розкрій на полотні, а коли це полотно може бути умовно нескінченним – для користувача це і зовсім не можливо.
Алгоритм проектованої системи побудований на відомому алгоритмі послідовного розміщення, котрий застосовує базову стратегію пошуку вузлів.
Перш за все, дана програма стане у пригоді розробникам текстилю, целюлозно-паперової, металургійної и т.д. індустрії. Завдяки оптимізації розкрою, оператор економить дорогоцінний час, а також, не менш ціні кошти на полотно. Завдяки програмному забеспеченю можна скоротити кількість фахівців до одного оператора, з базовими знаннями комп’ютерної техніки.
Дане програмне забезпечення виведе зображення оптимального розкрою, за короткий час, зможе зберегти результати оптимізації до файлу зображення. Детальніший опис програми представлений в розділі 6ю3 курсової роботи.
В інтерфейсі програми присутній мінімалізм, а тому користувачу він буде інтуїтивно-зрозумілим. При розробці інтерфейсу були дотримані всі вимоги, а саме: зрозумілість, адаптованість до дій користувача та ін. Завдяки відсутності лишніх елементів, користувач зможе вільно використовувати всі функції, передбачені програмою.
6.3 Інструкції з використання проектованої системи
Для того, щоб почати працювати з даною програмою, необхідно відкрити файл squares_img.exe. Програма складається з чотирьох робочих елементів, рисунок 6.1.
Рисунок 6.1 – Програма squares_img
Перша робоча область представляє собою панель управління. За допомогою цієї панелі, користувач зможе виконувати різноманітні функції.
Друга робоча область, представляє собою графічний вихід розкрою на полотні.
В третій робочій області відображається результат програми. В даній області користувач має можливість переглянути скільки часу знадобиться для оптимізації, так скільки вже пройшло часу.
Якщо користувач бажає завантажити координати (формат файлу має мати розширення *.txt), для цього, на панелі інструментів йому необхідно натиснути Файл→Загрузить, рисунок 6.2.
Рисунок 6.2 – Приклад відкривання файлу
Якщо файл не буде обраний, система видасть відповідне повідомлення. При завантаженні програмою файлу, користувач має змогу його корегувати. Далі, користувачу необхідно натиснути на кнопку «Построить». Програма почне виконувати обробку тексту, при чому, стан обробки буде відображуватися у рядку статусу.
Після натискання відповідної кнопки, програма почне оптимізувати, після чого видасть результати. Для того щоб очистити текст, необхідно натиснути Редактировать→Очистить все.
Для того, щоб завершити роботу з даною програмою, користувачу необхідно натиснути Файл→Выход.
7 ЕКОНОМІЧНЕ ОБГРУНТУВАННЯ
У даній частині курсової роботи буде проведений розрахунок витрат, які визначають ціну даного програмного продукту.
Витрати – розмір ресурсів, використаних в процесі господарської діяльності за певний часовий етап. Можливо і більш детально описати типи витрат.
За впливом на собівартість кінцевого продукту витрати можна розділити:
- прямі витрати;
- непрямі витрати.
За взаємозв'язку з завантаженням виробничих потужностей можна розділити :
змінні витрати ;
постійні витрати .