5.7 Портфолио
Информация о студенте:
Ф.И.О: Тишаков Василий Андреевич;
Год рождения: 13 июля 1994;
Года обучения: 2012-2016.
В таблице 12 представлены наиболее значимые достижения. Копии основных грамот, дипломов и прочих документов представлены в приложении В.
Таблица 12 - Перечень достижений
|
Достижение |
Область |
Дата оценивания |
||
|
1 |
Постоянное участие в СТЭМе "Фисташки" |
Культура |
21.01.2013 |
|
|
2 |
4 место в вузовском Фестивале СТЭМов "Микрофон ваш-2012г" |
Культура |
21.01.2013 |
|
|
3 |
Грамота "За лучший танец" в вузовском Фестивале СТЭМов "Микрофон ваш-2012г" |
Культура |
21.01.2013 |
|
|
4 |
Участвовал в конкурсе изобразительного творчества в рамках 5-го Межрегионального фестиваля-конкурса детского и юношеского творчества "Маэстро марш" посвященного 65-летию Победы в Великой Отечественной войне. |
Культура |
21.02.2013 |
|
|
5 |
Участвовал в соревнованиях по стритболу |
Спорт |
21.02.2013 |
|
|
6 |
Подготовка программы выступления "СтудВесна-2013" |
Культура |
18.03.2013 |
|
|
7 |
27 Студенческая научная конференция СГАСУ. Победитель на секции "Информационные системы и технологии" Диплом 3 степени. |
Наука |
31.03.2013 |
|
|
8 |
Блестящее выступление на "Студенческой Весне 2013" Грамота 4 место |
Культура |
22.04.2013 |
|
|
9 |
Участвовал в меж факультетскими соревнованиями по баскетболу. |
Спорт |
28.04.2013 |
|
|
10 |
Участвовал в забеге на 1 километр пробежал за 3 минуты: 18 секунд. |
Спорт |
20.05.2013 |
|
|
11 |
Был добровольцем помогал на "Областная легкоатлетическая эстафета (на призы Самарской Губернской Думы)" |
Общественная деятельность |
19.09.2013 |
|
|
12 |
Постоянные занятия в СТЭМе |
Культура |
21.11.2013 |
|
|
13 |
СТЭМ ФИСТ 1 место в смотре-конкурсе "Микрофон Ваш-2013г" |
Культура
25.11.2013
14
Участвовал в меж факультетскими соревновании по боулингу. Прошли в финал.
Спорт
05.12.2013
15
Постоянное участие в СТЭМе ФИСТ
Культура
24.03.2014
ЗАКЛЮЧЕНИЕ
В ходе выпускной квалификационной работы была поставлена задача поиска оптимальной альтернативы. В ходе изучения была написана программа двухкритериальной оптимизации на основе метода предложенный профессором С.А. Пиявским «Простой и универсальный метод принятия решений в пространстве критериев «стоимость - эффективность».
Разработанная программа отвечает всем поставленным целям и задачам.
- авторизация и разграничение прав пользователей в системе;
- ведение справочника пользователей;
- решение задачи двухкритериальной оптимизации;
- ввод и редактирование исходных данных для решения задачи двухкритериальной оптимизации;
- сохранение результатов решения задач двухкритериальной оптимизации с последующим поиском по имени;
- формирование отчета по результатам двухкритериальной оптимизации в экранной и графической форме;
- демонстрация решения задачи двухкритериальной оптимизации на примере летательных аппаратов;
- просмотр и редактирование сохраненных и задач.
Результат исследования показывает сравнительную эффективность проектных решений по летательным аппаратам.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Пиявский, С.А. Простой и универсальный метод принятия решений в пространстве критериев «стоимость - эффективность» [Текст]. - Самара: Самарск. гос. арх.-строит. ун-т., 2014. - 21 с.
2. Ларичев, О.И. Вербальный анализ решений [Текст]. - Москва: 2006. - 181 с.
3. Множество Эджворта-Парето [Электронныйресурс] /URL: http://lektsii.net/3_51648.html/ (дата обращения: 20.05.2016)
4. Пиявский, С.А. Два новых понятия верхнего уровня в онтологии многокритериальной оптимизации [Текст]. - Самара: Самарск. гос. арх._строит. ун-т., 2013 - с. 65-85
5. Программа ПРИНН6 [Электронныйресурс] /URL: http://sciyouth.ru/ (дата обращения: 15.05.2016)
6. Программа принятия решений в многокритериальных ситуациях (mbi-ahp) [Электронныйресурс] http://simplecs.ru/files/Progr_ex2.pdf (дата обращения: 23.05.2016)
7. Дерябкин, В.П. Проектирование информационных систем по
8. методологии UML[Текст] /В.П.Дерябкин,, В.В/ Козлов - Самара:
9. Самарск. гос. арх.-строит. ун-т., 2008. - 42 с.
10. Леоненков, А.В. Самоучитель UML[Текст]/А.В. Леоненков// 2-е изд., пер. и доп. - СПб.: БХВ-Петербург, 2004. - 432 с.
11. Дерябкин, В.П. Проектирование автоматизированных систем обработки информации и управления: курс лекций [Текст]. - Самара: СГАУ, 2001. - 120 с.
ПРИЛОЖЕНИЕ А
Листинг основных программных модулей
#include "tasks.h"
#include <QSqlQuery>
#include <QVariant>
#include "Core/application.h"
#include <QList>
#include <QtAlgorithms>
#include <QPoint>
#include <Models/criterionfunctions.h>
#include <QStringList>
Tasks::Tasks()
{
this->_id = 0;
}
void Tasks::setId(int value)
{
this->_id = value;
}
void Tasks::setUserId(int value)
{
this->_user_id = value;
}
void Tasks::setName(const QString &value)
{
this->_name = value;
}
void Tasks::setTime(QDateTime value)
{
this->_time = value;
}
void Tasks::setFunctionId(int num, int value)
{
switch(num)
{
case 1:
this->_func1_id = value;
break;
case 2:
this->_func2_id = value;
break;
}
}
void Tasks::setCriterionName(int num, const QString &value)
{
switch(num)
{
case 1:
this->_criterion1_name = value;
break;
case 2:
this->_criterion2_name = value;
break;
}
}
int Tasks::id()
{
return this->_id;
}
int Tasks::userId()
{
return this->_user_id;
}
QString Tasks::name()
{
return this->_name;
}
QDateTime Tasks::time()
{
return this->_time;
}
int Tasks::functionId(int num)
{
switch(num)
{
case 1:
return this->_func1_id;
case 2:
return this->_func2_id;
}
return 0;
}
QString Tasks::function(int num)
{
int _func_id = (num == 1 ? this->_func1_id: this->_func2_id);
CriterionFunctions * cf = CriterionFunctions::byId(_func_id);
return (cf == NULL ? NULL: cf->name());
}
QString Tasks::criterionName(int num)
{
switch(num)
{
case 1:
return this->_criterion1_name;
case 2:
return this->_criterion2_name;
}
return NULL;
}
TaskData * Tasks::data(const QString &name)
{
if(!this->_data.contains(name))
{
TaskData * taskData = new TaskData;
taskData->id_efficiency = 1;
this->_data.insert(name, taskData);
}
return this->_data.value(name);
}
QStringList Tasks::dataNames()
{
return this->_data.keys();
}
Tasks *Tasks::byId(int id)
{
QSqlQuery query;
query.prepare("SELECT * FROM Tasks WHERE id_tasks=:id");
query.bindValue(":id", id);
query.exec();
if(query.next())
{
Tasks * task = new Tasks();
task->setUserId(query.value(0).toInt());
task->setId(query.value(1).toInt());
task->setName(query.value(2).toString());
task->setTime(query.value(3).toDateTime());
task->setFunctionId(1, query.value(4).toInt());
task->setFunctionId(2, query.value(5).toInt());
task->setCriterionName(1, query.value(6).toString());
task->setCriterionName(2, query.value(7).toString());
query.clear();
query.prepare("SELECT * FROM Data WHERE id_tasks=:task_id");
query.bindValue(":task_id", task->id());
query.exec();
while(query.next())
{
task->data(query.value(1).toString())->criterion1 = query.value(2).toDouble();
task->data(query.value(1).toString())->criterion2 = query.value(3).toDouble();
task->data(query.value(1).toString())->id_efficiency = query.value(4).toInt();
task->data(query.value(1).toString())->chanceN = query.value(6).toDouble();
task->data(query.value(1).toString())->softm = query.value(7).toDouble();
task->data(query.value(1).toString())->ncrit1 = query.value(8).toDouble();
task->data(query.value(1).toString())->ncrit2 = query.value(9).toDouble();
}
return task;
}
else
{
return NULL;
}
}
QList<Tasks *> Tasks::all()
{
QSqlQuery query;
query.exec("SELECT * FROM Tasks WHERE id_users=" + QString::number(Application::gI()->USER->id()));
QList<Tasks *> tasks;
while(query.next())
{
Tasks * task = new Tasks();
task->setUserId(query.value(0).toInt());
task->setId(query.value(1).toInt());
task->setName(query.value(2).toString());
task->setTime(query.value(3).toDateTime());
task->setFunctionId(1, query.value(4).toInt());
task->setFunctionId(2, query.value(5).toInt());
task->setCriterionName(1, query.value(6).toString());
task->setCriterionName(2, query.value(7).toString());
QSqlQuery queryData;
queryData.prepare("SELECT * FROM Data WHERE id_tasks=:task_id");
queryData.bindValue(":task_id", task->id());
queryData.exec();
while(queryData.next())
{
task->data(queryData.value(1).toString())->criterion1 = queryData.value(2).toDouble();
task->data(queryData.value(1).toString())->criterion2 = queryData.value(3).toDouble();
task->data(queryData.value(1).toString())->id_efficiency = queryData.value(4).toInt();
task->data(queryData.value(1).toString())->chanceN = queryData.value(6).toDouble();
task->data(queryData.value(1).toString())->softm = queryData.value(7).toDouble();
task->data(queryData.value(1).toString())->ncrit1 = queryData.value(8).toDouble();
task->data(queryData.value(1).toString())->ncrit2 = queryData.value(9).toDouble();
}
tasks.append(task);
}
return tasks;
}
void Tasks::removeAll()
{
QSqlQuery query;
query.prepare("SELECT * FROM Tasks WHERE id_users=:id");
query.bindValue(":id", Application::gI()->USER->id());
query.exec();
while(query.next())
{
QSqlQuery queryData;
queryData.prepare("DELETE FROM Data WHERE id_tasks=:task_id");
queryData.bindValue(":task_id", query.value(1).toInt());
queryData.exec();
}
query.clear();
query.prepare("DELETE FROM Tasks WHERE id_users=:id");
query.bindValue(":id", Application::gI()->USER->id());
query.exec();
}
void Tasks::save()
{
this->_user_id = Application::gI()->USER->id();
this->_time = QDateTime::currentDateTime();
QSqlQuery query;
if(this->_id == 0)
{
query.prepare("INSERT INTO Tasks ("
"id_users, "
"name_tasks, "
"save_date, "
"id_function1, "
"id_function2, "
"name_criterion1, "
"name_criterion2"
") VALUES ("
":user_id, "
":name, "
":time, "
":func1_id, "
":func2_id, "
":criterion1_name, "
":criterion2_name"
")");
}
else
{
query.prepare("UPDATE Tasks SET "
"id_users=:user_id, "
"name_tasks=:name, "
"save_date=:time, "
"id_function1=:func1_id, "
"id_function2=:func2_id, "
"name_criterion1=:criterion1_name, "
"name_criterion2=:criterion2_name "
"WHERE id_tasks=:id");
query.bindValue(":id", this->_id);
}
query.bindValue(":user_id", this->_user_id);
query.bindValue(":name", this->_name);
query.bindValue(":time", this->_time);
query.bindValue(":func1_id", this->_func1_id);
query.bindValue(":func2_id", this->_func2_id);
query.bindValue(":criterion1_name", this->_criterion1_name);
query.bindValue(":criterion2_name", this->_criterion2_name);
query.exec();
if(this->_id == 0)
{
query.clear();
query.exec("SELECT id_tasks FROM Tasks ORDER BY id_tasks DESC");
if(query.next())
{
this->_id = query.value(0).toInt();
}
}
query.clear();
query.prepare("DELETE FROM Data WHERE id_tasks=:task_id");
query.bindValue(":task_id", this->_id);
query.exec();
foreach(QString key, this->_data.keys())
{
query.clear();
query.prepare("INSERT INTO Data ("
"id_tasks, "
"name_alternative, "
"criterion1, "
"criterion2, "
"id_efficiency, "
"chance_optimality, "
"chanceN, "
"softm, "
"ncrit1, "
"ncrit2"
") VALUES ("
":task_id, "
":name, "
":criterion1, "
":criterion2, "
":efficiency, "
":chance_optimality, "
":chanceN, "
":softm, "
":ncrit1, "
":ncrit2"
")");
query.bindValue(":task_id", this->_id);
query.bindValue(":name", key);
query.bindValue(":criterion1", this->data(key)->criterion1);
query.bindValue(":criterion2", this->data(key)->criterion2);
query.bindValue(":efficiency", this->data(key)->id_efficiency);
query.bindValue(":chanceN", this->data(key)->chanceN);
query.bindValue(":softm", this->data(key)->softm);
query.bindValue(":ncrit1", this->data(key)->ncrit1);
query.bindValue(":ncrit2", this->data(key)->ncrit2);
query.exec();
}
}
void Tasks::remove()
{
QSqlQuery query;
query.prepare("DELETE FROM Tasks WHERE id_tasks=:id");
query.bindValue(":id", this->_id);
query.exec();
query.clear();
query.prepare("DELETE FROM Data WHERE id_tasks=:id");
query.bindValue(":id", this->_id);
query.exec();
this->_id = 0;
}
bool criterion1Compare(const CriterionNormalize * a, const CriterionNormalize * b)
{
return a->first < b->first;
}
bool criterion2Compare(const CriterionNormalize * a, const CriterionNormalize * b)
{
return a->second < b->second;
}
QList<CriterionNormalize *> Tasks::calculate()
{
QList<CriterionNormalize *> criterionNormalize;
foreach(QString key, this->_data.keys())
{
CriterionNormalize * cn = new CriterionNormalize;
cn->name = key;
cn->first = this->data(key)->criterion1;
cn->second = this->data(key)->criterion2;
// может это лишнее
// cn->chanceN = this->data(key)->chanceN;
// cn->ncrit1 = this->data(key)->ncrit1;
// cn->ncrit2 = this->data(key)->ncrit2;
// cn->softm = this->data(key)->softm;
//Application::gI()->onHelp(QString::number(cn->softm));
criterionNormalize.append(cn);
}
double c1_min = (*std::min_element(criterionNormalize.begin(), criterionNormalize.end(), criterion1Compare))->first;
double c2_min = (*std::min_element(criterionNormalize.begin(), criterionNormalize.end(), criterion2Compare))->second;
double c1_max = (*std::max_element(criterionNormalize.begin(), criterionNormalize.end(), criterion1Compare))->first;
double c2_max = (*std::max_element(criterionNormalize.begin(), criterionNormalize.end(), criterion2Compare))->second;
#define SIZE 50
#define SAVAT 10005
#define MAN 10
int n=0,j=0,i=0,m=0,d=0,z=0,a=0,good=0, bad=0, equ=0, Pareto[SIZE],P=0,s=0,Z1=0,K;
double A[SIZE][MAN],X[SIZE][MAN],N[SIZE][MAN],
maxS=0,minS=0,maxEf=0,minEf=0,b=0,c=0,K1=0,
K2=0,Ef=0,S=0,Normirovan[SIZE][MAN],
indeks[SIZE][MAN],interval[SIZE][MAN],Optimal[SIZE],
V[SAVAT][MAN],maxV=0,qF[SIZE],
sF[SIZE],Ma[SIZE];
//очистка от мусора
memset(A, 0, sizeof(A));
memset(X, 0, sizeof(X));
memset(N, 0, sizeof(N));
memset(Pareto, 0, sizeof(Pareto));
memset(Normirovan, 0, sizeof(Normirovan));
memset(indeks, 0, sizeof(indeks));
memset(interval, 0, sizeof(interval));
memset(Optimal, 0, sizeof(Optimal));
memset(V, 0, sizeof(V));
memset(qF, 0, sizeof(qF));
memset(sF, 0, sizeof(sF));