2
Федеральное агентство по образованию РФ
Федеральное государственное образовательное учреждение
Среднего профессионального образования
Барнаульский строительный колледж
Курсовая работа.
По дисциплине: «Математические методы»
На тему: «Решение задач линейного программирования симплекс методом»
Выполнил: Нунгесер М.В.
Специальность: ПОВТ
Группа: 0881
Преподаватель: Клепикова Н.Н.
Барнаул 2010
Содержание:
Линейное программирование - математическая дисциплина, посвящённая теории и методам решения задач об экстремумах линейных функций на множествах n-мерного векторного пространства, задаваемых системами линейных уравнений и неравенств.
Линейное программирование является частным случаем выпуклого программирования, которое в свою очередь является частным случаем математического программирования. Одновременно оно - основа нескольких методов решения задач целочисленного и нелинейного программирования. Одним из обобщений линейного программирования является дробно -линейное программирование.
Многие свойства задач линейного программирования можно интерпретировать также как свойства многогранников и таким образом геометрически формулировать и доказывать их.
Математическая формулировка задачи линейного программирования
Нужно определить максимум линейной целевой функции (линейной формы)
при условиях
Иногда на xi также накладывается некоторый набор ограничений в виде равенств, но от них можно избавиться, последовательно выражая одну переменную через другие и подставляя её во всех остальных равенствах и неравенствах (а также в функции f).
1 |
X1 |
X2 |
... |
Xm |
Xm+1 |
... |
Xn |
||
X0 |
A0,0 |
0 |
0 |
... |
0 |
A0,m+1 |
... |
A0,n |
|
X1 |
A1,0 |
1 |
0 |
... |
0 |
A1,m+1 |
... |
A1,n |
|
X2 |
A2,0 |
0 |
1 |
... |
0 |
A2,m+1 |
... |
A2,n |
|
... |
... |
... |
... |
... |
... |
... |
... |
... |
|
Xm |
Am,0 |
0 |
0 |
... |
1 |
Am,m+1 |
... |
Am,n |
|
На начальном шаге алгоритма симплекс-метода должно быть выбрано базисное допустимое решение (X1, ..., Xm) >= 0 при Xj = 0 (j = m+1, ..., n), следовательно, все свободные члены ограничений Ai,0 >= 0 (i = 1, ..., m). Когда это условие выполнено, симплекс-таблица называется прямо-допустимой, так как в этом случае базисные переменные, равные Ai,0, определяют допустимое решение прямой задачи линейного программирования. Если все коэффициенты целевой функции A0,j >= 0 (j = 1, ..., m), то симплекс-таблица называется двойственно-допустимой, поскольку соответствующее решение является допустимым для двойственной задачи линейного программирования.
Если симплекс-таблица является одновременно прямо и двойственно допустимой, т.е. одновременно все Ai,0 >= 0 и A0,j >= 0, то решение оптимально.
Действительно, поскольку допустимыми являются лишь неотрицательные значения управляемых параметров, то изменение целевой функции за счет вариации свободных переменных, через которые она выражена, возможно только в сторону увеличения, т.e. будет ухудшаться. Если среди ее коэффициентов имеются A0,j < 0, то значение целевой функции еще можно уменьшить (т.e. улучшить), увеличивая значение любой свободной переменной Xj с отрицательным коэффициентом A0,j при побочном уменьшении базисных переменных, чтобы оставались справедливы ограничения задачи. Теоретически можно использовать любую свободную переменную Xj с A0,j < 0, но на практике обычно действуют в соответствии со стратегией наискорейшего спуска, выбирая минимальный элемент A0,p < 0 из всех отрицательных A0,j < 0:
A0,p = min A0,j < 0.
j
Столбец p симплекс-таблицы, соответствующий выбранному коэффициенту A0,p < 0, называется ведущим столбцом. Свободная переменная ведущего столбца должна быть введена в базис вместо одной из текущих базисных переменных. Очевидно, из базиса следует исключить такую переменную Xq, которая раньше других обращается в нуль при увеличении переменной Xp ведущего столбца.
Её индекс легко определить, если среди положительных элементов ведущего столбца p найти элемент, минимизирующий отношение (Ai,0 / Ai,p):
Aq,0 Ai,0
------ = min ------ , i = 1,...,m.
Aq,p i Ai,p
Элемент Aq,p называется ведущим элементом, cтрока q симплекс-таблицы, содержащая ведущий элемент, называется, соответственно, ведущей строкой. Переменная ведущей строки Xq заменяется в базисе переменной ведущего столбца Xp и становится свободной переменной с значением 0, в то время как новая базисная переменная Xp достигнет максимально возможного значения, равного: max Xp = ( Aq,0 / Aq,p).
После указанного взаимообразного обмена переменными Xp и Xq между наборами свободных и базисных переменных нужно модифицировать исходную каноническую модель задачи путем приведения ее к диагональной форме относительно нового множества базисных переменных. Для указанного преобразования можно формально использовать процедуру исключения Гаусса, которая, как известно, состоит из двух элементарных операций, применяемых к системе алгебраических уравнений ( в данном случае ограничений - равенств):
· умножение уравнения E1(X) = 0 на константу K1 и замена уравнения E1(X) = 0 уравнением K1*E1(X) = 0;
· сложение уравнений E1(X) = 0 и E2(X) = 0 c последующей заменой уравнения E2(X) = 0 уравнением E1(X) + E2(X) = 0.
Исключения Гаусса позволяют привести систему уравнений к диагональной форме относительно желаемого множества переменных. В данном случае исключение Гаусса применяется так, чтобы все элементы симплекс-таблицы в ведущем столбце, кроме ведущего элемента Aq,p, стали нулевыми, а ведущий элемент стал равным единице:
Ai,p = 0, если i не равно q
и
Ai,p = 1, если i = q.
Указанные шаги симплекс-метода повторяются, пока не будет получена симплекс-таблица, которая одновременно является прямо и двойственно допустимой. Если положит в такой симплекс-таблице текущие базисные переменные равными Ai,0, а свободные - нулю, то будет получено оптимальное решение.
Практика применения симплекс метода показала, что число итераций, требуемых для решения задачи линейного программирования обычно колеблется от 2m до 3m, хотя для некоторых специально построенных задач вычисления по правилам симплекс метода превращаются в прямой перебор базисных допустимых решений. Однако, трудные для симплекс метода задачи на практике встречаются крайне редко, что объясняет широкое распространение и большую популярность данного метода линейного программирования по сравнению с другими подходами.
На звероферме могут выращиваться норки, выдры и нутрии. Для обеспечения нормальных условий их выращивания используется 3 вида кормов. Количество корма каждого вида, которое должны получать зверьки в среднем приведено в таблице:
Количество единиц корма, которое ежедневно должны получать |
|||||
Вид корма |
Норка |
Выдра |
Нутрия |
Общее количество корма |
|
I |
4 |
2 |
5 |
190 |
|
II |
5 |
3 |
4 |
320 |
|
III |
7 |
9 |
5 |
454 |
|
Прибыль от реализации одной шкурки, руб. |
150 |
320 |
350 |
||
В таблице указано общее количество корма каждого вида, которое может быть использовано зверофермой, и прибыль от реализации одной шкурки зверька.
Определить, сколько зверьков каждого вида следует выращивать на звероферме, чтобы прибыль от реализации шкурок была максимальной.
Алгоритм решения задач симплекс - методом
1) Поставленная описательная задача переводится в математическую форму (целевая функция и ограничения).
2) Полученное математическое описание приводят к канонической форме.
3) Каноническую форму приводят к матричному виду.
4) Ищут первое допустимое решение. Для этого матрица должна быть правильной. Матрица в ЗЛП называется правильной, если она содержит минимум m правильных (базисных) столбцов, где m - число строк в матрице. Столбец в канонической ЗЛП называется правильным (базисным), если все его элементы равны нулю, кроме единственного равного единице.
5) Если матрица не является правильной, то ее нужно сделать таковой с помощью искусственного базиса. Для этого в матрицу нужно дописать столько базисных столбцов, чтобы их общее количество вместе с уже имеющимися базисными столбцами составляло m. После этого переходят к пункту 6. Если искусственный столбец выходит из базиса, то его удаляют из матрицы. Если удалены все искусственные столбцы, то получено первое допустимое решение. Если искусственные элементы не удается вывести из базиса, то система не имеет решений.
6) Строят последовательность матриц. Нужно определить ведущий столбец, ведущую строку и ведущий элемент. Элемент, соответствующий ведущей строке, удаляется из базиса, а на его место ставят элемент, соответствующий ведущему столбцу. Составляют уравнение пересчета матрицы, выполняют пересчет, а затем проверяют его результаты на оптимальность. Если решение не оптимально, то заново ограничивают ведущий элемент, ведущую строку и ведущий столбец.
Признаком оптимальности решения является наличие в векторе решений только отрицательных или нулевых коэффициентов при всех ограничениях.
Ответ записывается следующим образом:
- Каждому отрицательному коэффициенту в векторе решения ставится в соответствие нулевой коэффициент для соответствующей переменной в ответе.
- Для каждого нулевого коэффициента в векторе решения ставится в соответствие значение свободного члена из строки, содержащей единицу в столбце данной переменной.
- Фиктивные переменные в ответе не учитываются.
Ведущим может быть назначен любой столбец, удовлетворяющий одному из условий:
1) Первый столбец, содержащий положительный элемент в векторе решений.
2) Столбец, содержащий наибольший положительный элемент в строке решения.
3) Если столбец удовлетворяет условию max(Cj min bj/aij) при решении на max, и min(Cj min bj/aij) при решении задач на min.
Cj - коэффициент целевой функции в столбце j, aij - коэффициент в столбце j и строке i.
Определим максимальное значение целевой функции F(X) = 3500 x1 +3200 x2 +1500 x3 при следующих условиях ограничений.
4 x1 + 2 x2 + 5 x3 <=190
5 x1 + 3 x2 + 4 x3 <=320
7 x1 + 9 x2 + 5 x3 <=454
Для построения первого опорного плана систему неравенств приведем к системе уравнений путем введения дополнительных переменных.
4x1 + 2x2 + 5x3 + 1x4 + 0x5 + 0x6 = 190
5x1 + 3x2 + 4x3 + 0x4 + 1x5 + 0x6 = 320
7x1 + 9x2 + 5x3 + 0x4 + 0x5 + 1x6 = 454
Матрица коэффициентов A = a(ij) этой системы уравнений имеет вид:
Базисные переменные это переменные, которые входят только в одно уравнение системы ограничений и притом с единичным коэффициентом.
Решим систему уравнений относительно базисных переменных:
x4 , x5 , x6
Полагая, что свободные переменные равны 0, получим первый опорный план: X1 = (0,0,0,190,320,454)
Поскольку задача решается на максимум, то ведущий столбец выбирают по максимальному отрицательному числу и индексной строке. Все преобразования проводят до тех пор, пока не получатся в индексной строке положительные элементы.
Переходим к основному алгоритму симплекс-метода.
X1 |
X2 |
X3 |
X4 |
X5 |
X6 |
св. чл. |
|
4 |
2 |
5 |
1 |
0 |
0 |
190 |
|
5 |
3 |
4 |
0 |
1 |
0 |
320 |
|
7 |
9 |
5 |
0 |
0 |
1 |
454 |
|
-3500 |
-3200 |
-1500 |
0 |
0 |
0 |
0 |
|
Итерация №0
Текущий опорный план неоптимален, так как в индексной строке находятся отрицательные коэффициенты
В качестве ведущего выберем столбец, соответствующий переменной x1, так как наибольший коэффициент по модулю.
Вычислим значения D i по строкам как частное от деления
и из них выберем наименьшее:
Следовательно, 1-ая строка является ведущей
Разрешающий элемент равен 4 и находится на пересечении ведущего столбца и ведущей строки
Формируем следующую часть симплексной таблицы.
Вместо переменной x в план 1 войдет переменная x1
Строка, соответствующая переменной x1 в плане 1, получена в результате деления всех элементов строки x4 плана 0 на разрешающий элемент РЭ=4
На месте разрешающего элемента в плане 1 получаем 1.
В остальных клетках столбца x1 плана 1 записываем нули.
Таким образом, в новом плане 1 заполнены строка x1 и столбец x1 .
Все остальные элементы нового плана 1, включая элементы индексной строки, определяются по правилу прямоугольника.
Для этого выбираем из старого плана четыре числа, которые расположены в вершинах прямоугольника и всегда включают разрешающий элемент РЭ.
НЭ = СЭ - (А*В)/РЭ
СТЭ - элемент старого плана, РЭ - разрешающий элемент (4), А и В - элементы старого плана, образующие прямоугольник с элементами СТЭ и РЭ.
Представим расчет каждого элемента в виде таблицы:
X1 |
X2 |
X3 |
X4 |
X5 |
X6 |
св. чл. |
|
1 |
1/2 |
5/4 |
1/4 |
0 |
0 |
190/4 |
|
5 |
3 |
4 |
0 |
1 |
0 |
320 |
|
7 |
9 |
5 |
0 |
0 |
1 |
454 |
|
3500 |
3200 |
1500 |
0 |
0 |
0 |
||
X1 |
X2 |
X3 |
X4 |
X5 |
X6 |
св. чл. |
|
1 |
1/2 |
5/4 |
1/4 |
0 |
0 |
190/4 |
|
0 |
1/2 |
-9/4 |
-5/4 |
1 |
0 |
165/2 |
|
0 |
11/2 |
-15/4 |
-7/4 |
0 |
1 |
243/2 |
|
0 |
-1450 |
2875 |
875 |
0 |
0 |
||
Итерация №1
Текущий опорный план неоптимален, так как в индексной строке находятся отрицательные коэффициенты
В качестве ведущего выберем столбец, соответствующий переменной x2, так как наибольший коэффициент по модулю.
Вычислим значения D i по строкам как частное от деления и из них выберем наименьшее:
Следовательно, 3-ая строка является ведущей
Разрешающий элемент равен 5.5 и находится на пересечении ведущего столбца и ведущей строки
Формируем следующую часть симплексной таблицы.
Вместо переменной x в план 2 войдет переменная x2
Строка, соответствующая переменной x2 в плане 2, получена в результате деления всех элементов строки x6 плана 1 на разрешающий элемент РЭ=5.5
На месте разрешающего элемента в плане 2 получаем 1.
В остальных клетках столбца x2 плана 2 записываем нули.
Таким образом, в новом плане 2 заполнены строка x2 и столбец x2 .
Все остальные элементы нового плана 2, включая элементы индексной строки, определяются по правилу прямоугольника.
Для этого выбираем из старого плана четыре числа, которые расположены в вершинах прямоугольника и всегда включают разрешающий элемент РЭ.
НЭ = СЭ - (А*В)/РЭ
СТЭ - элемент старого плана, РЭ - разрешающий элемент (5.5), А и В - элементы старого плана, образующие прямоугольник с элементами СТЭ и РЭ.
Представим расчет каждого элемента в виде таблицы:
Конец итераций: найден оптимальный план
Окончательный вариант симплекс-таблицы:
X1 |
X2 |
X3 |
X4 |
X5 |
X6 |
св. чл. |
|
1 |
0 |
159/100 |
41/100 |
0 |
-9/100 |
729/20 |
|
0 |
0 |
-191/100 |
-109/100 |
1 |
-9/100 |
1429/20 |
|
0 |
1 |
-15/22 |
-7/22 |
0 |
9/50 |
243/11 |
|
0 |
0 |
1886.36 |
413.64 |
0 |
263.64 |
||
Оптимальный план можно записать так:
x1 = 729/20=36.45
x5 =1429/20= 71.45
x2 =243/11= 22.09
F(X) = 3500*36.45 + 3200*22.09 = 198281.82
end;
i:=n+1; {используем последнюю строку массива полей для целевой ф-ции}
for j:=1 to m+1 do
begin
pole[i,j]:=TEdit.Create(Form1.ScrollBox1);
pole[i,j].parent:=form1.ScrollBox1;
pole[i,j].Height:=20;
pole[i,j].Width:=40;
pole[i,j].Left:=80*(j-1)+30;
pole[i,j].Top:=30;
pole[i,j].Text:=0;
if j<=m then
begin
podpis[i,j]:=TLabel.Create(Form1.ScrollBox1);
podpis[i,j].parent:=form1.ScrollBox1;
podpis[i,j].Height:=20;
podpis[i,j].Width:=20;
podpis[i,j].Left:=pole[i,j].Left+pole[i,j].Width+2;
podpis[i,j].Top:=pole[i,j].Top+2;
podpis[i,j].Caption:=X[+inttostr(j)+];
if j<>m+1 then podpis[i,j].Caption:=podpis[i,j].Caption+ +;
{если поле не последнее, то дописываем плюсик}
end;
end;
for i:=1 to n do {поля для ввода ограничений}
for j:=1 to m+1 do
begin
pole[i,j]:=TEdit.Create(Form1.ScrollBox1);
pole[i,j].parent:=form1.ScrollBox1;
pole[i,j].Height:=20;
pole[i,j].Width:=40;
pole[i,j].Left:=80*(j-1)+5; {расстояние между соседними + отступ от края}
pole[i,j].Top:=40*(i-1)+100;
pole[i,j].Text:=0;
if j<=m then
begin
podpis[i,j]:=TLabel.Create(Form1.ScrollBox1);
podpis[i,j].parent:=form1.ScrollBox1;
podpis[i,j].Height:=20;
podpis[i,j].Width:=20;
podpis[i,j].Left:=pole[i,j].Left+pole[i,j].Width+2;
podpis[i,j].Top:=pole[i,j].Top+2;
podpis[i,j].Caption:=X[+inttostr(j)+];
if j<>m then podpis[i,j].Caption:=podpis[i,j].Caption+ +
{если поле не последнее, то дописываем плюсик; иначе пишем знак}
else begin
znak[i]:=TComboBox.Create(Form1.ScrollBox1);
znak[i].parent:=form1.ScrollBox1;
znak[i].Height:=20;
znak[i].Width:=40;
znak[i].Left:=podpis[i,j].Left+podpis[i,j].Width+25;
znak[i].Top:=pole[i,j].Top;
znak[i].Items.Insert( 0,> );
znak[i].Items.Insert( 1,>=);
znak[i].Items.Insert( 2, =);
znak[i].Items.Insert( 3,<=);
znak[i].Items.Insert( 4,< );
znak[i].ItemIndex:=1;
end;
end else pole[i,j].Left:=pole[i,j].Left+70; //поля для правой части
//ограничений
end;
end else {если табличку создавать не надо, то разблокируем поля}
begin
for i:=1 to n+1 do
for j:=1 to m+1 do
begin
pole[i,j].Enabled:=true;
if i<=n then znak[i].Enabled:=true;
end;
end;
end;
{/////////////////}
procedure write_system(strok,stolb: integer);
{записывает массив в виде уравнений}
var
i,j: integer;
begin
write(f,<P>F(x) = );
for j:=1 to stolb do
begin
write(f,matrix[strok,j]:0:3);
if j<stolb then
begin
write(f,x<sub>,j,</sub>);
if (kanon=true) and (j=stolb-1) then write(f, = ) else
if (matrix[strok,j+1]>=0) then write(f, + ) else write(f, );
end;
end;
writeln(f,</P>);
writeln(f,<P>При ограничениях:</P><P>);
for i:=1 to strok-1 do
begin
for j:=1 to stolb do
BEGIN
write(f,matrix[i,j]:0:3);
if j<stolb then write(f,x<sub>,j,</sub> );
if j=stolb-1 then
if kanon=false then write(f, ,znak[i].text, )
else write(f, = );
if (matrix[i,j+1]>=0) and (j<stolb-1) then write(f,+);
end;
writeln(f,<br>);
end;
writeln(f,</P>);
end;
{/////////////////}
procedure zapisat(strok,stolb: integer; v_strok,v_stolb:integer);
{записывает массив в виде таблички}
var
i,j:integer;
begin
writeln(f,<TABLE BORDER BORDERCOLOR=black CELLSPACING=0 CELLPADDING=5>);
for i:=0 to strok do
begin
writeln(f,<TR>);
for j:=1 to stolb+1 do
begin
write(f,<TD );
if i=0 then
begin
if (i_basis<>0) and (j>m+y-i_basis) and (j<=m+y) then
write(f,BGCOLOR=yellow )
else
write(f,BGCOLOR=green );
end
else
if (i=v_strok) or (j=v_stolb) then write(f,BGCOLOR=silver ) else
if (i=strok) or (j=stolb) then
if (j<>stolb+1) then write(f,BGCOLOR=olive );
write(f,align=);
if (i=0) and (j<stolb) then write(f,center>X<sub>,j,<sub>) else
if (i=0) and (j=stolb) then write(f,center>св. чл.) else
if (i=0) and (j=stolb+1) then write(f,center>базис) else
if (j=stolb+1) then
if i<>n+1 then write(f,center>X<sub>,all_basis[i],</sub>) else
write(f,center> )
else
write(f,right>,matrix[i,j]:1:3);
writeln(f,</TD>);
end;
writeln(f,</TR>);
end;
writeln(f,</TABLE>);
end;
{/////////////////}
procedure findved;
{ищет ведущий элемент}
var
i,j,k: integer;
temp: double;
begin
done:=false;
solve:=false;
is_ok:=true;
temp:=100000;
i0:=0;
j0:=0;
i:=n+1;
for j:=1 to m+y do
if (i0=0) or (j0=0) then
if matrix[i,j]>0 then
begin
j0:=j;
for k:=1 to n do
if (matrix[k,j]>0) then
if (matrix[k,m+y+1]/matrix[k,j]<temp) then
begin
temp:=matrix[k,m+y+1]/matrix[k,j];
i0:=k;
end;
end;
if (j0=0) and (i0=0) then
for j:=1 to m do
if matrix[n+1,j]=0 then
for i:=1 to n do
if (matrix[i,j]<>0) and (matrix[i,j]<>1) then
begin
is_ok:=false;
j0:=j;
end;
if is_ok=false then
begin
temp:=100000;
for k:=1 to n do
if (matrix[k,j0]>0) then
if (matrix[k,m+y+1]/matrix[k,j0]<temp) then
begin
temp:=matrix[k,m+y+1]/matrix[k,j0];
i0:=k;
end;
end;
if (j0=0) and (i0=0) then
begin
writeln(f, <P>Конец вычислений</P>);
done:=true;
solve:=true;
end
else if (j0<>0) and (i0=0) then
begin
writeln(f, <P>Не удается решить систему</P>);
done:=true;
solve:=false;
end
else
if iter<>0 then
begin
writeln(f,<P><b>Итерация ,iter,</b></P>);
writeln(f, <P>Найдем ведущий элемент:</P>);
zapisat(n+1,m+y+1,i0,j0);
writeln(f,<P>Ведущий столбец: ,j0,<br>Ведущая строка: ,i0,</P>);
write(f,<P>В строке ,i0,: базис );
writeln(f,X<sub>,all_basis[i0],</sub> заменяем на X<sub>,j0,</sub></P>);
all_basis[i0]:=j0;
end;
end;
{/////////////////}
procedure okr;
{округляет мелкие погрешности}
var
i,j: integer;
begin
for i:=1 to n+1 do
for j:=1 to m+y+1 do
if abs(matrix[i,j]-round(matrix[i,j]))< tochnost then
matrix[i,j]:=round(matrix[i,j]);
end;
{/////////////////}
procedure preobr;
{преобразует массив относительно ведущего элемента}
var
i,j,k,l,t: integer;
temp: double;
begin
if done=false then
begin
write(f, <P>Пересчет:</P>);
temp:=matrix[i0,j0];
for j:=1 to m+y+1 do matrix[i0,j]:=matrix[i0,j]/temp;
for i:=1 to n+1 do
begin
temp:=matrix[i,j0];
for j:=1 to m+y+1 do
if (i<>i0) then
matrix[i,j]:=matrix[i,j]-matrix[i0,j]*temp;
end;
okr;
zapisat(n+1,m+y+1,-1,-1);
{/////////////////////////убираем искусственный базис/////////////////////}
if i_basis>0 then {если он есть }
begin
t:=0;
for j:=m+y-i_basis+1 to m+y do {от первого исскусственного элемеента до конца}
begin
need_i_basis:=false;{предполагаем, что элемент не нужен (*)}
for i:=1 to n do {просматриваем столбец}
if all_basis[i]=j then{и если элемент в базисе}
need_i_basis:=true;{тогда он все-таки нужен}
if need_i_basis=false then t:=j;
{если наши предположения (*) подтвердились, то запомним этот элемент}
! | Как писать курсовую работу Практические советы по написанию семестровых и курсовых работ. |
! | Схема написания курсовой Из каких частей состоит курсовик. С чего начать и как правильно закончить работу. |
! | Формулировка проблемы Описываем цель курсовой, что анализируем, разрабатываем, какого результата хотим добиться. |
! | План курсовой работы Нумерованным списком описывается порядок и структура будующей работы. |
! | Введение курсовой работы Что пишется в введении, какой объем вводной части? |
! | Задачи курсовой работы Правильно начинать любую работу с постановки задач, описания того что необходимо сделать. |
! | Источники информации Какими источниками следует пользоваться. Почему не стоит доверять бесплатно скачанным работа. |
! | Заключение курсовой работы Подведение итогов проведенных мероприятий, достигнута ли цель, решена ли проблема. |
! | Оригинальность текстов Каким образом можно повысить оригинальность текстов чтобы пройти проверку антиплагиатом. |
! | Оформление курсовика Требования и методические рекомендации по оформлению работы по ГОСТ. |
→ | Разновидности курсовых Какие курсовые бывают в чем их особенности и принципиальные отличия. |
→ | Отличие курсового проекта от работы Чем принципиально отличается по структуре и подходу разработка курсового проекта. |
→ | Типичные недостатки На что чаще всего обращают внимание преподаватели и какие ошибки допускают студенты. |
→ | Защита курсовой работы Как подготовиться к защите курсовой работы и как ее провести. |
→ | Доклад на защиту Как подготовить доклад чтобы он был не скучным, интересным и информативным для преподавателя. |
→ | Оценка курсовой работы Каким образом преподаватели оценивают качества подготовленного курсовика. |
Курсовая работа | Деятельность Движения Харе Кришна в свете трансформационных процессов современности |
Курсовая работа | Маркетинговая деятельность предприятия (на примере ООО СФ "Контакт Плюс") |
Курсовая работа | Политический маркетинг |
Курсовая работа | Создание и внедрение мембранного аппарата |
Курсовая работа | Социальные услуги |
Курсовая работа | Педагогические условия нравственного воспитания младших школьников |
Курсовая работа | Деятельность социального педагога по решению проблемы злоупотребления алкоголем среди школьников |
Курсовая работа | Карибский кризис |
Курсовая работа | Сахарный диабет |
Курсовая работа | Разработка оптимизированных систем аспирации процессов переработки и дробления руд в цехе среднего и мелкого дробления Стойленского ГОКа |
Курсовая работа | Корпоративная культура |
Курсовая работа | Административная ответственность |
Курсовая работа | Бизнес-план пекарни |
Курсовая работа | Юбка |
Курсовая работа | Развитие памяти у детей дошкольного возраста |
Курсовая работа | Структура оценки персонала |
Курсовая работа | Экономическая безопасность |
Курсовая работа | Организация технического обслуживания и текущего ремонта автомобилей |
Курсовая работа | Оценка инвестиционной привлекательности предприятия |
Курсовая работа | Маркетинг в сфере авиапассажирских перевозок (на примере ОАО "Аэрофлот – российские авиалинии") |
Курсовая работа | Расчет основных параметров склада |
Курсовая работа | Финансовая система РФ |
Курсовая работа | Пути совершенствования производственной структуры предприятия |
Курсовая работа | Особенности гендерных стереотипов в современном обществе |
Курсовая работа | Влияние игрушек на психическое развитие ребенка дошкольного возраста |