23651

Поиск пути в порождаемом пространстве состояний (на примере игры «восьмёрка»)

Лабораторная работа

Информатика, кибернетика и программирование

1й список исходное состояние 2й список состояние после одноходовой допустимой перестановки. попадания в пройденные вершины графа необходимо вести список пройденных состояний. Здесь Yсписок характеризующий начальное состояние; Xs список характеризующий заданное конечное состояние. Третий аргумент предиката trans1 список пройденных состояний список списков.

Русский

2013-08-05

97.5 KB

6 чел.

Лабораторная работа № 3

Поиск пути в порождаемом пространстве состояний (на примере игры «восьмёрка»)

Задание №3.1. Продукционная модель поиска с использованием оценочной функции Хэмминга.

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

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

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

Однако использование оценочной функции не всегда приводит к решению. Это можно объяснить двумя причинами: 1) ограниченностью стековой памяти Пролога (это ограничение снимает Visual Prolog); 2) сегментацией пространства поиска на непересекающиеся подпространства, вследствие чего выбор исходного и конечного состояний в разных подпространствах никогда не приведет к решению.

Обратимся к известной игре “восьмёрка“, которая может служить хорошей моделью задач с большим поисковым пространством (число возможных состояний - 9!). На игровом поле имеется 9 фиксированных позиций Р1...Р9, пронумерованных слева направо построчно. На этом поле располагаются в произвольном порядке восемь фишек, пронумерованных цифрами от 1 до 8. Одна позиция свободна. Число, которым помечена данная фишка, является содержимым позиции, в которой эта фишка располагается. Состояние задачи можно представить в виде списка фишек, располагающихся в позициях Р1...Р9. В игре задаются начальное и конечное состояния задачи, например:

Начальное состояние:

         

4

5

7

2

1

3

8

6

                                     

        Или в виде списка: [4,0,5,7,2,1,3,8,6]

        Конечное состояние:

3

4

8

7

1

5

2

6

                    

        

Или в виде списка: [3,4,8,7,1,5,0,2,6]

 

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

  Правила игры определяются допустимыми перемещениями. Если пустая позиция находится в левом верхнем углу, то имеется всего 2 допустимых варианта перемещений. Для изображённого на верхнем рисунке  начального состояния возможных перемещений три. Типичных положений пустой позиции всего три: в одном из углов, в середине одной из боковых сторон и в центре. Число возможных ходов в каждом из этих положений равно соответственно 2, 3 и 4. Не сложно подсчитать, что для 9 положений пустой позиции общее число допустимых ходов составит 24.

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

ptrans ([P1,0,P3,P4,P5,P6,P7,P8,P9],   [0,P1,P3,P4,P5,P6,P7,P8,P9]).

  ptrans ([P1,0,P3,P4,P5,P6,P7,P8,P9],   [P1,P3,0,P4,P5,P6,P7,P8,P9]).

  ptrans ([P1,0,P3,P4,P5,P6,P7,P8,P9],   [P1,P5,P3,P4,0,P6,P7,P8,P9]).

   Предикат ptrans имеет два аргумента, каждый из которых является списком. 1-й список - исходное состояние, 2-й список - состояние после одноходовой допустимой перестановки. Общее число предикатов ptrans  равно 24. Решение задачи сводится к поиску пути в неориентированном графе, где каждая его вершина является состоянием задачи, характеризуемым списком значений переменных P1,P2, ... .  Состояние должно трансформироваться от начального к целевому, т.е. поиск является прямым.   Для исключения повторения позиций (т.е. попадания в пройденные вершины графа) необходимо вести список пройденных состояний. Для задания начального состояния этого списка можно воспользоваться следующим переопределением цели в правиле самого верхнего уровня trans:

trans(Y, Xs, B): -  trans1(Y, Xs, [Y], B), !, fprintf(B).

trans1(Xs, Xs, _, [Xs]).

Здесь Y-список, характеризующий начальное состояние; Xs - список, характеризующий заданное конечное состояние. Третий аргумент предиката trans1 - список пройденных состояний (список списков). Как видно, вначале этот список содержит только один элемент - список Y, описывающий начальное состояние  задачи. B - искомый путь из Y в Xs (список списков пошаговой трансформации позиции) Для проверки членства списка в списке списков подходит уже использовавшееся нами правило member с той лишь разницей, что первый его аргумент надо описать как список, а второй - как список списков.

  Для реализации поиска  в глубину можно использовать в качестве основы программы правило рекурсии по типу программы поиска пути в неориентированном графе (см. Задание  № 1.3 из Лаб. раб. № 1). Правило будет состоять из  24 предложений, каждое из которых можно интерпретировать как правило продукции. В левой его части стоит образец с определенным положением пустой позиции, а в правой – даны варианты допустимых перестановок.  Предложения можно разбить на 9 групп по положению пустой позиции. Число предложений в группе будет от 2-х до 4-х, в зависимости от положения пустой позиции. Приведём 2 предложения одной группы для пустой позиции в левом верхнем углу:

 

trans1([0,P2,P3,P4,P5,P6,P7,P8,P9], Xs, Vis,  [[0,P2,P3,P4,P5,P6,P7,P8,P9]|P]):-

                 ptrans([0,P2,P3,P4,P5,P6,P7,P8,P9],  [P4,P2,P3,0,P5,P6,P7,P8,P9]),

                 ham([P4,P2,P3,0,P5,P6,P7,P8,P9], Xs, H1),

                 ptrans([0,P2,P3,P4,P5,P6,P7,P8,P9],  [P2,0,P3,P4,P5,P6,P7,P8,P9]),

                 ham([P2,0,P3,P4,P5,P6,P7,P8,P9], Xs, H2),   H1<=H2,

                 not(member([P4,P2,P3,0,P5,P6,P7,P8,P9], Vis)),

trans1([P4,P2,P3,0,P5,P6,P7,P8,P9], Xs,  [[P4,P2,P3,0,P5,P6,P7,P8,P9] | Vis], P).

trans1([0,P2,P3,P4,P5,P6,P7,P8,P9], Xs, Vis,  [[0,P2,P3,P4,P5,P6,P7,P8,P9] | P]):-

                 ptrans([0,P2,P3,P4,P5,P6,P7,P8,P9],   [P2,0,P3,P4,P5,P6,P7,P8,P9])

                 not(member([P2,0,P3,P4,P5,P6,P7,P8,P9], Vis)),      

trans1([P2,0,P3,P4,P5,P6,P7,P8,P9], Xs,  [[P2,0,P3,P4,P5,P6,P7,P8,P9] | Vis], P).

    В отличие от классической продукционной системы, в которой очередное правило активизируется текущими данными, здесь каждое из 24-х правил (предложений) само может вызывать следующее рекурсивно по совпадению в нем пустой позиции после выполненной перестановки. В результате система работает подобно продукционной. Интерпретатор Пролога просматривает при каждом шаге все предложения сверху вниз до совпадения положения пустой позиции в списке текущего состоянии задачи и в одном из предложений правила trans1. При таком совпадении предложение считается выбранным и происходит означивание его переменных Р1...Р9. Допустимые перестановки задаются предложениями ptrans. В данном примере в первом предложении указаны 2 возможные перестановки ptrans. Как выбрать лучший ход ptrans  из двух возможных? Для этого служит оценочная функция  ham, в качестве которой взято так называемое расстояние Хэмминга - число несовпадений элементов в попарно сравниваемых списках позиций. C помощью правил ptrans имитируются, в данном случае, два пробных хода и для каждого из них вычисляется значение функции Хэмминга, возвращаемые как H1 и H2. Первый аргумент в функции ham - список, который образовался бы  после данного хода. Второй список - целевая  конечная позиция Xs. Должен выбираться тот ход, для которого расстояние Хэмминга (N - число несовпадающих элементов в сопоставляемых списках) выражается меньшим числом. При достижении цели  N = 0. Правило для вычисления расстояния Хэмминга :

ham([ ], [ ], 0).

ham([X|Xs], [X|Y], N): -  ham(Xs, Ys, N), !.

ham([_|Xs], [_|Ys], N): -  ham(Xs, Ys, N1), N = N1 + 1.

Первые два аргумента ham - сопоставляемые списки, третий - возвращаемое значение функции Хэмминга N. Первое предложение - очевидное условие окончания рекурсии: если списки пусты, т.е. целиком рассмотрены, то N=0. Второе предложение относится к случаю, когда совпадают головные элементы в списках. В этом случае они отделяются от своих списков и идёт рекурсивный вызов правила ham с хвостовыми частями исходных списков, а значение N не меняется. Третье предложение  обрабатывает случай несовпадения очередных головных элементов списков. Здесь головные элементы также отделяются от своих хвостовых частей и идет рекурсивное обращение к ham с хвостовыми списками, но с новым значением функции ham (третьего аргумента N1), связанного с N рекурсивным  соотношением N = N1  + 1. Разворачивание рекурсии идёт до тех пор, пока сопоставляемые списки не станут пустыми. При возврате рекурсии переменные N и N1 получат свои значения на каждом шаге рекурсии в обратном  порядке, тем самым будет найдено искомое значение N. Фактически переменная N получит значение числа обращений к 3-ему предложению, которое равно числу несовпадений.

         Итак, значение функции Хэмминга может быть найдено для двух (в данном примере) предполагаемых ходов. В первом предложении trans1 предусмотрен случай, когда H1<=H2, то есть первый ход ptrans лучше. Далее с помощью правила member проверяется условие, что данная перестановка не входит в список пройденных состояний Vis, и если это условие выполнено, то предикат trans1 выполняет выбранную перестановку, добавляет её в список Vis и рекурсивно обращается к одному из правил trans1 с новым положением пустой позиции (в данном случае пустой станет четвёртая позиция).  Если условие H1<=H2 не выполнено , то интерпретатор Пролога автоматически обращается к следующему предложению  trans1,которое без дополнительных проверок выполняет единственно возможный альтернативный ход.

Условие окончания рекурсии в правиле высшего уровня (всё правило  приводилось выше):

        trans1 (Xs, Xs, _ , [Xs]).

        Оно означает, что если текущее состояние (первый аргумент) совпало с конечным Xs , то путь равен единственному элементу списка списков [Xs] . В этот момент переменная P в вызывающем предикате trans1 принимает значение Xs . При возврате рекурсии в голову списка списков  пути будут добавлены обратном порядке все пройденные состояния (списки). Полученный список списков (путь) будет унифицироваться с искомой целью - списком B в вызывающем предикате trans1 правила верхнего уровня trans .

В правиле trans предусмотрена возможность вывода искомого списка трансформаций состояний в файл, так как список часто не помещается на экране. Для этого вызывается правило fprintf(B), где B - найденный (в случае успешного поиска) список списков трансформации состояний:

fprintf(List): - openwrite(fp, ’’lab3.lst’’),  writedevice(fp),

write(«List of transformations:»), nl,  file_string(List, 0),

writedevice(screen), closefile(fp).

file_string([], _).

file_string([String|Tail], I1): - I = I1 + 1,  write(I), write(«   »),

write(String),  nl,  file_string(Tail, I).

Подчинённое правило file_string предназначено для построчной печати в файл всех трансформаций состояния от исходного до конечного с соответствующими  порядковыми номерами в переменной I.

Самостоятельная часть работы

Для нормальной работы программы увеличьте ресурсы ОП, в частности, code array size  до 4000 (paragraphs);  stack size до 2000. Выполните соответствующие установки, используя опции:

           Options/Compiler directives/Memory allocation

Опробуйте работу программы lab3_1.pro, задавая следующие начальные и конечные состояния:

Начальное состояние          Конечное состояние      Число ходов

[5,0,2,7,4,1,3,8,6]                  [3,5,4,8,7,2,6,1,0]                   14

[5,0,2,7,4,1,3,8,6]                  [0,5,4,3,7,2,8,6,1]                   10

[4,0,5,7,2,1,3,8,6]                  [4,5,7,2,8,1,3,0,6]                   95

 В тех случаях, когда решение не помещается на экране, посмотрите результат в файле lab3.lst.

  •   Выполните трассировку  программы на 2-ом из вышеприведенных примеров, в котором решение отыскивается за 10 ходов. Просмотрите список  начальных ходов, которые делает программа при поиске решения. Соответствует ли он минимальным значениям функции Хэмминга? Если не соответствует, т.е. программа выбрала в конечном итоге иное решение, то как это объяснить?

Убедитесь на собственных примерах в том, что программа не всегда отыскивает решение. Например, в примере 1 (см.выше) достаточно поменять местами фишки 6 и 1 в конечном состоянии. В чём, по Вашему, причина этого?

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

Попытайтесь определить “точку возврата” на графе пространства состояний после начального неудачного поиска целевой вершины в глубину в примере 2. В чем же тогда роль функции Хэмминга?

Задание №3.2. Компактное представление процедур перестановок позиций в игре “восьмерка”.

        Обсуждаемая ниже программа lab3_2.pro значительно меньше по объёму текста, чем предыдущая, за счёт более компактного представления правил допустимых перестановок и процедурной организации самих перестановок. Вместо громоздкого списочного представления перестановок (предикатов ptrans) рассмотрим факты near(n, m), где аргументы n и m - номера соседних ячеек, допускающих обмен содержимым:

near(1, 4).     near(2, 5).     near(3, 6).

near(4, 7).     near(5, 8).     near(6, 9).

..................................................

        Всего таких фактов 12. Симметрию  отношений соседних позиций N и M можно отобразить правилом permut, подобным правилу con в Задании  № 1.3:

permut(N, M): - near(N, M).

permut(N, M): - near(M, N).

Как видим, общее число перестановок (24) не изменилось. Правило верхнего уровня:

search(ST, WST, PD): - src(ST, WST, [ST], PD),nl,   write("Order of moving:"),nl,

                    writelist(PD), nl,!.

Здесь ST и WST – списки соответственно исходной и конечной позиций. PD – возвращаемый список  перемещаемых фишек. Для поиска PD предикат src вызывает основное правило:

src(WST, WST, _, [ ] ).

src(ST, WST, Vis, [Xa|FP]): -  getnx(ST, 0, N),

findall(V, variant(ST, WST, Vis, N, V), LV), min(LV, MinV),

permut(N, M),  getxn(ST, M, Xa),  xchgxnm(ST, N, M, FST),

ham(FST, WST, MinV), not(member(FST, Vis)),

src(FST, WST, [ST|Vis], FP).

        Аргументы предиката src (по второму предложению): ST-исходное состояние (список), WST- целевое состояние (список), Vis-список пройденных состояний (список списков), [Xa|FP] – возвращаемый список перемещаемых фишек (ходов) Xa.

Предикат getnx вызывает правило нахождения номера N (возвращаемое значение в третьем аргументе) заданного вторым аргументом содержимого ячейки в текущем списке ST. В данном случае нас интересует положение пустой позиции. Это значение (N) передается предикату variant, запускаемому неоднократно с помощью предиката findall.

variant(ST, WST, Vis, N, V): - permut(N, M), xchgxnm(ST, N, M, FST),

                          not(member(FST, Vis)), ham(FST,  WST, V).

Здесь N- заданный номер пустой позиции, V- возвращаемое значение функции Хэмминга. Правило permut находит по фактам near (_,_) номер одной из соседних по отношению к N позиции M (допустимый ход). Правило xchgxnm (см.ниже) выполняет пробную перестановку (обмен) в исходном состоянии ST содержимого ячеек N и M и выдаёт новое состояние FST. Правило member проверяет отсутствие перестановки FST в списке пройденных состояний Vis, а правило ham, описанное в предыдущем задании, вычисляет значение функции Хэмминга - число V несовпадающих позиций в сопоставляемых  состояниях FST и WST.

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

         Условие начала возврата рекурсии - первое предложение src. Это условие будет выполнено, когда очередное состояние совпадёт с целевым WST, при этом список ходов (третий аргумент) примет начальное значение []. По существу, правило src отыскивает обычным путём (см., например, лаб. раб. №1) путь в графе.

Рассмотрим подробнее работу подчиненных правил. С помощью правила getxn(ST,X,N) для состояния ST отыскивается номер позиции N, в которой находится фишка X. Так как нас интересует положение пустой позиции, то при вызове getnx задаём X = 0: getxn(ST,0,N)

   

        getnx([X|_],X,1).

        getnx([H|T],X,N):-getnx(T,X,M), N=M+1.

 Правило min получает на вход список значений функции Хэмминга возможных ходов LV и отыскивает в нем минимальный элемент MinV.

Далее в данной варианте программы приходится повторно выполнять группу правил permut,   xchgxnm(ST, N, M, FST), ham(FST, WST, MinV), not(member(FST, Vis)), которые уже выполнялись под управлением  правила variant.

Правило getXn(ST, M, Xa) берёт M-ый элемент, т.е. соседний с пустой позицией, из списка ST и помещает его в Xa (тем самым определяется перемещаемая фишка Xa).

Правило xchgxnm выполняет пробную перестановку содержимого позиций N и M с трансформацией состояния из ST в FST. Но теперь все эти пробные перестановки с помощью правил permut, getxn и xchgxnm будут повторяться до тех пор, пока значение функции ham не станет равным найденному ранее правилом min минимальному значению MinV. По этому условию правило ham фиксирует в своем аргументе FST лучшую перестановку, которая передается предикату рекурсивного вызова правила src. Соответствующий этой позиции ход Xa пополняет список ходов [Xa|FP].

        Остаётся рассмотреть правило перестановки xchgxnm:

xchgxnm(LI, N, M, LO): -  getxn(LI, N, Xn), getxn(LI, M, Xm),

putxn(LI, N, Xm, LOp),  putxn(LOp, M, Xn, LO).

        Задача правила - поменять во входном списке LI местами содержимое позиций N и M и выдать полученный список LO. Задача решается за 4 операции. Правило getxn (не путать с getnx!) при первом применении берёт N-ый элемент из списка LI и помещает его в переменную Xn - третий аргумент. При втором применении M-ый элемент того же списка помещается в Xm. Правило getxn выглядит так:

getxn([H|_], 1, H).

getxn([_|T], N, Y): -  M = N - 1,  getxn(T, M, Y).

        Остаётся вставить содержимое Xn и Xm в обратном порядке в список LI с заменой. Эту функцию выполняет правило putXn:

putxn([_|T], 1, X, [X|T]).

putxn([H|T1], N, X, [H|T2]): -  M = N - 1, putxn(T1, M, X, T2).

        Работу данного правила проследим на примере. Пусть в список [a,b,e,d] необходимо третьим номером вставить элемент «c» (с заменой).  

Тогда целью будет: putxn([a, b, e, d], 3, c, LOut) и протокол работы интерпретатора будет выглядеть следующим образом:

        /* по второму предложению правила putXn:

putxn([a|b, e, d], 3, c, LOut): -  M = 3 - 1,  putxn([b, e, d], 2, c, T2), где LOut =.[a|T2]

putxn([b|e, d], 2, c, [b|T3]): -  M = 2 - 1,  putxn([e, d], 1, c, T3)., где [b|T3] = T2

        /* По первому предложению:

        putxn([e|d], 1, c, [c|T4]),   при этом Т3 = [с|T4]

откуда следует, что T4=[d];  T3=[c,d];  T2=[b,c,d];   LOut=[a|T2]=[a,b,c,d]. Задача решена, место 3-го элемента занял «c», число элементов не изменилось.

Остальные правила данной программы  min, member, ham и writelist обычны и рассматривались ранее. Полный текст программы lab3_2.pro можно найти на прилагаемой дискете.

Ниже описаны изменения правил программы, с помощью которых решена задача устранения дублирования  правил permut(N, M),  getxn(ST, M, Xa),  xchgxnm(ST, N, M, FST), ham(FST, WST, MinV), not(member(FST, Vis)) в правилах src и variant. (Полный ее текст содержится в файле lab3_2m.pro). В предикат variant вместо последнего аргумента V введена структура hod(M, FST, V), обозначенная в предикате variant правила src как S. Она содержит в себе всю необходимую информацию о возможном ходе: переставляемую фишку M, получаемую при этом позицию FST и значение для нее функции Хэмминга.

variant(ST, WST, Vis, N, hod(M, FST, V)): - variant1(ST, WST, Vis, N, M, FST, V).

variant1(ST, WST, Vis, N, M, FST, V): - permut(N, M), xchgxnm(ST, N, M, FST),

                          not(member(FST, Vis)), ham(FST, WST, V).

                          

        src(WST, WST, _, []).

src(ST, WST, Vis, [Xa|FP]): - getnx(ST, 0, N),

                          findall(S, variant(ST, WST, Vis, N, S), LV),

                          min(LV, hod(M, FST, V)),

                          getxn(ST, M, Xa),

                          src(FST, WST, [ST|Vis], FP),

                          writelist(FST),!.

Всю эту информацию в структуру hod передает предикат variant1, который взял на себя функции предиката variant из первой программы, но в который добавлены аргументы М и FST. В результате многократного вызова правила variant из тела правила src с помощью предиката findall, последний собирает все структуры hod (ходы) в список LV и передает его новому правилу min, которое отличается тем, что ищет структуру hod с минимальным значением функции Хэмминга V. Автоматически получаем при этом сведения о соответствующих значениях аргументов М и FST без повторных обращений к перечислявшимся выше предикатам. Остальные операции остались практически без изменений. Текст программы получился компактным, однако эта программа потребляет больше ресурсов памяти, чем продукционный вариант, в чем можно убедиться на третьем примере из 1-го задания.

 

Самостоятельная часть работы

Напишите протоколы процедур getxn, getnx и других  подобно тому, как это сделано в тексте для процедуры putXn.

Объясните различия  программ lab3_2.pro и lab3_2m.

Сравните число ходов при решении вышеуказанных примеров программами trans и search.  Убедитесь, что для третьего примера максимальных ресурсов ОП (стек = 4000) для программы search недостаточно, в то время как программа trans решает задачу за 95 ходов. Как это можно объяснить?


 

А также другие работы, которые могут Вас заинтересовать

67531. АНТРОПОГЕННЫЕ ВОЗДЕЙСТВИЯ НА ГИДРОСФЕРУ 120.5 KB
  Человечество постоянно стремилось к увеличению водопотребления оказывая на гидросферу огромное многообразное давление. В полной мере это относится к осознанию такого страшного зла каким является в наше время загрязнение и истощение поверхностных и подземных вод.
67532. Управление трехфазным асинхронным двигателем: напряжением, реостатное и частотно-токовое. Управление напряжением 162 KB
  Механические характеристики асинхронного двигателя при управлении напряжением. Трехфазная обмотка ротора такого двигателя выполняется медным изолированным проводом и подключена к трем контактным кольцам установленным на валу. Механические характеристики асинхронного двигателя при реостатном управлении...
67533. АНТРОПОГЕННЫЕ ВОЗДЕЙСТВИЯ НА ЛИТОСФЕРУ 198 KB
  Почва один из важнейших компонентов окружающей природной среды. Все основные экологические функции почвы замыкаются на одном обобщающем показателе почвенном плодородии. человек размыкает частично или полностью биологический круговорот веществ нарушает способность почвы к саморегуляции и снижает ее плодородие.
67534. Обобщенная машина, соответствующая асинхронному двигателю. Понятие векторного управления 147 KB
  Соответствующая пространственная векторная диаграмма дана на рис. 11.2. На диаграмме видно, что вектор перпендикулярен вектору тока а вектор перпендикулярен вектору тока Далее, вектор находится впереди вектора что говорит о двигательном режиме и положительном моменте асинхронного двигателя.
67535. УПРАВЛЕНИЕ ОТХОДАМИ 832 KB
  Накопление отходов в окружающей среде и вызываемое ими вторичное загрязнение в результате длительного хранения наряду с задолживанием территорий развитием экспорта отходов в пространстве и времени делают приоритетными вопросы эффективного обращения с отходами и снижение эмиссии в окружающую среду.
67536. Амплитудное и фазовое управление двухфазным асинхронным двигателем с полым ротором. Следящий электропривод переменного тока с сельсинами 229 KB
  Одна из фаз называется обмоткой возбуждения а другая – обмоткой управления. Если на обмотки возбуждения и управления подать напряжения сдвинутые по фазе на угол π 2 например то получается магнитное поле вращающееся с синхронной частотой ω1. При уменьшении напряжения управления магнитное...
67537. МЕХАНИЧЕСКАЯ ЧАСТЬ СИЛОВОГО КАНАЛА ЭЛЕКТРОПРИВОДА 300.5 KB
  На рис. 13.3 показана тележка, на которую действует сжатая пружина с силой F = cx, где с – коэффициент жесткости пружины; x – величина ее деформации. Сила направлена вправо независимо от направления движения – влево или вправо. Действие пружины обусловлено ее потенциальной энергией упругой деформации.
67538. Функции передаточного устройства. Характеристики агрегата «двигатель-редуктор». Выбор мощности двигателя по типовому движению 213 KB
  Третьей функцией передаточного устройства является изменение скорости вращения и момента для согласования характеристик двигателя и исполнительного механизма. Масса объем мощность потерь и стоимость электродвигателя определяются его моментом М2 а мощность на валу дается формулой P2 = M2 ω.
67539. Электропривод с упругими связями. Уравнения трехмассовой системы и колебания в двухмассовой системе. Люфт в механической передаче. Удары и выход из контакта. Механическая передача с упругими связями 247.5 KB
  Рассмотрим упругий стержень, к концам которого приложены моменты М1, М2 (см. рис. 15.1). Концы имеют углы поворота α1 и α2, коэффициент жесткости стержня с12 . Если не учитывать момент инерции стержня, то из условия равновесия моментов получаем равенства...