Оптимальные алгоритмы. Библиотека программиста все, что необходимо начинающему и опытному программисту

Оптимальные алгоритмы. Библиотека программиста все, что необходимо начинающему и опытному программисту

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

В ответ вы должны спросить: «А для какого случая выбирается оптимальная по времени сортировка?» И лишь тогда, когда будут озвучены условия, можно смело перебирать имеющиеся варианты.

Существуют:

  • алгоритмы сортировки O(n 2) вроде сортировки вставками, пузырьком и выбором, которые используются в особых случаях;
  • быстрая сортировка (общего назначения): в среднем O(n log n) обменов, но худшее время – O(n 2) , если массив уже отсортирован, или элементы равны;
  • алгоритмы O(n log n) , такие как сортировка слиянием и кучей (пирамидальная сортировка), которые также являются хорошими алгоритмами сортировки общего назначения;
  • O(n) или линейные алгоритмы сортировки (выбор, выбор с обменом, выбор с подсчетом) для списков целых чисел, которые могут быть подходящими в зависимости от характера целых чисел в ваших списках.

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

Оптимальность алгоритма тесно зависит от типа списков/массивов, которые вы собираетесь сортировать, и даже от модели ЭВМ. Чем больше информации в вашем распоряжении, тем более точным будет выбор. При очень слабых предположениях о факторах оптимальной сложностью худшего случая может быть О(n!) .

Данный ответ касается только сложностей. Фактическое время выполнения алгоритмов зависит от огромного количества факторов.

Тестирование

Итак, какая же сортировка самая быстрая?

Визуализация

Неплохая визуализация сортировок продемонстрирована в этом видео:

Кажется, что она отвечает на вопрос о том, какая сортировка самая быстрая, но не стоит забывать, что на скорость влияет множество факторов, и это лишь один из продемонстрированных вариантов.

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

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

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

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

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

Алгоритмы замещения страниц. FIFO. Вторая попытка. Алгоритм LRU.

Алгоритмы замещения страниц. Оптимальный алгоритм. Алгоритм NRU.

Алгоритмы замещения страниц

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

Оптимальный алгоритм

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

NRU (Not Recently Used) алгоритм (не использовавшаяся в последнее время страница)

В табличной записи для каждой страницы присутствуют 2 бита:

Бит R (бит обращения) устанавливается в единицу при каждом обращении к странице. Возможен сброс этого бита, например каждые n тиков таймера, чтобы отличить страницы, к которым давно не было обращения;

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

При страничном прерывании, на основании значений битов R и M, ОС делит все страницы на 4 класса. Для удаления случайным образом выбирается страница из низшего класса. Алгоритм легок в реализации и может дать вполне достаточный результат.

FIFO алгоритм

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

Алгоритм "вторая попытка"

Является модификацией алгоритма FIFO. При страничном прерывании, у первой страницы в списке изучается бит R. Если он равен единице, страница помещается в конец списка, а бит R сбрасывается, и проверяется следующая страница. Данный алгоритм ищет в списке страницу, к которой не было обращений за последние n тиков таймера. Если происходили ссылки на все страницы, алгоритм превращается в обычный FIFO.

Алгоритм "часы"

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


Алгоритм LRU (Last Recently Used), страница, не использовавшаяся больше всего

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

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

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

Предположим, что все искажения в канале строго детерминированы и случайным является только гауссовский аддитивный шум n(t), который вначале полагаем белым, со спектральной плотностью N 0 . Это значит, что при передаче сигнала u i (t) (символа b i (i = 0,1,...,m-1) приходящий сигнал можно описать моделью (3.38):

z(t) = s i (t) + n(t), (0≤t≤T), (6.17)

где все s i (t) = ku i (t-τ) (i = 0, 1,..., m-1) известны. Неизвестны лишь реализация помехи и индекс i действительно переданного сигнала, который и должна определить решающая схема.

Будем также считать, что все s i (t) являются финитными сигналами, длительность которых Т. Это имеет место, если передаваемые сигналы u i (t) финитны и имеют одинаковую длительность (система синхронная), а в канале нет ни многолучевого распространения, ни линейных искажений, вызывающих увеличение длительности сигнала (либо они скорректированы).

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

Определим в этих условиях алгоритм работы оптимального (т. е. основанного на правиле максимального правдоподобия) демодулятора, анализирующего сигнал на тактовом интервале 0-Т. Для этого необходимо найти отношения правдоподобия для всех m возможных сигналов относительно нулевой гипотезы (s(t)=0; z(t) = n(t)).

Задача затрудняется тем, что ширина спектра сигнала бесконечна (поскольку он финитный), а поэтому пространство сигналов бесконечномерное L 2 (Т). Для таких сигналов (или бесконечномерных векторов), как отмечалось, не существует плотности вероятностей. Однако существуют "-мерные плотности вероятностей для любых n сечений сигнала (см. § 2.1).

Заменим вначале белый шум квазибелым, имеющим ту же одностороннюю спектральную плотность мощности N 0 , но только в некоторой полосе частот F = n/2T, где n>>1. Рассмотрим вначале дополнительную гипотезу, т. е. будем считать что Z(t) - шум. Возьмем на тактовом интервале n равноотстоящих сечений через Δt = 1/2F = T/n. Отсчеты Z 1 ,...., Z n в этих сечениях для квазибелого гауссовского шума независимы в соответствии с (2.49). Поэтому n-мерная плотность вероятностей для взятых отсчетов

где σ 2 = N 0 F - дисперсия (мощность) квазибелого шума.

При гипотезе, что передавался символ b i , согласно (6.17) n(t) = z(t) - s i (t). Следовательно, условная n-мерная плотность вероятности сечений Z(t) определится такой же формулой, как и (6.18), если z(t k) заменить разностью z(t k)-s i (t k), представляющей при этой гипотезе шум:

Отношение правдоподобия для сигнала s i (относительно дополнительной гипотезы), вычисленное для n сечений:

Заменим дисперсию σ 2 ее выражением: σ 2 = N 0 F = N 0 /(2Δt). Тогда

По правилу максимума правдоподобия в случае квазибелого шума решающая схема должна выбирать значение i, обеспечивающее максимум Λ i [n] . Вместо максимума Λ i можно отыскивать максимум его логарифма:

Второй член в (6.22) не зависит от t и его можно при сравнении гипотез не учитывать. Тогда правило решения о том, что передавался символ b i , согласно (6.10) можно выразить системой неравенств

Вернемся теперь к исходной задаче для белого шума. Для этого будем расширять полосу F, тогда число сечений п стремится к бесконечности, а Δt - к нулю. Суммы в (6.22) обратятся в интегралы, и травило решения определится так:

Выражение (6.24) определяет те операции (алгоритм работы), которые должен совершать оптимальный приемник над входным колебанием z(t).

На рис. 6.2 для m = 2 показана структурная схема приемного устройства, работающего в соответствии с алгоритмом (6.24).

Здесь "-" - вычитающие устройства; Γ 0 , Γ 1 - генераторы опорных сигналов s 0 (t), s 1 (t); "KB" - квадраторы; ∫ - интеграторы; РУ - решающее устройство, определяющее в моменты времени, кратные Т (при замыкании ключей), номер ветви с минимальным сигналом.

При m>2 в схеме рис. 6.2 и других нижеприведенных схемах растет соответственно число ветвей обработки сигнала, попадающих на РУ.

В пространстве Гильберта


определяет норму разности векторов z и s или расстояние между ними * . Поэтому алгоритм (6.24) можно записать в виде

||z - s i ||

и придать ему простую геометрическую интерпретацию: оптимальный демодулятор должен регистрировать тот из сигналов s i (t) (соответствующий символу b i), который "ближе" к принятому колебанию z(t). В качестве примера на рис. 6.3 показано оптимальное разбиение двумерного пространства принимаемых сигналов z(t) при передаче сигналов s 1 (t) и s 0 (t). Области принятия решения в пользу символов 0 или 1 расположены по обе стороны от прямой 0-0, перпендикулярной отрезку, соединяющему точки сигналов и делящих его пополам.

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

Раскрыв скобки под знаком интеграла и сократив в обеих частях неравенств (6.24) слагаемое

приходим к алгоритму приема:

где E j - энергия ожидаемого сигнала s j (t) :


Для двоичной системы алгоритм (6.25) сводится к проверке одного неравенства

Устройство, непосредственно вычисляющее скалярное произведение


называют активным фильтром, или коррелятором, поэтому приемник, реализующий алгоритм (6.25), называют корреляционным.

* (Для n-мерного пространства Евклида эта норма равна )


На рис. 6.4 показана структурная схема приемного устройства, работающего в соответствии с (6.27). Здесь блоки × - перемножители; Γ 0 , Γ 1 - генераторы опорных сигналов s 0 (t) s 1 (t); ∫ - интеграторы; "-" - вычитающие устройства; РУ - решающее устройство, определяющее в моменты времени, кратные Т (при замыкании ключа), i = 0, 1 - номер ветви с максимальным сигналом.

Если сигналы u i (t) выбраны таким образом, что все их реализации (а следовательно, и все реализации s i (t) имеют одинаковые энергии (E i = const), алгоритм приема (6.25) (и соответственно его реализация) упрощается (отпадает необходимость в вычитающих устройствах) и принимает вид

Из (6.29) видно, что правило решения не изменится, если сигнал z(t), поступающий на вход демодулятора, умножить на любое число. Поэтому система, в которой все реализации сигнала имеют равную энергию, отличается тем, что оптимальный алгоритм приема в ней не требует знания "масштаба" приходящего сигнала или, другими словами, знания коэффициента передачи k канала. Эта важная особенность обусловила широкое распространение систем сигналов с равной энергией, которые обычно называют системами с активной паузой. Это особенно важно для каналов с замираниями, в которых коэффициент передачи флуктуирует (см. §6.7).

Заметим, что для двоичной системы неравенство (6.27) можно представить в более простом виде:


где s Δ (0 = s 1 (t) - s 0 (t) - разностный сигнал; λ = 0,5(E 1 -Е 0) - пороговый уровень. Для системы с активной паузой Х=0, что значительно облегчает реализацию оптимальной схемы.

При выполнении неравенства (6.30) регистрируется символ 1, в противном случае - 0. Для реализации (6.30) в схеме рис. 6.4 требуется лишь одна ветвь.

На рис. 6.5,а показана схема, реализующая алгоритм (6.30) для двоичной системы передачи однополярными импульсами (с пассивной паузой): s 1 (t) = a, s 0 (t) = 0. При этих сигналах s Δ (t) = s 1 (t) = a, Е 1 = а 2 Т, E 0 = 0, λ = а 2 T/2 и (6.30) примет следующий, вид:


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

В двоичной AM s 1 (t) = acos(ω 0 t + φ), s 0 (t) = 0. Все входящие сюда постоянные (а, ω 0 , φ) в этом параграфе полагаем известными. Поскольку здесь s Δ (t) = s 1 (t), Е 1 = а 2 Т/2 и E 0 = 0, правило (6.30) запишется так:


Оно реализуется схемой рис. 6.5,6, которая отличается от рис. 6.5,a блоком перемножения приходящего сигнала с опорным сигналом cos(ω 0 t + φ). Пороговый уровень λ̇ в этом случае равен aT/(4RC).

При двоичной ФМ системе s 0 (t) = a cos(tω 0 + φ), s 0 (t) = а cos (tω 0 + φ + π) = -s 1 (t). Это - система с активной паузой, и поэтому в (6.30) λ = 0. Легко убедиться, что правило решения сводится при этом к следующему:


и реализуется той же схемой рис. 6.5,6 при λ̇ = 0. В этом случае РУ играет роль дискриминатора полярностей.

Рис. 6.6. Оптимальный демодулятор с обеляющим фильтром при гауссовском "окрашенном" шуме

Рассмотрим вкратце случай, когда гауссовский шум в канале не белый и не квазибелый, а "окрашенный", т. е. имеет неравномерную плотность мощности G(f) в полосе спектра сигнала. Пропустим приходящую на вход демодулятора сумму сигнала и шума через фильтр с передаточной функцией k(i2πf), такой чтобы в полосе спектра сигнала произведение G(f) |k(i2πf)| 2 было постоянной величиной N 0 . Из всех возможных фильтров с k(i2πf), удовлетворяющих этому условию и различающихся только фазо-частотной характеристикой, можно выбрать минимально фазовый, который является обратимым. Очевидно, что на выходе фильтра шум окажется квазибелым: G вых (f)=N 0 . Поэтому такой фильтр называется обеляющим.

Сигнал s i (t) после прохождения через обеляющий фильтр превратится в некоторый другой сигнал, который обозначим s" i (t). Вид его можно определить, зная s i (t) и k(i2πf). Если теперь подать колебания с выхода обеляющего фильтра на демодулятор, являющийся оптимальным для приема сигналов s" i (t) (i = 0, 1, ..., m-1), то получим схему рис. 6.6, которая, очевидно, является оптимальной для сигналов s i (t) при окрашенном шуме.

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

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

Оценка сложности алгоритмов

6. Оптимизация алгоритмов

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

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

Во-вторых, не совсем ясно, что такое сложность задачи. Ее можно было бы определить как минимальную из сложностей алгоритмов, решающих эту задачу. Но существует ли алгоритм минимальной сложности (как убедиться, что найденный алгоритм действительно минимальный или, напротив, не минимальный)? Есть ли к чему стремиться? И насколько труден поиск этого минимума? Эти вопросы связаны с нижней оценкой сложности алгоритмов (а не верхней, как в предыдущих шагах) (5, стр. 89-92).

Можно ли для рассматриваемой задачи доказать, что никакой решающий ее алгоритм не может быть проще этой нижней оценки? Возьмем известную задачу перемножения квадратных матриц. Приведен алгоритм сложности Т(n) = 3n3 + n2. (8, стр. 199-203) Вероятно, это не лучший алгоритм, но какова оценка снизу? Результирующая матрица имеет n2 элементов. Для вычисления любого элемента нужна хотя бы одна операция однопроцессорной машины - два элемента за одну операцию найти нельзя. Для минимального алгоритма мы получаем неравенства n2 <= T, min(n) <= 3n3+n2 . Вряд ли n2 - хорошая нижняя оценка, но уже известно, что n3 нижней оценкой не является, так как найдены более быстрые алгоритмы (в частности, алгоритм Штрассена). (8, стр. 211)

Существует несколько самостоятельных аспектов оптимизации программ, из которых выделим два:

Оптимизация, связанная с выбором метода построения алгоритма;

Оптимизация, связанная с выбором методов представления данных в программе.

Первый вид оптимизации имеет глобальный характер и ведет к уменьшению порядка функции сложности - например, замена алгоритма с Т(V) = O(FS) на алгоритм с T(V) = O(V4). Он зависит от того, как задача разбивается на подзадачи, насколько это разбиение свойственно самой задаче или является только искусственным приемом. Общим руководящим подходом здесь может быть последовательность действий, обратная анализу алгоритмов. При анализе по рекурсивному алгоритму строится уравнение, которое затем решается. При оптимизации реализуется цепочка:

Формула, задающая желаемую сложность ->

Соответствующее уравнение (одно из возможных) ->

Метод разбиения задачи на подзадачи.

Второй вид оптимизации, не меняя структуры программы в целом, ведет к экономии памяти и/или упрощению работы со структурами данных, повышению эффективности вспомогательных процедур, обеспечивающих "интерфейс" между прикладным уровнем (на котором мыслим в терминах высокоуровневых объектов - графов, матриц, текстов и т. д.) и машинным уровнем, поддерживающим простейшие типы данных (числа, символы, указатели). Результатом этого обычно является уменьшение коэффициентов при некоторых слагаемых в функции сложности (при удачной оптимизации - при наиболее значимом слагаемом), но порядок функции сложности остается тем же. (7, стр. 204)

Оба вида оптимизации дополняют друг друга и могут применяться совместно.

Алгоритмы решения задач выбора. Алгоритм отжига

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

Анализ и синтез на базе комплекса технических средств гипотетической микропроцессорной системы оптимального управления технологическим процессом и оборудованием технического объекта парогенератор в условиях стохастической неопределенности

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

Компьютерное моделирование беспроводных AD-HOC сетей для целей расчета времени связи мобильных абонентов

Оптимизация - это процесс изменения программы по определенным критериям с целью повышения ее качества при сохранении смысла исходной программы. Для сокращения объёма кода программы он разбивается на части - подпрограммы...

Моделирование и оптимизация автомобильных дорог

Введем следующие обозначения: Xi - остаточные средства на начало iго этапа; Uj - количество средств, которые решено выделить i - предприятию; Пi - прибыль, получаемая этим предприятием...

Моделирование системы автоматического регулирования программным и имитационным методом

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

Оптимизация плана производства и поставок с использованием системы планирования IBM ILOG Plant PowerOps

IBM ILOG Plant PowerOps состоит из четырех модулей: планирования производства, определения размера партий, составления детальных графиков и закрепления за спросом. Каждый из модулей решает специфические задачи в процессе оптимизации...

Особенности работы в программном пакете MicroCAP-7

Параметрическая оптимизация выполняется в программе МС7 методом Пауэлла (Powell) в любом из видов анализа: анализ переходных процессов, малосигнальный АС-анализ и расчет характеристик на постоянном токе DC...

Особенности создания текстового контента для сайта ННГУ им. Н.И. Лобачевского

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

Проектирование и моделирование электрических схем в графической системе AutoCAD и пакете программ OrCAD 9.2

электрический цепь кинематический магнитофон Далее, мы добавляем параметры оптимизации в схему, устанавливая текущие «Current Value», начальные «Initial Value» значения компонентов, а так же допуск «Tolerance»...

Разработка конструкции двухместного компьютерного стола

Кроме возможности 3d-конструирования изделий, создания чертежей и спецификаций на детали, а также расчета материалов, необходимых для изготовления изделия, “bCAD Мебельщик” позволяет производить экономичный...

Разработка модели агентства недвижимости в соответствии со стандартом IDEF0

Данная модель относится к типу «to be», то есть модель построена по принципу «так как должно быть». В процессе создания модели мною были исправлены некоторые недостатки...

Разработка приложения для выбора покупки пары станков

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

Разработка программы "Определение оптимального срока замены оборудования"

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

Системный анализ информационной системы управления персоналом на предприятии

Создание виртуального 3D тура из серии виртуальных фотопанорам

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



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows