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

 

Содержание


Введение

.Основные понятия

.Сравнительный анализ прямого перебора и половинного деления

.1Метод прямого перебора

.2Ручной счёт

.3Метод половинного деления

.4Шаги исследования

.5Ручной счёт

.Окно работающей программы

.Вывод

.Блок-схема программы

.Код программы

Заключение

Список использованной литературы



Введение


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

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



1. Основные понятия


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

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

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

Решение задач исследования операций предполагает выполнение следующих основных этапов:

)постановки задачи и выбора критерия оптимизации;

)выявления основных особенностей, взаимосвязей и количественных закономерностей исследуемой системы;

)построения математической модели системы (процесса);

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

Основные методы исследования математической модели:

)аналитический;

)исследование системы (процесса) с помощью численных методов и ЭВМ;

)исследование системы (процесса) методами случайного поиска.

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

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

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

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

К методам случайного поиска (статическим методам) относятся ненаправленный случайный поиск (метод Монте-Карло), направленный случайный поиск без самообучения (поиск с парными пробами, линейный поиск, нелинейный поиск и т. д.), направленный поиск с самообучением.

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

)получение желаемого эффекта при минимальных затратах для его получения;

)получение максимального эффекта при использовании имеющихся ресурсов.

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

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

Критериальный выбор характерен для случаев, когда определён весь перечень критериев и есть вся необходимая информация по этим критериям по технической системе. На основе этой информации выбирается требуемый вариант Т.С. Это самый достоверный вид выбора, но для сбора требуемой информации требуется достаточно большой период времени и ресурсов.

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

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

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

Случайный выбор (метод проб и ошибок). Используется при полном отсутствии информации о проектируемой Т.С. и решение принимается случайным образом.



2. Сравнительный анализ прямого перебора и половинного деления

половинный деление программа схема

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


2.1 Метод прямого перебора


Метод перебора (метод равномерного поиска) - простейший из методов поиска значений действительно-значимых функций <#"justify">1)Возможность нахождения глобального экстремума;

)Независимость алгоритма от вида и характеристики целевой функции;

)Простота алгоритма.


2.2 Ручной счёт

(x)=-x2+4x+8- целевая функция;

[1 ;4] - интервал исследования;

?x=1 - точность;0=2(x0) = -4+8+8=12;

)x1=3;=f (x)= 12;1=f(x)=11;>y1;

2)x2=2+2*1=4;=f(x)=12;2=f(x2)=8;>y2;

3)x3=2+3*1=5;=f(x)=12;3=f(x3)=8;>y3.

хopt=2, а ymax=12


2.3 Метод половинного деления


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

)Выбираем наименьший интервал изменения управляемого параметра ?x.

)Исходный интервал делим пополам.

)Слева и справа от точки деления вычисляем х1 и х2 по формулам:


,

.


где b и a конец и начало исследования интервала.

)Вычисляем значение целевой функции в т. х1 и х2.

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

)На оставшемся интервале пункты 2-5 повторяем до тех пор, пока .

Достоинства:

Простота и эффективность при нахождении экстремума.

Недостатки:

Ищет только локальный экстремум.

Ручной счёт(x)=-x2+4x+8 - целевая функция;

[1 ;4] - интервал исследования;

?x=1 - точность;

)x0=(1+4)/2=2>?x1=2+0.5=3.52=2-0.5=1.5(x1)=-12.25+4*3.5+8=9.75(x2)=-2.25+4*1.5+8=11.75(x1)< f(x2) ->(1.5…4) - новая граница

)x0=(1.5+4)/2=2.751=2.75+0.5=3.25

x2=2.75-0.5=2.25(x1)=-10.56+13+8=10.44(x2)=-5.0625+9+8=11.94(x1)< f(x2)->(3.25…4)- новая граница

)x0=(2.25+4)/2=3.6251=2.25+0.5=2.25

x2=2.25-0.5=1.75(x1)=-7.56+11+8=11.44(x2)=-3.0625+7+8=11.93(x1)< f(x2)->(2.25…4)- новая граница

И так далее, пока новый интервал исследования не будет меньше или ровняться Х.opt=2, ymax=11,93



3. Окно работающей программы


При открытии программы появляется окно (см. рис.1)











При запуске программы окно имеет вид (см. рис. 2):











Вводятся необходимые значения (см. рис.3).





Результат счёта (см. рис. 4).












4. Вывод


Обе программы вполне эффективны при поиске экстремума.

Точность:

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

Скорость:

В методе прямого перебора эффективность поиска прямо пропорциональна числу расчетов, в методе дихотомии эффективность возрастает с ростом количества шагов экспоненциально. Таким образом, для первого метода количество шагов равно 301, а для второго - 46.

Надёжность:

Оба метода являются достаточно надёжными при поиске экстремума функции.



5. Блок-схема программы



)Мы открываем приложение.

)Задаём переменные, которые берут участие во всей программе.

)Задаётся функция.

)Задаётся первый алгоритм, и ищется по нему экстремум.

)Задаётся второй алгоритм для поиска экстремума.

)Задаются названия столбцов и ячеек.

)Выводятся на экран результаты счёта.

)Конец программы.



6. Код программы

Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Grids, StdCtrls, Buttons;= class(TForm): TStringGrid;: TEdit;: TEdit;: TLabel;: TBitBtn;: TEdit;: TLabel;FormCreate(Sender: TObject);BitBtn1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm1;, k2:integer;

{$R *.dfm}f(x:real):real;:=-(x*x)+4*x+8;;MaxMin(a,b,e:real):real;, xi:real;,i:integer;:=0;:=round((b-a)/e);:=a;i:=0 to k do:=x0+i*e;f(x0)<f(xi) then:=xi;:=k1+1;;:=x0;;Dihotomiya(a,b,e:real):real;, x2, a1, b1:real;:=a;:=b;:=0;(e<abs(b1-a1)) do:=abs(b1+a1)/2-(e/2);:=abs(b1+a1)/2+(e/2);f(x1)<f(x2) then:=x1f(x1)>f(x2) then:=x2f(x1)=f(x2) then:=x1;:=x2;;:=k2+1;;:=abs(a1+b1)/2;;TForm1.FormCreate(Sender: TObject);ingGrid1.Cells[0,0]:='ìåòîä';.Cells[0,1]:='ïðÿìîãî ïåðåáîðà';.Cells[0,2]:='Äèõîòîìèè';.Cells[1,0]:='Õ îïò';.Cells[2,0]:='Ó ìàêñ';.Cells[3,0]:='Äåëüòà õ';.Cells[4,0]:='Ê';

end;TForm1.BitBtn1Click(Sender: TObject);, x2,a,b,e: real;:=strToFloat(Edit1.Text);:=strToFloat(Edit2.Text);:=strToFloat(Edit3.Text);:=MaxMin(a, b, e);:=Dihotomiya(a, b, e);.Cells[1,1]:=FloatTostr(x1);.Cells[2,1]:=FloatTostr(f(x1));.Cells[3,1]:=FloatTostr(e);.Cells[4,1]:=FloatTostr(k1);.Cells[3,2]:=FloatTostr(e);.Cells[1,2]:=FloatTostr(x2);.Cells[2,2]:=FloatTostr(f(x2));.Cells[4,2]:=FloatTostr(k2);;

end.



Заключение


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

Оба алгоритма имеют свои плюсы и минусы, но выбор алгоритма следует выбирать, выходя из имеющихся данных



Список использованной литературы


1.Кудрявцев Е.М. Исследование операций в задачах, алгоритмах и программах. - М.: Радио и связь, 1984. - 184 с.

.Гилл Ф., Мюррей У., Райт М. Практическая оптимизация. Пер. с англ. - М.: Мир, 1985.-214с.


Содержание Введение .Основные понятия .Сравнительный анализ прямого перебора и половинного деления .1Метод прямого перебора .2Ручной счёт

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ