Клиент-серверное приложение для системного проектирования программного обеспечения. Курсовая работа (т). Информационное обеспечение, программирование.

Клиент-серверное приложение для системного проектирования программного обеспечения. Курсовая работа (т). Информационное обеспечение, программирование.




🛑 👉🏻👉🏻👉🏻 ИНФОРМАЦИЯ ДОСТУПНА ЗДЕСЬ ЖМИТЕ 👈🏻👈🏻👈🏻


























































Информационное обеспечение, программирование

Вы можете узнать стоимость помощи в написании студенческой работы.


Помощь в написании работы, которую точно примут!

Похожие работы на - Клиент-серверное приложение для системного проектирования программного обеспечения
Нужна качественная работа без плагиата?

Не нашел материал для своей работы?


Поможем написать качественную работу Без плагиата!

ФГБОУ ВО
«Тульский государственный университет»


Институт
прикладной математики и компьютерных наук


по дисциплине «Клиент-серверное
программирование»


Тема проекта: Клиент-серверное
приложение для системного проектирования программного обеспечения






Очень часто возникает необходимость решать задачу загрузки рюкзака. Так
же может быть необходимо решать многомерную задачу загрузки рюкзака. В
многомерной задаче рюкзака на предметы в рюкзаке накладывается несколько
ограничений (на пример на объем и вес). Примером многомерной задачи может быть
вариант задачи формирования подмножества резидентных программ.


Вэб-сервисная архитектура программ позволяет использовать ей удалённые
компоненты. Веб-службы могут взаимодействовать друг с другом и со сторонними
приложениями посредством сообщений, основанных на определённых протоколах
(SOAP, XML-RPC, REST и т. д.). Веб-служба является единицей модульности при
использовании сервис-ориентированной архитектуры приложения. Для обеспечения
взаимодействия используются стандарты XML, SOAP, WSDL, UDDI.
Веб-службы обеспечивают взаимодействие программных систем независимо от
платформы. Использование интернет-протокола обеспечивает HTTP-взаимодействие
программных систем через межсетевой экран. Это значительное преимущество, по
сравнению с такими технологиями, как CORBA, DCOM или Java RMI. С другой
стороны, веб-службы не привязаны к HTTP и могут использоваться и другие
протоколы.Communication Foundation (WCF) представляет платформу для построения
сервисноориентированных приложений. С помощью WCF можно отправлять данные в
виде асинхронных сообщений от одной конечной точки службы к другой. Конечная точка
службы может входить в постоянно доступную службу, размещаемую в IIS, или
представлять службу, размещаемую в приложении. WCF предоставляет единую
инфраструктуру разработки, при умелом применении повышающую производительность
и снижающую затраты на создание безопасных, надёжных и транзакционных Web-служб
нового поколения.


Заложенные в неё принципы интероперабельности позволяют организовать
работу с другими платформами. WCF позволяет отправлять сообщения по протоколу
TCP. Механизм TCP предоставляет поток данных с предварительной установкой
соединения, осуществляет повторный запрос данных в случае потери данных и
устраняет дублирование при получении двух копий одного пакета.


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




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


·       выполнять оптимизацию для заразе подготовленных контрольных
примеров. Интерфейс пользователя также предусматривает случайный ввод
параметров;


·       выполнение исследовательской части работы - исследование
вычислительной эффективности метода оптимизации в зависимости от размерности задачи
оптимизации.


·       модель: многомерная задача загрузки рюкзака (МЗЗР);


·       метод оптимизации: метод ветвей и границ(ВиГ);


·       интерфейс клиентского приложения: WinForms;


В первом режиме работы приложение решает задачу оптимизации с набором
параметров введёнными пользователем либо по набору данных взятых из
контрольного примера и рассчитанных заранее.


В режиме оптимизации проводится исследование вычислительной эффективности
алгоритма оптимизации в зависимости от размерности задачи оптимизации. Для
каждого значения размерности (например, n = 5, 10, 15, 20, 25, …) генерируются параметры задачи и
выполняется серия оптимизационных экспериментов. По результатам каждой серии
определяется среднее значение времени оптимизации, которое вместе с исходными
данными запоминается в структуре данных в оперативной памяти. Затем результаты
экспериментов выводятся на экран в виде таблиц или графиков.


Курсовая работа по клиент-серверному программированию выполняется для
закрепления знаний по курсу "Клиент-серверное программирование" и
приобретения навыков комплексной реализации прикладной задачи (задачи
оптимизации рюкзачного типа) в виде клиент-серверного приложения с использованием
низкоуровневых и высокоуровневых сокетов, функциональных возможностей платформы
Microsoft Windows Communication Framework (WCF), многопоточной серверной
обработки, а также различных инструментальных систем и библиотек,
автоматизирующих проектирование и программирование создаваемого приложения.


· 
приобретение
навыков решения задач оптимизации булева типа;


· 
практическое
освоение современных технологий создания программных продуктов;


· 
овладение
методами и средствами создания и использования клиент-серверных приложений;


· 
приобретение
практических навыков оформления и выпуска документации в соответствии с ГОСТ
(ЕСПД, UML).


алгоритм
конфигурация серверный клиентский





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


Пусть P={p1, p2, …
, pn} - множество программ и n=|P| - мощность этого множества. Характеристиками Pi являются ai и ci -
объем программ и коэффициент использования внешней памяти. С позиции задачи о
рюкзаке - это объем и цена i-го
предмета.


Необходимо
определить подмножество программ, которые будут резидентными,
то есть определить Pоп, Pоп P где |Pоп| = nоп - число резидентных программ.


Введем
переменные xi, i = 1, … ,n следующим образом:




Решением задачи один из элементов множества всех подмножеств множества P. Вектор X={x1, x2, …, xn}однозначно определяет выбранные решения.


Пусть
-
стоимость всех предметов, которые для каждого решения будут разбиваться на
стоимости предметов в рюкзаке и
стоимости предметов в не рюкзака . Объем
рюкзака b рассматривается как величина выделяемого ресурса.
Тогда для каждого решения X сумма определяет
необходимую величину ресурса.





Цель
решения задачи это минимизация .
Поскольку то
решение минимизирующее будет
решением, максимизирующим .


В
результате задачу рюкзака можно сформулировать следующим образом:




.1.2 Многомерная задача загрузки рюкзака


Многомерная задача загрузки рюкзака формулируется следующим образом:




-
потребление j-го ресурса i-ым предметом;


 -
величина j-го ресурсного ограничения;


Решения многомерной задачи рюкзака сводится к нахождению вектора
оптимизации X. Он позволяет достичь максимальной
стоимости предметов, помешенных в рюкзак, при выполнении всех ограничений,
наложенных на используемые ресурсы.


Метод ветвей и границ (branch and bound) - общий алгоритмический метод
для нахождения оптимальных решений различных задач оптимизации, особенно
дискретной и комбинаторной оптимизации. В основе метода лежит идея
последовательного разбиения множества допустимых решений и анализу - содержит
ли данное подмножество оптимальное решение или нет.


Решение задачи загрузки рюкзака методом ветвей и границ предполагает
наличие вспомогательной модели, позволяющей прогнозировать получение
определенных значений целевой функции в процессе ветвления. Вспомогательная
(непрерывная) задача загрузки рюкзака (НЗЗР) использует допущение о
непрерывности значений управляемых переменных. Модель НЗЗР (в отличие от ЗЗР)
имеет простое решение. Алгоритм решения НЗЗР требует, чтобы индексы в
последовательности были отсортированы по убыванию стоимости единицы объема
предметов, помещаемых в рюкзак




Решение
вспомогательной задачи о рюкзаке очевидно: необходимо брать груз, начиная с
первого, до тех пор, пока не заполним весь рюкзак объема b. Если первые k
грузов полностью поместим в рюкзак, а (k+1)-й груз
частично, то оптимальное решение σn
вспомогательной задачи о рюкзаке будет следующим:





Стоимость
решения вспомогательной задачи может служить граничной (верхней) оценкой
значений F(σn') модели ЗЗР, поскольку


Другими
словами, если грузы "сыпучи", стоимость грузов в рюкзаке окажется не
меньшей, чем в случае дискретных грузов.




.2.2
Алгоритм решения многомерной задачи загрузки рюкзака


Решение многомерной задачи загрузки рюкзака должно удовлетворять m ограничениям. Схема ветвей и границ
применяется для вычисления «обещаний» C(x) на каждом фрагменте решения σk.


Если как и в одномерной задаче загрузки рюкзака отказаться от
дискретности xi, то есть считать, что грузы сыпучи
(0≤ xi ≤1), то перейдем к формулировке
вспомогательной задачи как задачи линейного программирования. Для упрощения
задачи отбросим m-1 ограничений и
сведем задачу к одномерной задачи загрузки рюкзака. В каждой вершине дерева
перебора будет решаться m
вспомогательных задач, получаю m
обещаний C(x). Берется наименьшее из этих обещаний.


Рассмотрим пример решения многомерной задачи загрузки рюкзака. Параметры
первого примера приведены в табл. 1. Задача сформулирована следующим образом:





при
условиях Σa1i xi≤b1, Σa2i xi≤b2,




Таблица
1. Параметры первого примера


Начнем построение дерева перебора с начальной вершины, отождествляемой с
множеством всех возможных вариантов. Решим сначала задачу для первого
ограничения:


максимизировать        С1(x)= Σci xi


С
помощью табл. 1. найдем это решение:


Сформулируем
вторую вспомогательную задачу, выбрав второе ограничение:


Поскольку
прогноз должен удовлетворять каждому ограничению выберем наименьший прогноз С2.
Ход решения представлен на рис. 1.







Как видно оптимальное решение получилось X=(1,0,1,1,0). Целевая функция имеет значение 42.




Рассмотрим еще один пример решения задачи методом ветвей и границ.
Размерность задачи равна пяти, а количество ограничен равно двум. Параметры
задачи приведены в таблице 2.




Таблица 2. Параметры второго примера


Начнем построение дерева перебора с начальной вершины, отождествляемой с
множеством всех возможных вариантов (Рис. 2).


Решим сначала задачу для первого ограничения:


С
помощью табл. 2. найдем это решение:


Сформулируем
вторую вспомогательную задачу, выбрав второе ограничение:


Сформулируем
третью вспомогательную задачу, выбрав третье ограничение:


Как видно из рис. 4. Оптимальное решение X=(1,1,1,0,0), а значение целевой функции 90.


Проектируемая программа является клиент-серверным приложением, и состоит
из двух основных частей: клиентской и серверной. Клиентская часть должна
включать в себя все элементы для ввода и вывода данных, а серверная - элементы
решения основного алгоритма задачи. Серверная часть состоит из проекта службы и
хоста.


На рис. 3 показано высокоуровневое представление типичного приложения WCF.




Рис. 3. Высокоуровневое представление приложения WCF




BranchAndBound.cs - файл
содержащий класс решения задачи;


Multiknapsack.svc - файл реализации службы;.cs - файл
с интерфейсом службы;.cs - файл с классом целевой функции;.config - файл с
конфигурациями службы.


Проект хоста состоит из следующих файлов:


Program.cs - файл с главным классом приложения;


Form1.cs - файл с классом формы;.config -
файл с конфигурацией хоста.


Клиентское приложение содержит файлы:


Program.cs - файл с главным классом приложения
клиента;


Knapsack.cs - файл который содержит класс
многомерной задачи загрузки рюкзака;


Form1.cs - файл содержащий класс главного
окна приложения;.cs - файл с классом, организующим связь с сервисом для решения
задачи;.cs - файл с классом, организующим режим анализа;.config - файл
конфигурации клиента;.cs - файл прокси-класса для вызова удаленных методов.




Входными данными приложения являются следующие параметры:


·       количество ресурсных ограничений;


·       коэффициенты ресурсов, требующиеся для предметов.


Выходными данными является решение задачи оптимизации.


Для исследовательской части приложения входными данными является:


·     количество ресурсных ограничений;


·       максимальная размерность задачи;


·       число опытов при одинакового количества ограничений.


Выходными данными является график, определяющий зависимости расчетного
времени алгоритма от количества предметов и таблица с результатами исследования.


Контракт WCF-службы
определяется следующим образом:


{[OperationContract][] Сalculate (Double[] vesa, List zad, Double[] B,
out int time);}


Интерфейс IMultiknapsack
содержит метод Сalculate(),
который позволяет запустить процесс оптимизации модели МЗЗР методом ветвей и
границ. При этом ему передается список стоимостей предметов vesa, список коэффициентов ресурсов zad,
список ограничений B и выходной параметр Time, содержащий продолжительность вычислений в
миллисекундах. Полная реализация серверной части приведена в приложении.




Диаграмма классов WCF-службы
представлена на рис.4.




Рис. 4. Диаграмма классов WCF-службы




Класс Multiknapsack реализующий интерфейс IMultiknapsack и представляет реализацию контракта службы. Его
диаграмма представлена на рис. 5.




Рис. 5. Диаграмма класса Multiknapsack





Класс Multiknapsack содержит следующий метод:


double[] Сalculate() - главная конечная точка вызываемая у клиента.




Класс Knapsack служит для хранения условий задачи, таких как веса предметов для рюкзака
и их критериев. Его диаграмма представлена на рис. 6




Класс Knapsack содержит следующие поля:


double[] Weight - массив весов для добавления в рюкзак;


double[] B - ограничения по каждому условию;


List Settings - критерии для каждого ограничения.


Также класс Knapsack содержит
конструктор:


Knapsack() - конструктор класса, инициализирующий основные переменные.




Класс BranchAndBound служит для
решения многомерной задачи рюкзака методом ветвей и границ. Его диаграмма
представлена на рис. 7.





Рис. 7. Диаграмма класса BranchAndBound




Класс BranchAndBound имеют
следующие поля:


Knapsack knapsack - условия рюкзака для конкретной задачи;


double[] resaltKnapsack - массив выбранных предметов(если предмет выбран
значение элемента массива 1, в противном случае 0).


В классе BranchAndBound также имеется следующий метод:


double[] Ran() - основной метод рассчитывающий оптимальный рюкзак методом
ветвей и границ.




Класс Mark предназначен для нахождения целевой функции по одному из
критериев. Его диаграмма представлена на рис. 8.




Класс Mark содержит следующие поля:


Knapsack knapsack - условия рюкзака для данной задачи;


int N - количество предметов, помещаемых в рюкзак.


double getMark() - метод нахождения значения целевой функции для текущее
задачи;


int[] getVeaSort() - метод сортирующий индексы предмета по величине отношения
веса к критерию.




Класс MultyMark производный от класса Mark. Дополняет его нахождением
целевой функции по каждому ограничению. Его диаграмма представлена на рис. 9.




Класс MultyMark содержит следующие поля:


double[] Rez1 - значения целевых функций в правой ветки задачи;


double[] Rez2 - значения целевых функций в левой ветки задачи.


Класс MultyMark содержит следующие методы:


double[] GetRez1() - решение целевой функции для правой ветки задачи;


double[] GetRez2() - решение целевой функции для левой ветки задачи;


double MaxC() - нахождение максимального решения и выбор ветки с этим
решением.


Приложение на базе WCF
разрабатывается в интегрированной среде разработки Microsoft Visual Studio Community 2015.Studio включает в себя редактор
исходного кода с поддержкой технологии IntelliSense и возможностью простейшего
рефакторинга кода. Встроенный отладчик может работать как отладчик уровня
исходного кода, так и как отладчик машинного уровня.


И клиентское, и серверное приложение для реализации графического
интерфейса используют технологию Win Forms.


Серверная часть приложения основана на WCF сервисах.


Windows Communication Foundation - это унифицированная модель
программирования распределенных приложений на платформе Microsoft. Она инкапсулирует и развивает
предшествующие технологии - ASMX
(технологию web-сервисов с расширением *.asmx), .NET Remoting, DCOM, MSMQ -
и предоставляет расширяемый API,
отвечающий разнообразным требованиям, которые возникают при создании
распределенных систем. До WCF
приходилось овладевать всеми этими технологиями, чтобы выбрать ту, которая
лучше всего подходит в конкретной ситуации. WCF упрощает задачу, предлагая единообразный подход.
WCF-служба - это множество оконечных точек (endpoints), которые предоставляет
клиентам некие полезные возможности. Оконечная точка - это просто сетевой
ресурс, которому можно посылать сообщения.


Класс службы WCF не может существовать самостоятельно. Каждая служба WCF
должна находиться под управлением некоторого процесса Windows, называемого
хостовым процессом. В нашем приложении хостом является Windows Forms
приложение.


Для работы с табличными данными используется тип DataTable. Тип DataSet представляет собой
контейнер для любого количества объектов DataTable, каждый из которых содержит
коллекцию объектов DataRow и DataColumn.


Для вывода диаграммы используется компонент Chart. Этот класс
предоставляет все свойства, методы и события диаграммы элемента управления
Windows.


Два наиболее важных свойства класса Chart - Series и ChartAreas,
являющиеся свойствами коллекций. Свойство-коллекция Series хранит объекты
Series, которые используются для хранения данных, которые должны отображаться,
наряду с атрибутами этих данных. Свойство-коллекция ChartAreas хранит объекты
ChartArea, которые в основном используются для рисования одной или нескольких
диаграмм с помощью одного набора осей.


Конфигурации службы описаны в конфигурационном файле App.config. Его
листинг приведен ниже.













В этом файле был определен новый элемент service с именем
MZZRServ.Multiknapsack. В службе была определена конечная тока со своими
адресом, привязкой и контрактом. Адресом конечной точки является
«Multiknapsack». Этот адрес пишется относительно базового адреса, определенного
в теге baseAddresses. Базовым адресом является «net.tcp://localhost:45617/». Он
имеет net.tcp схему. Соответственно привязкой конечной точки была
выбрана netTcpBinding. В атрибуте contract был указан контракт
«MZZRServ.IMultiknapsack».


Серверная часть приложения реализует WCF сервис и хост. Она содержит несколько классов. Общая
схема классов хоста службы показана на рис. 10.




Рис. 10. общая диаграмма классов хоста




Класс Form1 запускает службу. Диаграмма этого класса показана на рис. 11.




Класс Form1 имеет следующие методы:


void StartButton_Click() - обработчик кнопки для запуска службы;


void StopButton_Click() - обработчик кнопки для остановки службы.




Класс Program представляет механизм управления
приложением. Диаграмма этого класса представлена на рис. 12.




private void Main() - метод, определяющий точку входа
для приложения.


Клиентская часть приложения реализована в виде WinForm проекта. Она вызывается на клиентском компьютере и
содержит несколько классов, представленных ниже.


Диаграмма классов клиентского приложения представлена на рис. 13.




Рис. 13. Диаграмма классов приложения клиента




Класс Knapsack аналогичен такому же
классу на сервере. Он содержит те же поля и методы (пункт 4.3.3).




Класс Form1 представляет
графический пользовательский интерфейс для обращения к службе. Его диаграмма
представлена на рис. 14.







Класс Form1 содержит следующее
поля:


Dictionary test - список содержащий контрольные
примеры;


ListBox listBox1 - элемент графического интерфейса для выбора контрольного
примера;


TextBox textBoxRezult - элемент графического интерфейса для вывода результата;


DataGridView dataGridView1 - элемент графического интерфейса для
вывода результата анализа эффективности алгоритма;


Chart chart1 - график показывавший зависимость времени работы алгоритма от
размера рюкзака.


Класс Form1 содержит следующие
методы:


void Form1_Load() - загрузка формы в которой происходит инициализация
контрольных примеров и списков для ListBox;


void button1_Click() - обработчик кнопки реализующий связь с сервером и
отправкой ему задачи. А также вывод результата полученного от сервера;


void outputResult() - вывод результата оптимизации;


void button2_Click() - обработчик нажатия кнопки начинающий анализ
алгоритма оптимизации по введённым пользователем параметрам и выводящий
результат в виде графика и таблицы.




Класс Optimization решает задачу оптимизации рюкзака и связывается с
сервисом через прокси-класс. Класс представлен на рис. 15.




Рис. 15. - Диаграмма класса Optimization




Класс Optimization содержит следующие методы:


void IntroduceData() - метод решение задачи на сервере по данным введённым
пользователем;


void testExempl() - метод для решения контрольного примера выборного
пользователем.




Класс EffectiAnalysis выполняет анализ алгоритма по введённым
пользователем параметрам. Класс представлен на рис. 16.
Рис. 16. Диаграмма класса EffectiAnalysis





Класс EffectiAnalysis содержит следующие методы:


DataTable Ran() - главный метод, выполнявший анализ времени работы
алгоритма;


Knapsack GenerateRandomKnapsack() - метод реализующий генерацию
случайной задачи для расчета эффективности метода оптимизации;


int[] Experian() - метод рассчитает времени всех экспериментов.


Клиентское приложение использует сервисы для обращения к фикциям и
методам на сервере. Для использование WCF в клиентском приложении необходимо добавить ссылку на System.ServiceModel. После создания сервиса в проект
клиентского приложения необходимо добавить ссылку на сервис. Для этого в окне Solution Explorer в пункте Reference надо выбрать опцию Add Service Reference. В появившемся окне необходимо
указать адрес сервиса, нажать «Go» и
выбрать появившийся сервис. После этого будет сгенерирован файл References.cs, содержащий все разрешенные методы сервиса, и они станут
доступны из клиентского приложения через прокси класс. На клиентской стороне будет сгенерирован файл конфигурации App.config, содержащий
информацию о службе.
После чего можно создать экземпляр прокси класса и работать с ним как с обычным
классом.


На рис. 17 представлено окно хоста службы WCF.




На рис. 18 представлены результаты работы приложения для решения МЗЗР
методом «Ветвей и границ» с данными введёнными пользователем.




Рис. 18. Результаты работы с введёнными пользователем данными




На рис. 19 представлены результаты работы программы при решении первого
контрольного примера.




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





Как видно из рисунка результаты совпадают с рассчитанными ранее.


Выполнение режима оптимизации для 500 элементов 2-ч ограничений и 20-ти
опытов приведена на рис. 20.




Рис. 20. Результаты исследования эффективности




Сообщения об ошибках при некорректном вводе данных представлены на рис.
21.




Для корректной работы приложения должны соблюдаться следующие системные
требования.


Требования к компьютеру клиента и сервера:


·       операционная система MS Windows;


·       установленные .net framework 4 и
более;


·       оперативная память 1 Гб и более;


·       наличие 50 Мб свободного дискового пространства.




Исследование вычислительной эффективности проводится путем определения
зависимости затраченного времени на решении задачи от количества элементов в
условии.


Исследование вычислительной эффективности алгоритма
ветвей и границ проводилось на компьютере со следующей конфигурацией:


·       операционная система - Windows 10 64-bit;


·       процессор - Core i5 2000 МГц;


·       оперативная память - 4 Гб.


На вход сервиса постепенно подаются задачи с количеством элементов от 50
до значения, введённого пользователем. Результат выводится в виде графика. При
этом проводится для каждого количества предметов несколько опытов и выводится
среднее значение времени потраченного на решение задачи в миллисекундах.


Для начала проверим эффективность задачи при размере рюкзака равного 2.
Результат показан на рис. 22




Рис. 22. Анализ эффективности метода с 2-мя ограничениями




Как видно из графика время работы алгоритма имеет экспоненциальную
зависимость от количества элементов в задаче.


Проведем также эксперименты для 3-х и 4-х ограничений. Результаты,
которых показаны на рис.23 и рис. 24.




Рис. 23. Анализ эффективности метода с 3-мя ограничениями




Рис. 24. Анализ эффективности метода с 4-мя ограничениями.




Как видно из графиков время решения задачи на прямую зависит от
количества ограничений. При использовании 500 предметов и 4-x ограничений алгоритм работает 1400
миллисекунд. Исходя из этого можно сделать вывод что метод «ветвей и границ»
может использоваться для решения задачи рюкзака.







В ходе выполнения данной курсовой работы было разработано
клиент-серверное приложение, решающее МЗЗР методом «ветвей и границ». Был
проведен анализ вычислительной эффективности этого алгоритма. В ходе
исследования увеличивалось количество предметов, размещаемых в рюкзаке, при
неизменном количестве ресурсных ограничений.


Также во время выполнения курсовой работы были закреплены знания по
предмету «Клиент-серверное программирование», и приобретены навыки разработки
клиент-серверных приложений.







1.     ГОСТ
19.106-78 ЕСПД. Требования к программным документам, выполненным печатным
способом.


.       ГОСТ
19.503-79 Руководство системного программиста. Требования к содержанию и
оформлению.


.       ГОСТ
19.504-79 Руководство программиста. Требования к содержанию и оформлению.


.       ГОСТ
19.505-79 Руководство оператора. Требования к содержанию и оформлению.


.       ГОСТ
19.401-78 ЕСПД. Текст программы. Требования к содержанию и оформлению.


.       Резник
С., Крейн Р., Боуэн К. Основы Windows Communication Foundation для .NET
Framework 3.5. - М.: ДМК Пресс, 2008. - 480 с.


.       А.А.
Кожемякин HTML и CSS в примерах. Создание Web-страниц Питер 2012


.       Троелсен
Э. Язык программирования C# 5.0 и платформа .NET 4.5. 6-изд. : Пер. с англ. -
М. : ООО «И.Д. Вильямс», 2013. - 1312 с.


.       Сибраро
П. и др. WCF 4: Windows Communication Foundation и .NET 4 для профессионалов. - М.: ООО И.Д. Вильямс, 2011. -
465 с.


.       Берсенев
Г. Б. Системное проектирование программного обеспечения. Модели и методы
принятия решений. Тула 2010 - 116 с.







[ServiceContract]interface IMultiknapsack


[OperationContract][] Сalculate(double[] vesa,
List zad, double[] B, ref int time);


{class Multiknapsack : IMultiknapsack


{double[] Сalculate(double[] vesa, List zad,
double[] B, ref int time)


{stopWatch = new Stopwatch();.Start();Br = new
BranchAndBound();sum;rez = Br.Ran(vesa, zad, B, out sum);.Stop();s =
stopWatch.ElapsedMilliseconds;= (int)s;rez;


{double[] Weight { get; set; }int N { get; set; }//
количество условий;int Length { get; set; }// double[] B { get; set; }// ограничения по каждому условию.


public List Settings { get; set; }//
различные весаList Otnoh { get; set; }Knapsack(double[] vesa,
List zad, double[] B)


{.Weight = vesa;.N = B.Length;.Length = vesa.Length;.B =
B;.Settings = zad;


{Knapsack knapsack;//рюкзакdouble[] resaltKnapsack;int[]
getVeaSort(int[] index1, int pos, int nu)


//int[] rez = (int[])vesa.Clone();n = index1.Length - pos;[]
ot = new double[n];// (double[])otnoh[nu].Clone();[] index = new int[n];//
(int[])index1.Clone();(int i = 0; i < n; i++)


{[i] = knapsack.Otnoh[nu][i + pos];[i] = index1[i + pos];


}double getMark(double[] X2, int pos, int nump)


{[] X = (double[])X2.Clone();sumA = 0;sumC = 0;


//массив индексов[] index = new int[knapsack.Length];(int i =
0; i < index.Length; i++) index[i] = i;


{+= knapsack.Settings[nump][i];+= knapsack.Weight[i] *
X[i];(sumA > knapsack.B[nump]) return -1;


//получение сортированного массива индексов по отношению весов к частным
критериям


int[] Nindex = getVeaSort(index, pos, nump);(pos <
knapsack.Length)


{((sumA + knapsack.Settings[nump][i]) < knapsack.B[nump])


{[i] = 1;+= knapsack.Settings[nump][i];+= knapsack.Weight[i]
* X[i];




}if ((sumA + knapsack.Settings[nump][i]) == knapsack.B[nump])


{[i] = 1;+= knapsack.Settings[nump][i];+= knapsack.Weight[i]
* X[i];sumC;




}if ((sumA + knapsack.Settings[nump][i]) >
knapsack.B[nump])


{[i] = (knapsack.B[nump] - sumA) /
knapsack.Settings[nump][i];+= knapsack.Weight[i] * X[i];sumC;




}double[] Ran(double[] weight, List settings,
double[] B, out double sum)


{= new Knapsack(weight, settings, B);


(int i = 0; i < knapsack.B.Length; i++)


{tmp = new double[knapsack.Weight.Length];(int j = 0; j <
knapsack.Weight.Length; j++)


{[j] = knapsack.Weight[j] / knapsack.Settings[i][j];


}templ = new double[weight.Length];// { 0, 0, 0, 0, 0 };


////////////////АЛГОРИТМ(int i = 0; i < knapsack.Length;
i++)


[] rez1 = new double[knapsack.N];[pos-1] = 1;(int j = 0; j
< knapsack.N; j++)


}[] rez2 = new double[knapsack.N];[pos-1] = 0;(int j = 0; j
< knapsack.N; j++)


}(rez1.Min() > rez2.Min() && rez1.Min()!=-1)


void StartButton_Click(object sender, EventArgs e)


{(host==null||!(host.State == CommunicationState.Opening))


{= new
ServiceHost(typeof(Multiknapsack));.AddDefaultEndpoints();.Open();.Text =
"Сервис запущен";


void StopButton_Click(object sender, EventArgs e)


{(host.State == CommunicationState.Opening || host.State ==
CommunicationState.Opened)


{.Close();.Tex
Похожие работы на - Клиент-серверное приложение для системного проектирования программного обеспечения Курсовая работа (т). Информационное обеспечение, программирование.
Гражданское Право Курсовая Заказать
Курсовая работа по теме Изучение соотношения уровня самооценки и социометрического статуса у детей старшего дошкольного возр...
Реферат: Безопасность и охрана труда при производстве аммиака
Статья: Маркетинговые аспекты развития межфирменных сетей в России
Р Р Сочинение По Личным Впечатлениям
Ответ на вопрос по теме Ландшафтоведение как наука. Свойства и характеристики природных компонентов ландшафта
Инновационная Деятельность В Сфере Культуры Эссе
Пугачев В Повести Капитанская Дочка Сочинение
Реферат: Формирование национального самосознания учащихся
Курсовая работа по теме Разработка основных показателей деятельности предприятия 'Альфа'
Контрольные Работы Физика 8 Класс Фгос
Курсовая работа по теме Производные индола. Арбидол 10 капсул по 100 мг
Контрольная Работа На Тему Разработка Финансового Плана Организации
Современные Методы Выращивания Молодняка Лошадей Реферат
Курсовая работа: Проектирование электроснабжения метизного цеха
Практическая Работа По Информатике Html
Курсовая Работа На Тему Ценные Бумаги, Их Классификация И Анализ Доходности В Банке
Реферат: Коммерческие банки выступают, прежде всего, как специфические учреждения, которые, с одной стороны, привлекают временно свободные средства, а с другой удовле
Дипломная работа по теме Преступность и ее основные характеристики
Контрольная Работа По Математике 2 Класс Перспектива
Реферат: Mr Bowditch Essay Research Paper Sphere is
Похожие работы на - Теория "оседлого бандита" М. Олсона
Реферат: Освоение португальцами западного побережья Африки

Report Page