Нахождение оптимального решения задач линейного программирования симплексным методом

Общая задача линейного программирования, применение её для решения различных типов вычислительных задач. Применение процессора Microsoft Excel для расчета задач линейного программирования. Нахождение начального опорного решения. Алгоритмы и их описание.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 23.01.2014
Размер файла 1,9 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ РФ

Государственное образовательное учреждение

среднего профессионального образования

САНКТ-ПЕТЕРБУРГСКИЙ ПРОМЫШЛЕННО-ЭКОНОМИЧЕСКИЙ КОЛЛЕДЖ

КУРСОВОЙ ПРОЕКТ

По дисциплине: Математические методы

Тема: Нахождение оптимального решения задач линейного программирования симплексным методом

2010 г.

Введение

Данный курсовой проект предназначен для решения задач линейного программирования. Для этого было необходимо произвести расчеты, используя ручной метод решения задачи симплекс методом, табличный процессор MS Excel из пакета программ Microsoft Office, а также необходимо было написать программу в среде Microsoft Visual Basic.

Для решения задач линейного программирования симплекс методом в любом из вышеперечисленных способов возникает ряд неудобств, например: при решении задачи вручную при подсчетах таблиц можно ошибиться и неправильно решить задачу, при решении задачи в табличном процессоре Microsoft Excel существует необходимость переписывать формулы при составлении новой таблицы, написание программы в среде Microsoft Visual Basic очень утомительное и занимает слишком много времени.

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

1. ОБЩАЯ ЧАСТЬ

алгоритм линейный программирование

1.1 Общая задача линейного программирования, применение её для решения различных типов вычислительных задач

Существует множество форм деятельности предприятий, которые связаны с распределением ресурсов. Эти ресурсы включают труд, сырье, оборудование и денежные средства. Иногда процесс распределения ресурсов называют программированием. Поскольку обычно размеры ресурсов ограничены, возникают определенные проблемы. Если компания выпускает продукцию нескольких видов с использованием одного и того же оборудования и трудовых ресурсов, то ее администрация должна решить, какое количество продукции каждого вида производить. Принятое решение будет направлено на удовлетворение определенной цели администрации. Администрация может задать цель наладить производство таким образом, чтобы максимизировать общий выпуск продукции за месяц, максимизировать время использования оборудования за неделю или минимизировать еженедельные затраты труда. Переменные решения -- это количество продукции каждого вида, которое необходимо произвести за данный период времени.

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

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

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

1. Необходимо осуществить математическую формализацию задачи линейного программирования. Это означает, что нужно идентифицировать управляемые переменные и цель задачи. Затем с помощью этих переменных цель и ограничения на ресурсы описываются в форме линейных соотношений.

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

3. Когда оптимальное решение получено, производится его оценка. Она включает в себя анализ задачи на чувствительность.

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

Основная процедура является общей для формулирования всех задач линейного программирования:

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

Шаг 2. Определение цели и ограничений на ресурсы.

Шаг 3. Описание цели через переменные задачи.

Шаг 4. Описание ограничений через переменные задачи

В своем курсовом проекте я рассчитывал задачу симплекс методом, о котором я расскажу далее.

Если задача линейного программирования содержит более двух переменных, то ее решение требует применения некоторого алгебраического метода. Принцип, лежащий в основе решения задачи с множеством переменных, достаточно прост. Предполагается, что оптимальному решению соответствует одна из крайних точек допустимого множества. Следовательно, необходимо провести оценку значений целевой функции во всех крайних точках допустимого множества и выбрать ту из них, в которой достигается оптимальное значение целевой функции. Мной используются методы матричной алгебры и такой алгоритм перехода от одной крайней точки допустимого множества к другой, при котором переход осуществляется только в случае, когда значение целевой функции улучшается. Если оказывается, что некоторое базисное решение улучшить уже нельзя, то оно является оптимальным планом задачи. Этот алгоритм получил название симплекс-метода. Нет необходимости вдаваться в детали алгоритма симплекс-метода, поскольку для решения задач линейного программирования с множеством переменных используется, как правило, один из компьютерных пакетов прикладных программ, которые общедоступны и широко применяются для этих целей. Однако для более полной интерпретации и всесторонней оценки решения задачи линейного программирования, полученного с использованием пакета прикладных программ, с основными принципами этого метода полезно ознакомиться.

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

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

Базовую модель, с которой я работал в дальнейшем, формально можно представить следующим образом:

Максимизировать

Z = с1х1 + с2x2 + ... + сnхn

Здесь сi - константы. Данная функция максимизируется в условиях системы m линейных ограничений:

a11х1 + а12x2 + а13x3 + … + a1nxnb1

a21х1 + а22x2 + а23x3 + … + a2nxnb2

a31х1 + а32x2 + а33x3 + … + a3nxnb3

am1х1 + аm2x2 + аm3x3 + … + amnxnbm

x10

Данная система содержит n переменных и m ограничений. Первая цифра двойных индексов коэффициентов в левой части системы ограничений соответствует номеру ограничения, вторая -- номеру переменной. Например, a32 принадлежит ограничению 3 и является коэффициентом при переменной х2.

1.2 Применение процессора Microsoft Excel для расчета задач линейного программирования

Microsoft Excel -- одна из программ пакета Microsoft Office, представляющая собой программируемый табличный калькулятор.

Область применения Excel широка:

· благодаря тому, что лист Excel представляет собой готовую таблицу, Excel часто используют для создания документов без всяческих расчётов, просто имеющих табличное представление (прайс-листы в магазинах, расписания);

· в Excel легко можно создавать различные виды графиков и диаграмм, которые берут данные для построения из ячеек таблиц (график снижения продаж на предприятии за указанный период);

· его могут использовать обычные пользователи для элементарных расчетов (сколько потратил за этот месяц, что/кому/когда дал/взял);

· Excel содержит многие математические и статистические функции, благодаря чему его могут использовать школьники и студенты для расчетов курсовых, лабораторных работ;

· Excel интенсивно используется в бухгалтерии - во многих фирмах это основной инструмент для оформления документов, расчётов и создания диаграмм. Естественно, он имеет в себе соответствующие функции;

· Excel может также работать как база данных.

Минимальные системные требования:

· Операционная система Microsoft® Windows® 95/98/Me/2000/XP/Vista/Seven

· Процессор Pentium® 200 МГц MMX

· 16 МБ оперативной памяти

· Разрешение экрана 800х600 с глубиной цвета 16 бит

· 16-битное звуковое устройство

· 8-скоростное устройство для чтения компакт-дисков или DVD-дисков

Excel - программируемый табличный калькулятор. Все расчеты в Excel выполняют формулы. Формулой Excel считает все, что начинается со знака «=». Если в ячейке написать просто «1+1», Excel не будет вычислять это выражение. Однако если написать «=1+1» и нажать Enter, в ячейке появится результат вычисления выражения - число 2. После нажатия Enter формула не пропадает, ее можно увидеть снова, если сделать двойной щелчок по ячейке, или если выделить ее и нажать F2 или просто нажать Ctrl + «Апостроф». Также ее можно увидеть в панели инструментов «Строка формул», если опять же выделить ячейку. После двойного щелчка, нажатия F2 или после щелчка в строке формул, можно изменить формулу, и для завершения нажать клавишу Enter.

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

Ниже я представлю пример решения задачи линейного программирования в Microsoft Excel с использованием модуля «Поиск решения»

MS Excel содержит модуль «Поиск решения» позволяющий осуществлять поиск оптимальных решений, в том числе решение задач линейного, целочисленного, нелинейного и стохастического программирования.

Постановка задачи осуществляется посредством задания ячеек для переменных и записи формул с использованием этих ячеек для целевой функции и системы ограничений. Например, на рис 1.1 приведена постановка задачи линейного программирования с целочисленным решением.

Математическая модель этой задачи, записанная в обычной математической форме:

Целевая функция

S = 60*x1+70*x2+120*x3+130*x4 > max

Система ограничений

1*x1+1*x2+1*x3+1*x4 ? 16

6*x1+5*x2+4*x3+3*x4 ? 110

4*x1+6*x2+10*x3+13*x4 ? 150

x1, x2, x3, x4 ? 0 - целые

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

Рис 1 Модуль «Поиск решения» программы MS Excel

Далее, переходим к решению. Выбираем в меню «Сервис | Поиск решения». Открывается диалоговое окно «Поиск решения». Здесь указывается ячейки целевой функции, переменных и устанавливаются ограничения исходя из системы ограничений. Можно начать решение, или установить «параметры» решения (рис.1.2).

Рис 2 Окно «Параметры поиска решения» модуля «Поиск решения»

Здесь устанавливаем «параметры» задачи - выбираем «линейная модель», «неотрицательные значения» и «показывать результаты итераций».

«Линейная модель» - служит для ускорения поиска решения линейной задачи оптимизации. «Показывать результаты итераций» - служит для приостановки поиска решения для просмотра результатов отдельных итераций.

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

«Метод Ньютона» - реализация квазиньютоновского метода, в котором запрашивается больше памяти, но выполняется меньше итераций, чем в методе сопряженных градиентов.

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

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

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

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

1.3 Использование технических и программных средств для решения задач линейного программирования

Данный курсовой проект был написан на компьютере со следующими характеристиками и использовался следующий комплекс технических средств и ПО ЭВМ: микропроцессор: Intel Pentium Core® 2 Duo

Микропроцессор. Самым главным элементом в компьютере является микропроцессор. Он осуществляет выполнение программ, установленных на компьютере, и управляет работой остальных устройств. Представляет собой небольшую электронную схему, Микропроцессор выполняет сотни различных операций и делает это со скоростью в несколько десятков или даже сотен миллионов операций в секунду. Микропроцессоры отличаются друг от друга типом (моделью) и тактовой частотой. Тактовая частота указывает, сколько элементарных операций микропроцессор выполняет за одну секунду, т. е. она характеризует быстродействие компьютера. Тактовая частота измеряется в мегагерцах (МГц). Тактовая частота на данном компьютере составляет 3.2 Ггц.

Оперативная память. Очень важным элементом компьютера является оперативная память. Именно из нее процессор берет программы и исходные данные для обработки, в нее он записывает полученные результаты. Содержащиеся в ней данные сохраняются пока компьютер включен. При выключении компьютера содержимое оперативной памяти стирается. Она состоит из двух частей: основная память и расширенная (дополнительная). Основная память имеет размер 640 Кбайт, а остальные Кбайты размещаются в дополнительной памяти. Оперативная память на данном компьютере DDRII PC64200 2048Мбайт.

Кэш - память. Для ускорения доступа к оперативной памяти на быстродействующих компьютерах используется сверхбыстродействующая кэш-память (в нашем случае 2048Kb), которая хранит копии наиболее часто используемых участков оперативной памяти. При обращении микропроцессора к памяти сначала производится поиск нужных данных в кэш-памяти. Поскольку время доступа к кэш-памяти в несколько раз меньше, чем к обычной памяти, среднее время доступа к памяти уменьшается.

Жесткие диски. Накопители на жестком диске (винчестеры) предназначены для постоянного хранения информации, используемой при работе с компьютером: программ операционной системы, часто используемых пакетов программ, редакторов документов, трансляторов с языков программирования и так далее. Из всех устройств для хранения данных жесткие диски обеспечивают наиболее быстрый доступ к данным, высокие скорости чтения и записи данных.

Для пользователя жесткие диски отличаются друг от друга следующими характеристиками:

o Емкостью, то есть тем, сколько информации помещается на диске (Емкость данного винчестера - 260 Гбайт)

o Быстродействием, то есть временем доступа к информации и скоростью чтения и записи информации (7200)

o Интерфейсом, то есть типом контроллера, к которому должен подсоединяться жесткий диск.(SATAII)

Мониторы: Монитор (дисплей) компьютера предназначен для вывода на экран текстовой и графической информации.

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

Возможность изменения разрешения экрана определяется используемыми монитором и видеоадаптером.

Характеристики монитора:

Тип дисплея: ЖК-монитор Acer Al1511

Максимальный размер разрешения: 1280 x 1024

Видеокарта: Видеокарта это устройство для вывода графической информации на монитор, прямого кодирования видео сигнала со внешнего источника. (Видеокарта на данном компьютере - NVIDIA GeForce 8800 GTS)

Принтеры Принтер предназначен для вывода информации на бумагу. Обычно принтеры могут выводить не только текстовую информацию, но также рисунки и графики. Одни принтеры позволяют печатать только в одном цвете (черном), другие могут выводить также и цветные изображения.

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

Программы, работающие на компьютере, можно разделить на три категории:

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

Ш Инструментальные системы (системы программирования), обеспечивающие создание новых программ для компьютера.

Среди всех системных программ, с которыми приходится иметь дело пользователям компьютеров, особое место занимают операционные системы. Операционные система (ОС) управляет компьютером, запускает программы, обеспечивает защиту данных, выполняет различные сервисные функции по запросам пользователей и программ. Каждая программа пользуется услугами ОС, а потому может работать только под управлением той ОС, которая обеспечивает для нее эти услуги. Таким образом, выбор ОС очень важен, так как он определяет, с какими программами Вы сможете работать на своем компьютере. От выбора ОС зависит также производительность, степень защиты данных, необходимые аппаратные средства и так далее.

На данном персональном компьютере (ПК) используется операционная система c Windows XP.

Windows XP - операционная система (ОС) Microsoft, основанная на технологии Windows NT. Это полностью 32-разрядная ОС с приоритетной многозадачностью и улучшенной реализацией работы с памятью.

В этой ОС реализована поддержка современного оборудования, в частности в состав операционной системы включен усовершенствованный Диспетчер устройств (Device Manager), с помощью мастера установки оборудования - Add/Remove Hardware Wizard можно установить новое оборудование, осуществить его диагностику, произвести отключение как стационарных, так и подсоединяемых в "горячем" режиме устройств; поддержка режима подключения Plug-and-Play (PnP), в котором выполняет автоматическое конфигурирование аппаратуры и "горячее" подключение модулей PC Card, аккумуляторов портативных компьютеров, а также использующих шину USB периферийных устройств. Кроме того, Windows XP поддерживает стандарты DirectX и OpenGL, включает программу дефрагментации диска, новое приложение резервного копирования и утилиту очистки диска, обеспечивает поддержку используемой в Windows 98 файловой системы FAT32 и совместимость файловых стандартов Windows NT и Windows 9x.

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

В Windows XP два логически связанных модуля объединены в рамках одного, поэтому работать с сетевыми компонентами здесь, намного удобнее.

В сетях Windows XP существует целый ряд возможностей: групповые политики (GROUP Police), служба каталогов Active Directory (AD), система централизованной синхронизации данных, реализованная на базе технологии IntelliMirror.

Операционная система Windows XP получила сертификат безопасности Common Criteria. Это свидетельствует о том, что данная ОС является одной из наиболее безопасных и может использоваться для решения многих критически важных задач.

Эта операционная система обладает универсальной защитой, поскольку на локальном уровне использует файловую систему Encrypting File System (EFS), на сетевом уровне - протокол Kerberos, на уровне Internet - защитную инфраструктуру на базе открытых ключей (Public Key Infrastructure, PKI), а на физическом уровне - технологию интеллектуальных карт. Входящий в Windows XP Pro модуль System File Protection (SFP) обеспечивает защиту файлов .sys, .dll, .exe и .ocx. Эта очень полезная функция предотвращает перезапись приложениями ключевых системных файлов их устаревшими или модифицированными версиями и пользователям не приходиться периодически перезагружать компьютер.

Таким образом, Windows XP - самая подходящая операционная система для студентов.

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

§ Microsoft Office;

§ Microsoft Visual Basic 6.0;

1.3.1 Microsoft Visual Basic 6.0

В программной части курсового проекта использовался язык программирования Visual Basic, объектная модель ADO.

Среда программирования - позволяет выполнить весь комплекс операций, связанных с составлением программы, работы с ней, и включает:

- интерпретатор (система программирования Visual Basic включает и компилятор);

- программу-оболочку, позволяющую с помощью меню управлять работой среды;

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

Язык программирования - это инструмент для создания компьютерных программ.

Visual Basic - это программа, характерной особенностью которой является возможность создания и использования самостоятельных компонентов (объектов). VB самый популярный язык программирования. Широкое распространение обеспечивается его уникальными свойствами:

- простота;

- быстрота и легкость создания приложений.

Рабочая среда в Visual Basic называется интегрированной средой разработки или IDE (Integrated development environment), потому что объединяет много различных функций, таких как разработка, редактирование, компиляция и отладка внутри общей среды, в то время как в традиционных средствах разработки программных продуктов каждая функция работает как отдельная функция со своим собственным интерфейсом.

Visual Basic предоставляет большие возможности, позволяющие конфигурировать рабочую среду самым удобным образом. С помощью Visual Basic можно выполнять различные задачи. Этот язык может использоваться для несложных, мало функциональных баз данных с довольно большими объемами информации.

Основой для создания интерфейса любого приложения является форма. На ней размещаются элементы управления. Они являются объектами, с которыми работает разработчик в процессе построения интерфейсной части приложения.

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

Элементы управления - это объекты, которые содержатся в формах. Каждый тип элемента имеет свой собственный набор свойств, методов и событий, которые делают его наиболее подходящим для определенной цели. Некоторые элементы управления лучше всего использовать для ввода или отображения текста, другие для доступа к приложениям и данным так, будто эти приложения (Word, Excel, и другие) являются частью вашего приложения.

Свойства реализуются посредством атрибутов, методы - как действия, события - как ответ на что - либо изменяющееся.

В процессе разработки приложения данного курсового проекта на форму были помещены следующие элементы управления:

1. Textbox - текстовое поле, которое служит для отображения, ввода и редактирования текста.

2. CommandButton - кнопка, которая служит для инициирования некоторых действий программы после щелчка на ней кнопкой мыши.

1. Label - надпись, которая служит для отображения текста который пользователь не может изменить.

2. Option - переключатель.

1.3.2 Microsoft Office

В процессе написания отчета я пользовался некоторыми приложениями пакета прикладных программ Microsoft Office 2003.

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

Microsoft Excel

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

Microsoft Word

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

При работе с Ms Word мной были использованы следующие функции:

· колонтитулы

· форматирование шрифтов

· межстрочный интервал

· создание оглавление

· списки

· панель рисования (для создания алгоритмов)

1.4 Алгоритм нахождения оптимального решения задач линейного программирования

Для того чтобы решить задачу симплексным методом (методом последовательного улучшения плана), необходимо выполнить следующее:

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

· Найти начальное опорное решение с базисом из единичных векторов и коэффициенты разложений векторов условий по базису опорного решения (если опорное решение отсутствует, то задача не имеет решения в силу несовместности системы ограничений).

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

· Если выполняется признак единственности оптимального решения, то решение задачи заканчивается.

· Если выполняется условие существования множества оптимальных решений, то путем простого перебора находят все оптимальные решения.

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

· Если пункты №4-№6 алгоритма не выполняются, находят новое опорное решение с использованием условия наискорейшего нахождения оптимального решения и возвращаются к пункту №3

2. СПЕЦИАЛЬНАЯ ЧАСТЬ

2.1 Задание для курсового проекта

Данный курсовой проект был разработан на основе следующей системы уравнений-ограничений

3x1+4x2-3x3+x4-x5+2x6-x7<=12

x1+2x2+5x3+2x4+10x5-x6+4x7<=6

2x1-x2+x3-x4+2x5+7x6-x7<=5

и значения целевой функции:

F(x) = 2x1+2x2+4x3+3x4+5x5+8x6+6x7> max

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

2.1.1 Приведение задачи к каноническому виду

Приведем задачу к каноническому виду. Для этого в левую часть первого ограничения-неравенства типа “<=” вводим дополнительную переменную x8 с коэффициентом “+1”. В целевую функцию переменная x8 входит с коэффициентом 0 (то есть не входит). По аналогии вводим дополнительные переменные в остальные два ограничения-неравенства.

3x1+4x2-3x3+1x4-1x5+2x6-1x7+1x8+0x9+0x10=12

1x1+2x2+5x3+2x4+10x5-1x6+4x7+0x8+1x9+0x10=6

2x1-1x2+1x3-1x4+2x5+7x6-1x7+0x8+0x9+0x10 =5

F(x) = 2x1+2x2+4x3+3x4+5x5+8x6+ 6x7+0x8+0x9+0x10 > max

2.2 Нахождение начального опорного решения (НОР)

Исходя из канонического вида задачи, можно найти начальное опорное решение для неё:

3x1+4x2-3x3+1x4-1x5+2x6-1x7+1x8+0x9+0x10=12

1x1+2x2+5x3+2x4+10x5-1x6+4x7+0x8+1x9+0x10=6

2x1-1x2+1x3-1x4+2x5+7x6-1x7+0x8+0x9+0x10 =5

F(x) = 2x1+2x2+4x3+3x4+5x5+8x6+ 6x7+0x8+0x9+0x10 > max

Xij>0

НОР: х1,х2,х3,х4,х5,х6,x7=0

х8=12

х9=6

х10=5

F (x) =0

2.3 Нахождение оптимального решения

Для проверки правильности автоматического расчета в приложении необходимо произвести ручной расчет. В начале мы заполняем симплексную таблицу (см. Таблицу 1) исходными данными: Сб, Хб, А0 и показатели критерия оптимальности. Затем рассчитываем. Для проверки правильности автоматического расчета в приложении необходимо произвести ручной расчет. В начале мы заполняем симплексную таблицу (см. Таблицу 1) исходными данными: Сб, Хб, А0 и показатели критерия оптимальности. Затем рассчитываем:

1. Значение целевой функции по формуле:

F = A01*Сб1+ A02*Сб2+ ..А0n*Cбn

F=12*0+6*0+5*0=0

2. Значения элементов целевой строки по формуле.

Yn=An1*Cбn+An2*Cбn+…Anm*Cбn

Y1 = 3*0+2*0+1*0+1*0=0

Таким же способом рассчитываем остальные элементы.

3. Так как значения равны нулю, то вводим строку «К» с помощью, которой высчитаем какой столбец мне нужно вычеркнуть.

Высчитываем его по формуле:

K1=0-2=-4 K2=0-2=-2 K3=0-4=-4 K4=0-3=-3 K5=0-5=-5 K6=0-8=-8 и т.д.

4. Выбираем столбец А6 так как он по модулю больше всех остальных отрицательных чисел

5. Теперь мы выбираем строку, по следующим формулам:

Q1=12/2=6

Q2=6/-1=-6

Q3=5/7=0,71

6. Выбираем строку с минимальным значением по Q.

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

Таб. 1 Первый шаг расчета

Итерация 1

Cбаз

Базис план

План X0

2,00

2,00

4,00

3,00

5,00

8,00

6,00

0,00

0,00

0,00

A1

A2

A3

A4

A5

A6

A7

A8

A9

A10

0,00

A8

12,00

3,00

4,00

-3,00

1,00

-1,00

2,00

-1,00

1,00

0,00

0,00

0,00

A9

6,00

1,00

2,00

5,00

2,00

10,00

-1,00

4,00

0,00

1,00

0,00

0,00

A10

5,00

2,00

-1,00

1,00

-1,00

2,00

7,00

-1,00

0,00

0,00

1,00

Zk

0,00

0,00

0,00

0,00

0,00

0,00

0,00

0,00

0,00

0,00

0,00

dk

-2,00

-2,00

-4,00

-3,00

-5,00

-8,00

-6,00

0,00

0,00

0,00

Второй и третий и четвертый шаги ручного расчета аналогичны (Таб 2; Таб 3; Таб 4)

Таб. 2 Второй шаг расчета

Итерация 2

Cбаз

Базис план

План X1

2,00

2,00

4,00

3,00

5,00

8,00

6,00

0,00

0,00

0,00

A1

A2

A3

A4

A5

A6

A7

A8

A9

A10

0,00

A8

10,57

2,43

4,29

-3,29

1,29

-1,57

0,00

-0,71

1,00

0,00

-0,29

0,00

A9

6,71

1,29

1,86

5,14

1,86

10,29

0,00

3,86

0,00

1,00

0,14

8,00

A6

0,71

0,29

-0,14

0,14

-0,14

0,29

1,00

-0,14

0,00

0,00

0,14

Zk

5,71

2,29

-1,14

1,14

-1,14

2,29

8,00

-1,14

0,00

0,00

1,14

dk

0,29

-3,14

-2,86

-4,14

-2,71

0,00

-7,14

0,00

0,00

1,14

Таб. 3 Третий шаг расчета

Итерация 3

Cбаз

Базис план

План X2

2,00

2,00

4,00

3,00

5,00

8,00

6,00

0,00

0,00

0,00

A1

A2

A3

A4

A5

A6

A7

A8

A9

A10

0,00

A8

11,81

2,67

4,63

-2,33

1,63

0,33

0,00

0,00

1,00

0,19

-0,26

6,00

A7

1,74

0,33

0,48

1,33

0,48

2,67

0,00

1,00

0,00

0,26

0,04

8,00

A6

0,96

0,33

-0,07

0,33

-0,07

0,67

1,00

0,00

0,00

0,04

0,15

Zk

18,15

4,67

2,30

10,67

2,30

21,33

8,00

6,00

0,00

1,85

1,41

dk

2,67

0,30

6,67

-0,70

16,33

0,00

0,00

0,00

1,85

1,41

Таб. 4 Четвертый шаг расчета

Итерация 4

Cбаз

Базис план

План X3

2,00

2,00

4,00

3,00

5,00

8,00

6,00

0,00

0,00

0,00

A1

A2

A3

A4

A5

A6

A7

A8

A9

A10

0,00

A8

5,92

1,54

3,00

-6,85

0,00

-8,69

0,00

-3,38

1,00

-0,69

-0,38

3,00

A4

3,62

0,69

1,00

2,77

1,00

5,54

0,00

2,08

0,00

0,54

0,08

8,00

A6

1,23

0,38

0,00

0,54

0,00

1,08

1,00

0,15

0,00

0,08

0,15

Zk

20,69

5,15

3,00

12,62

3,00

25,23

8,00

7,46

0,00

2,23

1,46

dk

3,15

1,00

8,62

0,00

20,23

0,00

1,46

0,00

2,23

1,46

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

2.4. Алгоритмы и их описание

Размещено на http://www.allbest.ru/

Рис 3 Схема алгоритма процедуры обработки события кнопки “След таблица”

Рис 4 Схема алгоритма процедуры обработки события кнопки “Просчет”

Размещено на http://www.allbest.ru/

Рис 5 Схема алгоритм процедуры обработки события кнопки «Назад»

Размещено на http://www.allbest.ru/

Рис 6 Схема алгоритма процедуры “ Next_Table ”

  • Рис 7 Схема алгоритма процедуры “ Cel_line ”

Рис 8 Схеме алгоритма процедуры “ Find_Col”

Рис 9 Схема алгоритма процедуры “Celevaya”

Рис 10 Схема алгоритма процедуры “ Calc_Q”

Размещено на http://www.allbest.ru/

Рис 11 Схема алгоритма процедуры “ ClearText ”

Размещено на http://www.allbest.ru/

Рис 12. Схема алгоритм процедуры обработки события кнопки «Очистка»

Рис 13. Схема алгоритм процедуры обработки события кнопки «По умолчанию»

Рис 14 Схема алгоритма процедуры “ Clear ”

Рис 15 Схема алгоритма процедуры “ Find_Row ”

Рис 16 Схема алгоритма процедуры “ Nach_dan ”

Рис 17 Схема алгоритма функции ”Proverka”

2.5 Описание программы

Программная часть была создана на языке VB, вся расчетная часть программного кода основана на расчетах Excel. Все расчеты в Excel совпадают с расчетами, представленными в приложении.

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

Текстовые поля предназначены для ввода исходных данных и вывода конечного результата. В каждом массиве элементы Textbox обозначены уникальным индексом, имели одинаковые значения свойств визуального представления элемента и свойства Name. Также использовалось свойство Text, в которое помещается введенный пользователем текст. По мере ввода данных Visual Basic автоматически изменяет значение этого свойства так, чтобы оно отображало текущее содержимое текстового поля. Благодаря использованию этого свойства при запуске программы в элементах Textbox отображаются вводимые и вычисляемые значения.

Элемент управления CommandButton используется для того, чтобы начать, прервать или закончить какой-либо процесс. Кнопка предназначена для выполнения основных расчетов: расчета элементов основания матрицы, значений переменных включенных в базис, признаков критерия оптимальности, целевой строки, подсчета значений элементов целевой строки и столбца Q по формулам, выбора генерального столбца, ключевой строки и генерального элемента. Была использована процедура обработки события Click для всех кнопок.

В процессе разработки приложения данного курсового проекта использованы процедуры обработки событий и разработаны процедуры:

1. Command1_Click() - “Переход к следующей таблице”

2. Command2_Click - “Назад”

3. Command3_Click - “Просчет”

4. Next_Table- “Расчет следующей таблицы“

5. Cel_line- “Поиск целевой строки”

6. Find_Col- “Выбор генеральной строки ”

7. ClearTexts - “Очистка ячеек”

8. Command4_Click - “Отчистка”

9. Command6_Click - “По умолчанию”

10. Command7_Click - “Выход”

11. Form_Load - “Загрузка формы“

12. FirstData - “Загрузка новых данных”

13. Clear - “Очистка расчетных полей”

14. ShowData - “Вывод данных на экран”

15. Calc_Q - “Расчет Q”

16. Celevaya - “Расчет целевой функции”

17. Find_Row - “Выбор генерального столбца”

18. Command6_Click - “Вызов процедуры возврата начальных данных”

19. Command7_Click - “Выход из приложения”

20. Nach_dan - “Процедуры возврата начальных данных”

2.6 Описание процесса отладки программы обработка ошибок программы

Во время разработки программ, программист не может предугадать, какая ошибка может произойти в тот или этот момент выполнения программы.

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

Ошибки могут появляться как на этапе разработки и отладки, так и в процессе работы приложения. Все ошибки можно разделить на 4 группы:

Синтаксические - связанные с неправильным синтаксисом операторов;

Структурные - связанные с некорректным использованием операторов;

Логические - связанные с неправильными действиями программы;

Ошибки выполнения - возникающие в процессе исполнения приложения.

Отладку программы можно поделить на 3 этапа:

1. ошибка компиляции

2. ошибки выполнения

3. логические ошибки

Ошибки компиляции возникают, если в Visual Basic не может интерпретировать код, например, некорректный вод числа скобок, неправильное написание оператора и так далее.

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

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

Для поиска ошибок я использовал следующие методы:

Инструкция Option Explicit

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

Пошаговое выполнение программы

Редактор Visual Basic позволяет осуществлять пошаговое выполнение программы. Такой режим можно задать при помощи меню Debug. При выполнении программы в пошаговом режиме используется 4 команды:

· Debug/StepInto - осуществляется последовательную шаг за шагом отладку программы, включая процедуры;

· Debug/StepOpen - осуществляется последовательную шаг за шагом отладку всей программы, не заходя в код программы. Если встречается процедура, то она выполняет всю процедуру целиком.

· Debug/StepOut - завершение выполнения текущей процедуры и останавливается на следующей инструментальной программе.

· Debug/Run to Cursor -выполняет программу инструкции до места, где стоит курсор.

Точки прерывания

В Visual Basic можно установить точки прерывания. Устанавливаются командой Debug Toggle Break, а снимаются командой Debug Toggle Break Point.

Вызов сообщения

При помощи функции MsgBox выводил сообщения на экран, для проверки правильности выполнения программы.

Коды ошибок возникших в результате создания приложения:

Ошибка №13 - несоответствие типов (рис 18.)

Рис 18

Ошибка №11 - деление на ноль (рис 19)

Рис 19

Ошибка компиляции (рис 20)

Рис 20

Ошибка №9- Ошибка режима выполнения (Рис 21)

Рис 21

Ошибка типа - Неправильно задан тип переменной (Рис 22):

Рис 22

2.7 Инструкция пользователю

1. В Microsoft Windows запустить исполняемый файл (Симплекс метод.exe).

2. Появиться диалоговое окно приложения. Таблица будет заполнена стандартными данными (рис 23).

Рис 23 Окно приложения

3. Если вы хотите ввести свои данные, то необходимо нажать кнопку «Очистка», затем необходимо ввести в поля данные, которые предназначены для расчета элементов основания матрицы. Значений переменных включенных в базис. Указываем искомый признак критерия оптимальности целевой строки. И используем клавиши для подсчета значений элементов целевой строки и столбца Q, выбора генерального столбца, ключевой строки и генерального элемента.

4. Затем повторно пользуемся группой кнопок для расчёта следующей таблицы.

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

Рис 24 Таблица «0»

6. После ввода собственных данных необходимо нажать кнопку «Очистка», затем необходимо ввести в поля данные, которые предназначены для расчета элементов основания матрицы. Значений переменных включенных в базис. Указываем искомый признак критерия оптимальности целевой строки. И используем клавиши для подсчета значений элементов целевой строки и столбца Q, выбора генерального столбца, ключевой строки и генерального элемента.

7. Затем повторно пользуемся группой кнопок. Для расчёта следующей таблицы.

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

9. Для завершения работы с программой необходимо щелкнуть на кнопке «Выход». В результате вы вернетесь в интегрированную среду разработки VB.

Заключение

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

Таким образом, используя возможности MS Excel, где решение численными методами целого ряда математических задач выполняется в табличной форме, а вычисления производятся с использованием математических формул и средств программирования Visual Basic была разработана программа, позволяющая решить задачу ЛП симплексным методом.

Данную программу решения задачи ЛП симплексным методом можно усовершенствовать по мере необходимости, подстраивать под нужды конечного потребителя (пользователя), использовать новые функциональные возможности VB.

Приложения

Приложение №1

Внешний вид форм

Рис 25 Общий вид формы

Рис 26 Просчет первой таблицы

Рис 27 Просчет второй таблицы

Рис 28 Просчет третьей таблицы

Рис 29 Просчет четвертой таблицы

Рис 30 Вывод сообщения о нахождении решения

Приложение №2

Программный код

Private DATA() As Double 'массив эл-тов расчетной таблицы

Private Q() As Double 'массив столбца Q

Private Cb() As Double 'массив эл-тов базового плана

Private X() As String 'массив обозначений строк

Private it As Integer 'индекс текущей таблицы

Private s As Integer 'генеральная строка

Private r As Integer 'генеральный столбец

Private Finish As Boolean 'значение остановки поиска решения

Private tables As Integer 'кол-во таблиц

Private Sub Command1_Click() `следующая таблица

Command1.Enabled = False

Command3.Enabled = True

If Check1.Value = 1 Then

Command1.Enabled = True

Command3.Enabled = False

End If

If Proverka Then

Call Cel_line

Call Next_Table

Call ShowData

Call Clear

If Finish = False And Check1.Value = 1 Then

Call Cel_line

End If

Else

MsgBox "Таблица не заполнена или заполнена не до конца!", vbExclamation, "Info"

End If

End Sub

Private Sub Command2_Click() `назад

Command1.Enabled = True

Command3.Enabled = True

If it > 0 Then

it = it - 1

Call Clear

Call ShowData

If Check1.Value = 1 Then

Call Cel_line

End If

End If

End Sub

Private Sub Command3_Click() 'просчет генер. столбца и строки

Call Cel_line

Command1.Enabled = True

Command3.Enabled = False

End Sub

Private Sub Next_Table() 'Расчёт след таблицы

'ReDim - переопределяет область памяти для хранения переменной массива

If Finish = False Then

ReDim Preserve DATA(1 To 5, 11, tables + 1)

ReDim Preserve Q(1 To 3, tables + 1)

ReDim Preserve Cb(1 To 3, tables + 1)

ReDim Preserve X(1 To 3, tables + 1)

tables = tables + 1

For i = 1 To 3

For j = 0 To 10

If i = s Then

DATA(i, j, it + 1) = DATA(i, j, it) / DATA(s, r, it)

Else

DATA(i, j, it + 1) = DATA(i, j, it) - (DATA(i, r, it) * DATA(s, j, it)) / DATA(s, r, it)

End If

Next j

Next i

Cb(1, it + 1) = Cb(1, it)

Cb(2, it + 1) = Cb(2, it)

Cb(3, it + 1) = Cb(3, it)

Cb(s, it + 1) = Text_UP(r).Text

X(1, it + 1) = X(1, it)

X(2, it + 1) = X(2, it)

X(3, it + 1) = X(3, it)

X(s, it + 1) = Text0(r).Text

it = it + 1

End If

End Sub

Private Sub Cel_line() 'поиск текущей целевой строки

If Proverka Then

Finish = False

If it = 0 Then Call FirstData

Call Celevaya

For i = 0 To 10

Text5(i).Text = Round(DATA(5, i, it), 2)

Text4(i).Text = Round(DATA(4, i, it), 2)

Next i

Call Find_Col

If r <> 0 Then

Call Calc_Q

Call Find_Row

Else

Приложение№2. Продолжение

MsgBox "Решение найдено!", vbExclamation, "Info"

Finish = True

End If

Else

MsgBox "Таблица не заполнена или заполнена не до конца!", vbExclamation, "Info"

End If

End Sub

Private Sub Find_Col() 'поиск главного столбца

Max = DATA(5, 1, it)

max_i = 1

For i = 2 To 10

If Option1.Value = True Then

If DATA(5, i, it) > 0 Then

If DATA(5, i, it) > Max Then

Max = DATA(5, i, it)

max_i = i

End If

End If

Else

If DATA(5, i, it) < 0 Then

If DATA(5, i, it) < Max Then

Max = DATA(5, i, it)

max_i = i

End If

End If

End If

Next i

If max_i = 1 Then

If Option1.Value = True Then

If DATA(4, 1, it) > 0 Then

Text1(max_i).BackColor = &HC0E0FF

Text2(max_i).BackColor = &HC0E0FF

Text3(max_i).BackColor = &HC0E0FF

r = max_i

Else

r = 0

End If

Else

If DATA(4, 1, it) < 0 Then

Text1(max_i).BackColor = &HC0E0FF

Text2(max_i).BackColor = &HC0E0FF

Text3(max_i).BackColor = &HC0E0FF

r = max_i

Else

r = 0

End If

End If

Else

Text1(max_i).BackColor = &HC0E0FF

Text2(max_i).BackColor = &HC0E0FF

Text3(max_i).BackColor = &HC0E0FF

r = max_i

End If

End Sub

Private Sub Calc_Q() 'расчёт столбца Q

For i = 1 To 3

If DATA(i, r, it) <> 0 Then

Q(i, it) = DATA(i, 0, it) / DATA(i, r, it)

Else

Q(i, it) = Empty

End If

Text_Q(i).Text = Q(i, it)

Next i

End Sub

Private Sub Celevaya() 'формула расчета целевой строки

For i = 0 To 10

DATA(4, i, it) = Cb(1, it) * DATA(1, i, it) + Cb(2, it) * DATA(2, i, it) + Cb(3, it) * DATA(3, i, it)

DATA(5, i, it) = DATA(4, i, it) - Text_UP(i)

Next i

End Sub

Private Sub Find_Row() 'поиск главной строки

Dim Plus(1 To 3) As Double

n = 0

For i = 1 To 3

If Q(i, it) > 0 Then

Plus(i) = Q(i, it)

n = n + 1

Min = Plus(i)

Min_i = i

Else

Plus(i) = 0

End If

Next i

If n <> 0 Then

For i = 1 To 3

If Plus(i) <> 0 Then

If Plus(i) < Min Then

Min = Q(i, it)

Min_i = i

End If

End If

Next i

s = Min_i

Select Case Min_i

Case 1

For i = 1 To 10

If r = i Then

Text1(i).BackColor = &H8080FF

Else

Text1(i).BackColor = &HC0E0FF

End If

Next i

Case 2

For i = 1 To 10

If r = i Then

Text2(i).BackColor = &H8080FF

Else

Text2(i).BackColor = &HC0E0FF

End If

Next i

Case 3

For i = 1 To 10

If r = i Then

Text3(i).BackColor = &H8080FF

Else

Text3(i).BackColor = &HC0E0FF

End If

Next i

End Select

Else

MsgBox "Решений нет, т.к Q отрицательны", vbExclamation, "Info"

Finish = True

End If

End Sub

Private Sub ClearTexts() `очистка чисел в текстовых полях

For i = 0 To 7

Text1(i).Text = ""

Text2(i).Text = ""

Text3(i).Text = ""

Text4(i).Text = ""

Text_UP(i).Text = ""

Next i

Text_UP(0).Text = 0

For i = 1 To 3

Text_Baz(i) = 0

Next i

Text_X(1) = "A8"

Text_X(2) = "A9"

Text_X(3) = "A10"

it = 0

ReDim DATA(1 To 5, 11, 0)

ReDim Q(1 To 3, 0)

ReDim Cb(1 To 3, 0)

ReDim X(1 To 3, 0)

Text1(8).Text = "1"

Text1(9).Text = "0"

Text1(10).Text = "0"

Text2(8).Text = "0"

Text2(9).Text = "1"

Text2(10).Text = "0"

Text3(8).Text = "0"

Text3(9).Text = "0"

Text3(10).Text = "1"

For i = 1 To 3

Cb(i, it) = 0

Q(i, it) = 0

Next i

For i = 0 To 10

Text4(i).Text = ""

Text5(i).Text = ""

Next i

X(1, it) = "A8"

X(2, it) = "A9"

X(3, it) = "A10"

Text_X(1).Text = "A8"

Text_X(2).Text = "A9"

Text_X(3).Text = "A10"

Text_Baz(1).Text = "0"

Text_Baz(2).Text = "0"

Text_Baz(3).Text = "0"

Text_Q(1).Text = "0"

Text_Q(2).Text = "0"

Text_Q(3).Text = "0"

r = 0

s = 0

Label1.Caption = "Таблица: " & it

Text0(0).Text = "X" & it

tables = 0

Call Clear

End Sub

Private Sub Command4_Click() `очистка

Command1.Enabled = True

Command3.Enabled = True

Call ClearTexts

Call vvod

End Sub

Private Sub Command6_Click() `значения по умолчанию

Command1.Enabled = True

Command3.Enabled = True

Call Nach_dan

Call zapret_vvoda

End Sub

Private Sub Command7_Click() `выход

a = MsgBox("Вы действительно хотите выйти?", vbYesNo, "Exit")

If a = vbYes Then

Unload Me

End If

End Sub

Private Sub Form_Activate()

Option2.SetFocus

Text_UP(0).Visible = False

Call zapret_vvoda

End Sub

Private Sub Form_Load()

Call Nach_dan

End Sub

Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer) `переход по полям Tab

If KeyAscii = vbKeyReturn Then

SendKeys "{tab}"

KeyAscii = 0

End If

End Sub

Private Sub Text2_KeyPress(Index As Integer, KeyAscii As Integer) `переход по полям Tab

If KeyAscii = vbKeyReturn Then

SendKeys "{tab}"

KeyAscii = 0

End If

End Sub

Private Sub Text3_KeyPress(Index As Integer, KeyAscii As Integer) `переход по полям Tab

If KeyAscii = vbKeyReturn Then

SendKeys "{tab}"

KeyAscii = 0

End If

End Sub

Private Sub Text_UP_KeyPress(Index As Integer, KeyAscii As Integer) `переход по полям Tab

If KeyAscii = vbKeyReturn Then

SendKeys "{tab}"

KeyAscii = 0

End If

End Sub

Private Function Proverka() As Boolean 'функция проверки пустых полей

Dim result As Boolean

result = True

For i = 0 To 10

If Text1(i).Text = "" Then result = False

If Text2(i).Text = "" Then result = False

If Text3(i).Text = "" Then result = False

If Text_UP(i).Text = "" Then result = False

Next i

Proverka = (result)

End Function

Private Sub Nach_dan() 'процедура возврата начальных данных и параметров

' redim Перераспределяет область памяти для хранения переменной массива.

it = 0

ReDim DATA(1 To 5, 11, 0)

ReDim Q(1 To 3, 0)

ReDim Cb(1 To 3, 0)

ReDim X(1 To 3, 0)

'i-line j-row s-строка r-столбец

Text_UP(0).Text = "0"

Text_UP(1).Text = "2"

Text_UP(2).Text = "2"

Text_UP(3).Text = "4"

Text_UP(4).Text = "3"

Text_UP(5).Text = "5"

Text_UP(6).Text = "8"

Text_UP(7).Text = "6"

Text_UP(8).Text = "0"

Text_UP(9).Text = "0"

Text_UP(10).Text = "0"

Text1(0).Text = "12"

Text1(1).Text = "3"

Text1(2).Text = "4"

Text1(3).Text = "-3"

Text1(4).Text = "1"

Text1(5).Text = "-1"

Text1(6).Text = "2"

Text1(7).Text = "-1"

Text1(8).Text = "1"

Text1(9).Text = "0"

Text1(10).Text = "0"

Text2(0).Text = "6"

Text2(1).Text = "1"

Text2(2).Text = "2"

Text2(3).Text = "5"

Text2(4).Text = "2"

Text2(5).Text = "10"

Text2(6).Text = "-1"

Text2(7).Text = "4"

Text2(8).Text = "0"

Text2(9).Text = "1"

Text2(10).Text = "0"

Text3(0).Text = "5"

Text3(1).Text = "2"

Text3(2).Text = "-1"

Text3(3).Text = "1"

Text3(4).Text = "-1"

Text3(5).Text = "2"

Text3(6).Text = "7"

Text3(7).Text = "-1"

Text3(8).Text = "0"

Text3(9).Text = "0"

Text3(10).Text = "1"

For i = 1 To 3

Cb(i, it) = 0

Q(i, it) = 0

Next i

For i = 0 To 10

Text4(i).Text = ""

Text5(i).Text = ""

Next i

X(1, it) = "A8"

X(2, it) = "A9"

X(3, it) = "A10"

Text_X(1).Text = "A8"

Text_X(2).Text = "A9"

Text_X(3).Text = "A10"

Text_Baz(1).Text = "0"

Text_Baz(2).Text = "0"

Text_Baz(3).Text = "0"

Text_Q(1).Text = "0"


Подобные документы

  • Анализ метода линейного программирования для решения оптимизационных управленческих задач. Графический метод решения задачи линейного программирования. Проверка оптимального решения в среде MS Excel с использованием программной надстройки "Поиск решения".

    курсовая работа [2,2 M], добавлен 29.05.2015

  • Алгоритм решения задач линейного программирования симплекс-методом. Построение математической модели задачи линейного программирования. Решение задачи линейного программирования в Excel. Нахождение прибыли и оптимального плана выпуска продукции.

    курсовая работа [1,1 M], добавлен 21.03.2012

  • Применение методов линейного программирования для решения оптимизационных задач. Основные понятия линейного программирования, свойства транспортной задачи и теоремы, применяемые для ее решения. Построение первичного опорного плана и системы потенциалов.

    курсовая работа [280,8 K], добавлен 17.11.2011

  • Критерий эффективности и функции в системе ограничений. Общая постановка задачи линейного программирования. Составление математической модели задачи. Алгоритмы решения задачи симплексным методом. Построение начального опорного решения методом Гаусса.

    курсовая работа [232,4 K], добавлен 01.06.2009

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

    методичка [366,8 K], добавлен 16.01.2010

  • Теоретическая основа линейного программирования. Задачи линейного программирования, методы решения. Анализ оптимального решения. Решение одноиндексной задачи линейного программирования. Постановка задачи и ввод данных. Построение модели и этапы решения.

    курсовая работа [132,0 K], добавлен 09.12.2008

  • Характеристика параметрических методов решения задач линейного программирования: методы внутренней и внешней точки, комбинированные методы. Алгоритм метода барьерных поверхностей и штрафных функций, применяемых для решения задач большой размерности.

    контрольная работа [59,8 K], добавлен 30.10.2014

  • Изучение и укрепление на практике всех моментов графического метода решения задач линейного программирования о производстве журналов "Автомеханик" и "Инструмент". Построение математической модели. Решение задачи с помощью электронной таблицы Excel.

    курсовая работа [663,9 K], добавлен 10.06.2014

  • Методы определения оптимального плана производства (приобретения) продукции с учетом ограниченного обеспечения ресурсами различного вида. Технология поиска оптимального решения задач линейного программирования (ЗЛП) с помощью итоговой симплекс-таблицы.

    лабораторная работа [42,8 K], добавлен 11.03.2011

  • Решение задачи линейного программирования симплекс-методом: постановка задачи, построение экономико-математической модели. Решение транспортной задачи методом потенциалов: построение исходного опорного плана, определение его оптимального значения.

    контрольная работа [118,5 K], добавлен 11.04.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.