УМ_Пособие_09
.pdf81
24х10,94 + 6х20,93 ≤ 16000,
8x10,88 + 14x20,89 ≤ 5050
и, кроме того, они связаны соотношением x1+x2=1000.
Требуется найти значения параметров х1>0 и х2>0,
соответствующие минимальному значению целевой функции
W = 140x10,93 + 150x20,86.
Прежде всего отметим, что достаточно найти оптимальное значение одной переменной, например x1, поскольку значение х2 можно получить из соотношения x1+x2=1000.
Учитывая, что 0≤ r ≤1, а 0≤ x1 ≤1000, в качестве первого значения x1 принимаем x1=10000r1, а x2 вычислим.
Далее, для полученных значений x1 и х2 проверяем на соответствие системе ограничений, при выполнении которых вычисляем значение целевой.
Результаты расчетов сводим в табл. 5.1.
№ |
x1(i) |
x2(i) |
Выпол- |
W(i) |
№ |
x1(i) |
x2(i) |
Выпол |
W(i) |
|
|
|
нение |
|
|
|
|
нение |
|
|
|
|
ограни |
|
|
|
|
ограни |
|
|
|
|
чений |
|
|
|
|
чений |
|
|
|
|
(призна |
|
|
|
|
(призн |
|
|
|
|
к 1) |
|
|
|
|
ак 1) |
|
1 |
100 |
900 |
0 |
|
31 |
196 |
804 |
0 |
|
2 |
973 |
27 |
1 |
86704 |
32 |
450 |
550 |
0 |
|
3 |
253 |
747 |
0 |
|
33 |
930 |
70 |
1 |
86482 |
4 |
376 |
624 |
0 |
|
34 |
323 |
677 |
0 |
|
5 |
520 |
480 |
0 |
|
35 |
209 |
791 |
0 |
|
6 |
135 |
865 |
0 |
|
36 |
25 |
975 |
0 |
|
7 |
863 |
137 |
1 |
85589.6 |
37 |
601 |
399 |
0 |
|
8 |
467 |
533 |
0 |
|
38 |
595 |
405 |
0 |
|
9 |
354 |
646 |
0 |
|
39 |
334 |
666 |
0 |
|
10 |
876 |
124 |
1 |
85800.5 |
40 |
764 |
236 |
1 |
83674 |
11 |
809 |
191 |
1 |
84616 |
41 |
990 |
10 |
1 |
86253 |
12 |
590 |
410 |
0 |
|
42 |
190 |
810 |
0 |
|
13 |
911 |
89 |
1 |
86281 |
43 |
252 |
748 |
0 |
|
14 |
737 |
263 |
1 |
83077.5 |
44 |
909 |
91 |
1 |
86253 |
15 |
542 |
458 |
0 |
|
45 |
376 |
624 |
0 |
|
16 |
48 |
952 |
0 |
|
46 |
707 |
293 |
1 |
82371 |
|
|
|
|
|
|
|
|
|
.6 |
17 |
56 |
944 |
0 |
|
47 |
153 |
847 |
0 |
|
82
№ |
x1(i) |
x2(i) |
Выпол- |
W(i) |
№ |
x1(i) |
x2(i) |
Выпол |
W(i) |
|
|
|
нение |
|
|
|
|
нение |
|
|
|
|
ограни |
|
|
|
|
ограни |
|
|
|
|
чений |
|
|
|
|
чений |
|
|
|
|
(призна |
|
|
|
|
(призн |
|
|
|
|
к 1) |
|
|
|
|
ак 1) |
|
18 |
489 |
511 |
0 |
|
48 |
831 |
169 |
1 |
85021 |
|
|
|
|
|
|
|
|
|
.5 |
19 |
474 |
526 |
0 |
|
49 |
131 |
869 |
0 |
|
20 |
296 |
704 |
0 |
|
50 |
165 |
835 |
0 |
|
21 |
248 |
752 |
0 |
|
51 |
886 |
114 |
1 |
85951 |
22 |
52 |
948 |
0 |
|
52 |
767 |
233 |
1 |
83745 |
23 |
403 |
597 |
0 |
|
53 |
439 |
561 |
0 |
|
24 |
720 |
280 |
1 |
82682.2 |
54 |
712 |
288 |
1 |
82492 |
25 |
636 |
364 |
1 |
80585 |
55 |
807 |
193 |
1 |
84561 |
26 |
104 |
896 |
0 |
|
56 |
999 |
1 |
1 |
86390 |
27 |
20 |
980 |
0 |
|
57 |
708 |
292 |
1 |
82397 |
28 |
842 |
158 |
1 |
85231.4 |
58 |
15 |
985 |
0 |
|
29 |
268 |
732 |
0 |
|
59 |
736 |
264 |
1 |
83052 |
30 |
953 |
47 |
1 |
86659 |
60 |
147 |
853 |
0 |
|
В данной серии испытаний наилучший результат получен в 25-м испытании: W1(25)=80585, х1(25) =636,
х2(25)=364.
Эффективность метода значительно снижается в связи с тем, что около 60% всех испытаний оказываются неудачными из-за невыполнения ограничений.
Используя систему ограничений, можно установить, что допустимое значение x1 лежит в пределах 634≤ x1≤1000, а
0≤x2≤366.
Учитывая эти ограничения, значение x1 можно разыгрывать по формуле x1=634+366ri, что позволит значительно сократить число испытаний.
Рассмотрим теперь пример направленного случайного
поиска.
Пример. В качестве иллюстрации практического применения метода направленного случайного поиска вернемся к предыдущему примеру.
Примем сначала за длину рабочего шага a=100, а за координаты исходной точки поиска х1(0) = 990, x2(0) = 10. Значение целевой функции в исходной точке определяем по формуле W(0) = 86625.
83
Для реализации метода направленного случайного поиска нужно получить последовательность случайных чисел ζ, равномерно распределенных в интервале (-1, 1). Воспользуемся случайными числами, равномерно распределенными в интервале (0, 1). Пусть получена последовательность случайных чисел: -0,6; -0,28; 0,48; 0,1; 0,98; -0,25; 0,6.
Первый шаг поиска осуществляется в случайном направлении. Вычисляем координаты точки X(1): х1(1) = х1(0) - а∙ζ1
=990 - 100.0,6 = 930; х2(1) =1000-930 = 70
После проверки на выполнение ограничений вычисляем
значение целевой функции: W(1) = 86482.
Поскольку ∆W=W(1) - W(0) <0, шаг следует считать удачным. Поэтому следующие шаги делаются в том же направлении до первого неудачного шага. Результаты расчетов сведены в табл. 5.2.
Таблица 5.2.
№ |
Значение |
х1(i) |
х2(i) |
Выполнение |
W(i) |
|
шага a |
|
|
ограничений |
|
|
|
|
(признак 1) |
|
|
|
|
|
|
|
|
0 |
-100.0.6 |
990 |
10 |
1 |
8 |
|
|
|
|
|
6626 |
1 |
-100.0.6 |
930 |
70 |
1 |
8 |
|
|
|
|
|
6482 |
2 |
-100.0.6 |
870 |
130 |
1 |
8 |
|
|
|
|
|
5702 |
3 |
-100.0.6 |
810 |
190 |
1 |
8 |
|
|
|
|
|
4633 |
4 |
-100.0.6 |
750 |
250 |
1 |
8 |
|
|
|
|
|
3369 |
5 |
-100.0.6 |
690 |
310 |
1 |
8 |
|
|
|
|
|
1960 |
6* |
-100.0.6 |
630 |
370 |
0 |
|
7 |
-100.0.28 |
662 |
338 |
1 |
8 |
|
|
|
|
|
1244 |
8 |
-100.0.28 |
634 |
366 |
1 |
8 |
|
|
|
|
|
0529 |
9* |
-100.0.28 |
606 |
394 |
0 |
|
84
10* |
-100.0.48 |
682 |
318 |
1 |
8 |
|
|
|
|
|
1751 |
11* |
100.0.1 |
644 |
356 |
1 |
8 |
|
|
|
|
|
0790 |
12* |
10.0.98 |
643.8 |
356.2 |
1 |
8 |
|
|
|
|
|
0780 |
13* |
-10.0.25 |
631.5 |
368.5 |
0 |
|
14* |
10.0.6 |
640 |
360 |
1 |
8 |
|
|
|
|
|
0685 |
15* |
1 |
635 |
365 |
1 |
8 |
|
|
|
|
|
0555 |
Как видно из табл. 5.2, каждый неудачный шаг ―наказывается‖ введением случайности (неудачные шаги отмечены звездочкой). После трех неудачных шагов подряд длина шага уменьшается в 10 раз. Наилучший результат получен в 8-м испытания: W(8) = 80529, х1(8) = 634, x2(8) = 366.
Из сравнения примеров видно, что при направленном случайном поиске для нахождения оптимального решения потребовалось гораздо меньшее число испытаний, чем при ненаправленном случайном поиске.
85
ЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ
Задача линейного программирования заключается в изучении способов отыскания наибольшего или наименьшего значения линейной функции при наличии линейных ограничений. Задача линейного программирования заключается в изучении способов отыскания наибольшего или наименьшего значения линейной функции при наличии линейных ограничений.
Cовокупность значений переменных, при которых достигается наибольшее или наименьшее значение функции, определяет оптимальное решение. Всякая же другая совокупность значений переменных, удовлетворяющая ограничениям, определяет допустимое решение задачи.
Формы записи задач линейного прогаммирования
В общем случае задача линейного программирования (ЗЛП) формулируется следующим образом: найти величины х1,…, хn, доставляющие минимум (максимум) функции
F(X) = c1x1 + c2x2 +…+ cnxn
и удовлетворяющие ограничениям, которые могут быть только равенствами и неравенствами вида
ai1x1 |
+…+ainxn bi , |
i = i,…, k , |
|
ai1x1 |
+…+ainxn bi , |
i = (k+1),..., l, |
|
ai1x1 |
+…+ainxn bi , |
i = (l+1),…, m. |
|
Cреди ограничений часто встречаются условия не |
|||
отрицательности всех или части переменных |
|||
xj 0, |
j=1, 2, … ,S. |
|
|
Хотя |
эти условия являются частным случаем |
представленных выше условий общего вида, на практике их обычно выделяют в особую группу.
В более компактной записи общая задача линейного программирования имеет вид:
n |
max (min) |
|
|
Z=c1x1+c2x2+…+cnxn= ci xi |
(6.1) |
||
i 1 |
|
|
|
при условиях {a j1 x1 a j 2 x2 ... a jn xn |
bj } |
|
86
или {a j1 x1 a j 2 x2 ... a jn xn bj 0} (5.2)
Различаются еще две основные формы записи задач линейного программирования в зависимости от наличия ограничений разного типа:
а) стандартная форма ЗЛП
|
|
|
n |
|
|
|
|
|
|
Z |
c j x j max |
||||||
|
|
|
j 1 |
|||||
при ограничениях |
|
|
|
|
|
|||
n |
|
|
|
|
|
|
|
|
|
x |
|
b , i 1, m |
|||||
|
a |
ij |
j |
|||||
|
|
i |
||||||
j 1 |
|
|
|
|
|
|
|
|
|
x j 0, j 1, n. |
|||||||
|
б) каноническая форма ЗЛП
n
Z c j x j min(max)
j 1
при ограничениях
n |
|
|
|
|
|
|
|
|
|
|
x |
|
b , i 1, m |
||||
|
a |
ij |
j |
|||||
|
|
|
i |
|||||
j 1 |
|
|
|
|
|
|
|
|
|
|
x j 0, j 1, n. |
||||||
|
|
Стандартная форма ЗЛП интересна тем, что большое число прикладных задач естественным образом сводится к этому виду моделей.
Каноническая форма ЗЛП важна ввиду того, что основные вычислительные методы решения ЗЛП разработаны именно для этой формы.
Указанные выше три формы ЗЛП эквивалентны в том смысле, что каждая из них с помощью несложных преобразований может быть приведена к любой из двух остальных.
Переход от задачи минимизации к задаче максимизации. Осуществляется путем изменения знака критериальной функции, т.е. задача
87
n
Z c j x j min
j 1
эквивалентна задача на поиск максимума
n
Z ( c j x j) max.
j 1
Изменения знаки свободного члена и коэффициентов в ограничениях – неравенствах, можно поменять знак этих неравенства на обратный. Например, ограничения
{a j1 x1 a j 2 x2 ... a jn xn bj }
можно заменить следующим:
{ a j1x1 a j2 x2 ... a jn xn b j }
Переход от ограничения - неравенства к равенству. осуществляется введением дополнительной неотрицательной переменной. Так, к примеру, условие
{a j1 x1 a j 2 x2 ... a jn xn bj }
эквивалентно двум ограничениям
{a j1x1 a j2 x2 ... a jn xn xn 1 b j } , xn+1 0.
Вводимые переменные типа xn+1 называют фиктивными или дополнительными.
Ограничения – равенства можно представить парой неравенств. Ограничение
{a j1x1 a j2 x2 ... a jn xn b j }
можно представить парой ограничений
{a j1x1 a j2 x2 ... a jn xn xn 1 b j }, где xn+1 0 или {a j1x1 a j2 x2 ... a jn xn xn 1 b j }, где xn+1≤0
Если на знак переменной xj не наложено ограничений, можно заменить ее разностью двух неотрицательных переменных
xj = x'j – x"j , где x'j 0, x"j 0.
88
Если переменная ограничена снизу (сверху) xj с (xj с), то заменив ее по формуле xj = x'j +с, перейдем к задаче, в которой фигурирует неотрицательная переменная x'j 0.
Примеры построения математических моделей ЗЛП
Задача о рациональном использовании ресурсов
Имеются какие-то ресурсы (сырьѐ, рабочая сила, оборудование): R1, R2, .. Rm
в количествах соответственно b1, b2, .. bm.
С помощью этих ресурсов могут производиться товары:
T1, T2, .. Tn
Для производства одной единицы товара Tj необходимо aij единиц ресурса Ri по цене dj руб. Каждая единица товара Tj может быть реализована по цене Cj.
По каждому виду товара количество произведѐнных единиц ограничивается спросом: известно, что рынок не может поглотить более, чем kj единиц товара Tj.
Обозначим план производства товаров через вектор Х={x1, x2, .. xn}, где xj –планируемое количество товара Tj.
x j 0, x j k j , j 1, n.
Тогда условия спроса налагают на них ограничения. Ресурсов должно хватить, отсюда возникают
ограничения:
n
aij x j bi ,i 1, m. j 1
Выразим прибыль Z в зависимости от переменных x1, .. xn. Себестоимость sj единицы товара Tj равна
m
s j aij di, j 1, n. i 1
89
Чистая прибыль qj, полученная от реализации одной единицы товара Tj, равна разнице между еѐ продажной ценой cj и себестоимостью sj:
m
q j c j s j c j aij di, i 1
По этой формуле получим чистые прибыли на единицу всех товаров: q1, q2, .. qn.
Общая чистая прибыль от реализации всех товаров будет
n
z q
j 1
n
j x j (c j j 1
m
aij di) x j max,
i 1
которую требуется максимизировать.
Задача о смесях
Предположим, что нужно выбрать суточный рацион питания, имея в распоряжении n продуктов, содержащих m питательных веществ.
Пусть aij – количество i-го питательного вещества в единице j-го продукта, вi – суточная потребность организма в i- том питательном веществе, сj – цена единицы j-го продукта. При этом требуется, чтобы цена суточного рациона питания была минимальной.
Суточный рацион питания – вектор Х = {x1, x2, ..xn}, где через xi обозначено суточное потребление i-го продукта.
Цель решения задачи – минимальная стоимость суточного рациона питания:
n
Zci xi min.
i1
Из условия полного удовлетворения потребности организма в питательных веществах строится система ограничений:
n
aij x j bi ,i 1, m, j 1
Величина потребляемого j-го продукта должна быть, разумеется, неотрицательна:
x j 0, j 1, n,
90
Математическая модель представляет собой частный случай общей задачи линейного программирования в симметричном виде.
Задача о производстве сложного оборудования
Планируется производство сложного оборудования, каждый комплект которого состоит из n элементов: э1, э2, .. эn.
Заказы на производство этих элементов могут быть размещены на m разных предприятиях: П1, П2, .. Пm.
В течение заданного времени T на предприятии Пi: можно изготовить aij элементов типа Эj (i=1,m; j=1,n), т.е. на каждом предприятии Пi можно изготовлять любые элементы Эj.
Реализации подлежат только полные комплекты оборудования, состоящие из набора всех элементов Э1, Э2, … Эn.
Требуется распределить заказы по предприятиям так, чтобы число полных комплектов оборудования, изготовленных за время T, было максимально.
Планируя производство оборудования, мы должны для каждого предприятия Пi указать, какую часть имеющегося в его распоряжении времени оно должно отдать на производство элементов Эj. Обозначим через xij долю времени T, которую предприятие Пj будет уделять производству элементов Эj (если этот элемент на данном предприятии не производится, то xij = 0).
Мы должны соблюдать следующие ограничительные условия: количество времени, которое каждое предприятие затрачивает на производство всех элементов, не должно превышать общего запаса времени T ("доля" времени Т – единица):
n
xij 1,i 1, m.
j 1
Кроме того, накладывается естественное условие неотрицательности переменных:
xij 0,i 1, m, j 1, n.