Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Шепелев, И. Г. Математические методы планирования и управления в строительстве конспект лекций

.pdf
Скачиваний:
16
Добавлен:
19.10.2023
Размер:
5.9 Mб
Скачать

Например, если сметная стоимость объекта Г млн. руб., смет­ ная стоимость каждого из этапов 2 0 0 тыс. руб., то х г будут 0 ; 200; 400; 600; 800 и 1000 тыс. руб.

Рассмотрим постановку задачи планирования строительства

при использовании неделимых производственных ресурсов.

обо­

Задача

2 . Допустим имеется i =

1, 2 , 3, ...,п — типов

рудования

и j = 1 , 2 , 3,..., m-—видов

работ, подлежащих

вы­

полнению.

а-ц— производительность каждого типа оборудования на оп­

ределенной работе;

 

 

 

 

 

 

Ci ■— стоимость машино-смены;

 

объекта, выде­

bj — часть сметной

стоимости строительства

ленная на эксплуатацию машин и механизмов;.

типа;

Ki — количество

машин

(ресурсов)

каждого

Xij — количество

единиц

оборудования на каждом объекте.

Целевая функция и ограничения будут иметь вид;

 

2

2

а и х п = тах

 

(6.2.3)

при ограничениях

 

i

j

 

 

 

 

 

 

 

 

 

 

 

 

2 с, -V,: ; !>■,

 

(6.2.4)

 

 

 

i

 

 

 

 

 

ш

j к, *,j

о,

(6.2.5)

 

 

2

A5

-Xij — целые числа, Г— 1, 2, 3,..., п.

Задача № 3. Целочисленная вариантная модель. Необходи­

мо определить план капиталовложение отрасли

(допустим, от­

расли строительных материалов).

 

 

Введем обозначения:

 

или реконструкции одного объ­

х \.— вариант строительства

екта;

 

объекта

строительства

(развития

предприятия)

i — номер

(i = 1 , 2 , 3,..., п);

строительства

или развития предприя­

г — номер

варианта

тия. r =

(1,

2,..., R), R может быть равен 1;

 

j — номер

вида продукции,

выпуск которого

необходим в

отрасли.)

=

( 1 , 2 , 3,..., т ) ;

 

 

 

c[j — приведенные затраты по каждому варианту;

bj — потребность в продукции j;

предприятием по каждо­

а\.} — выпуск j-ой продукции каждым

му варианту;

 

 

 

 

 

.80

d[ — капиталовложения, необходимые для строительства каж­

дого предприятия по каждому варианту; К — лимит капиталовложений.

n

m

R

( 6.2.6)

У У V сп х \\ ~ min

i

j

Г

 

при ограничениях

 

 

 

 

i

г

(6.2.7)

 

 

 

 

( 6.2.8)

 

 

 

(6.2.9)

 

 

2 х \ = *■

(6.2. 10)

Наиболее интересными

здесь являются

ограничения (6.2.9)

и (6.2.10). Ограничение (6.2.9) означает, что вариант включает­ ся целиком или не включается совсем. Ограничение (6.2.10) оз­ начает единственность включения варианта, т. е. если один ва­ риант включен в план, то другие варианты не должны быть включены.

Задача № 4, с разрывной целевой функцией. (Транспортная

задача с фиксированными доплатами).

 

строительного

Пусть i =

1, 2, 3,.... п — пункты производства

щебня;

1 , 2 , 3,..., m — строительные объекты, на которых потреб­

j =

ляется

щебень;

 

 

 

 

а\ — объем

производства в пункте производства i;

 

bj — объем потребления в пункте потребления j;

 

Хц — объем перевозок из пункта i в пункт j;

из

i в j;

 

Cij — затраты

на перевозку единицы груза

пере­

dij — разовые

затраты, зависящие только

от

наличия

возок из i в j и не зависящие от объема этих перевозок.

На­

пример, арендная плата за погрузочное оборудование, не зави­

сящая

от объемов,

затраты

на подъездные пути, оборудование

погрузочных площадок, диспетчеризацию и др.

 

Целевая функция задачи имеет вид

 

 

 

 

n

m

 

 

 

(6 .2 .1 1 )

 

 

 

2 2 с р (-* )-т ш ,

 

 

 

I

j

 

 

 

 

где

. ч

 

(

0 ,

если

x,i = 0

/с о ю\

сцСх) =

I

 

,

,

J

(6 .2 .1 2 )

 

 

 

c,j Хц + dij,

если х п >

0

 

4 И. Ш епелев

 

 

 

 

 

 

81

п р и о г р а н и ч е н и я х

 

 

 

 

2

Х ц

=

b i

(6,2.13)

i

 

 

 

 

ш

 

 

(6.2.14)

2

 

^ а ь

i

 

> о.

 

 

х ц

 

В связи с разрывом функции

(6.2.12)

в точке 0, эта задача,

по смыслу и формулировке

созвучная транспортной задаче ли­

нейного программирования не может быть решена методом ли­ нейного программирования.

Поставленная здесь задача с разрывной целевой функцией может быть преобразована в задачу целочисленного програм­ мирования. Для этого вводят дополнительные переменные г/у, и целевую функцию (6 .2 .1 1 ) приводят к виду

n

m

 

 

 

 

2 1 ] ( си*и + d'j yij) = min,

(6.2.15)

i

i

 

 

 

 

при этом вводится дополнительное ограничение

 

У =

0 при X,, = О

 

(6.2.16)

1

при Хц < Му Y]j,

 

 

если г/у = 0, то и Ху = 0,

а

если г/у =

1, то Ху гС Му,

Му выби­

рается так, что

Му =

max {ар,

 

(6.2.17)

 

b y ) .

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

•*11 = М ц У у ,

отсюда у,-= — тогда целевая функция примет вид

■УП Му

S CliXil + d« “ S S (CiJ+

Xl] = min (6-2Л8)

и ее решают как обычную задачу линейного программирова­ ния. Существуют специальные методы приближенного решения задачи № 4, например, метод Балинского i[7], который не тре­ бует приведения задачи к целочисленной.

82

§ 6.3. Методы решения задач дискретного программирования

В предыдущих параграфах этой главы был показан широ­ кий класс задач дискретного программирования, имеющий ме­ сто в планировании и управлении строительством. Однако сколько-нибудь широко известных, признанных и надежных методов решения задач этого класса нет. В монографии [7] дано достаточно полное изложение некоторых методов решения с теоретическими доказательствами сходимости этих методов. Здесь приведены только классификация методов и описание не­ которых из них.

Существует ряд приемов, существенно отличающихся один от другого, для реализации которых разработаны специальные алгоритмы. Задачи типа № 2 решаются методами линейного программирования. Если при этом подобного рода задачу уда­ ется свести к транспортной, то получают целочисленное опти­ мальное решение. При любых целых значениях коэффициентов и свободных членов в ограничениях транспортная задача, ре­ шаемая распределительным методом, всегда имеет целочислен­ ный оптимальный план. Это можно доказать следующим рас­ суждением: опорный базисный план транспортной задачи явля­ ется целочисленным, так как все коэффициенты в ограничениях целые числа, при переходе от одного опорного плана к другому

целочисленность сохраняется, так как при этом нет

операции

деления.

 

При решении задач типа № 3 обычно делают допущение, за­

меняя ограничение (6.2.9) ограничением 0 ■<л:]) <; 1.

При этом

получают нецелочисленное решение, которое после округляют до целых чисел. Также тривиально иногда поступают и при решении задачи типа № 1 и № 2 , причем в задаче № 1 получен­ ные результаты, отличные от целых чисел, заданных ограниче­ нием, оставляют в оптимальном плане. Такое нарушение целочисленности часто оправдывается тем, что за получение целочис­

ленного

решения приходится платить

слишком дорогой

ценой как

с возрастанием вычислительных

трудностей, так и

в связи с потерей оптимальности функционала. Так автор ,[4] утверждает: «Не боясь парадоксов, скажу, что потери от нецелочисленности могут быть меньше, чем потери от достижения целочисленного результата», подразумевая под последним умень­ шение значения функционала в целочисленном оптимальном плане.

С таким утверждением согласиться нельзя, ибо выгода от лучшего значения функционала при нецелочисленном плане ил­

4*

83

 

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

Еще хуже, если на практике нарушаются условия целочис­ ленное™ в строительстве, что, как говорилось выше, ведет к ро­

сту незавершенного

строительства к экономическим потерям

для государства и строительной организации.

Метод простого

округления нельзя назвать методом цело­

численного программирования.

Более корректными методами являются методы, основанные на принципах отсечения нецелочисленных решений и методы с применением комбинаторики. Наибольшее распространение по­ лучили методы отсечения Гомори и методы «ветвей и границ». При решении ряда задач применяются приближенные методы решения целочисленных задач.

§6.4. Принцип метода отсечения

ипервый алгоритм Гомори

Сущность метода отсечения заключается в том, что в цело­ численной задаче линейного программирования вначале полу­ чают обычное оптимальное решение. Если оптимальный план будет целочисленным, то задача решена. Если в оптимальном плане имеются нецелочисленные переменные, которые по усло­ виям задачи должны быть целочисленными, то производится правильное отсечение нецелочисленной части решения. Кратко рассмотрим алгоритм Гомори в изложении ([7]. Иллюстрацион­ ный пример взят из этого же источника.

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

уп+1 = — Т О ' + 2 ( - К .})

(6.4.1)

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

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

84

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

Задача разрешима

Рис. 12. Блок-схема первого алгоритма Гомери

85

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

Далее эту таблицу оптимизируют. Из оптимального плана выбывает в первой итерации дополнительная строка, а выбран­ ная строка становится целочисленной, но первое решение не обязательно будет оптимальным. Необходимо провести столько преобразований, сколько нужно для получения оптимального плана. Если в этом плане имеются нецелочисленные перемен­ ные, выбираем новую строку, к которой строим правильное от­ сечение согласно формуле (6.4.1), оптимизируем полученную таблицу и т. д. Блок-схема первого алгоритма Гомори приведе­ на на рис. 1 2 .

Решение задачи целочисленного программирования методом

отсечения можно представить графически.

 

Если имеется задача

 

 

 

(6.4.2)

Х1+ Х2

= min

при ограничениях

11

Хо ■< 38

(6.4.3)

2 Xi +

Х\ -I- х 2^

7

. (6.4,4)

4 х г — 5 х 2 < 5

(6А5)

х |

Oj

х 2

Oj

 

x t и х 2— целые

числа,

 

то можно построить геометрическую схему ее решения, изобра­ женную на рис. 13. Предельные линии ограничений (6.4.3) и (6.4.5) образуют выпуклый многоугольник, на гранях которого и следует искать оптимальное значение Х\ и Хг. На рисунке видно, что решению соответствует линия

x t х 2 = 7

или

'

x t = 44/9; х 2 = 25/э.

Как видим, получены нецелочисленные решения. Если ок­ руглить значения Xj и.хг до целых чисел, то эти «псевдооптимальные» ответы не будут соответствовать ограничениям зада­ чи. Допустим, путем простого отбрасывания дробной части мы округлили Х\ и х2 и получили Х\ — 4 и Х2 = 2, т. е. точка 4—2 не лежит внутри зоны допустимых значений переменных. Если

86

при округлении пользоваться правилами арифметики, то мож­ но получить целочисленные значения Х\ = 4 и х2 = 3. Точка 4-— —3 также лежит вне зоны допустимых значений переменных. Це­ лочисленные оптимальные значения переменных надо искать среди всех возможных целочисленных значений, лежащих внут­ ри многоугольника, построенного ограничениями. На рис.. 13 такие точки выделены черным цветом. Если линию X i х2 передвигать параллельно самой себе, то внутри зоны возмож­ ных значений максимум этой линии пройдет через целочислен­ ные точки Х\ — 2; х 2— 3 и Х\ = 3; х 2 — 2, х { + х 2= 5 (птах).

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

§ 6.5. Метод ветвей и границ

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

Смысл метода заключается в том, что определяется нижняя

граница

целевой функции

и все множество

возможных пла­

нов G разбивается на ряд

подмножеств G'. Это разделение про­

изводится

в зависимости

от того, имеется ли

по какому-либо

переменному нецелочисленное решение в базисном оптимальном плане. При дальнейшем разбивании получается дерево ветвле­ ний.

Схема ветвлений показана на рис. 14. На каждом шаге вет­ вления любым известным способом линейного программирова­ ния определяется оптимальный план. Если оптимальный план отвечает условию целочисленности, то ветвление прекращается. Ветвление прекращается и по той ветви, где задача оказывает­ ся неразрешимой. Ветвление продолжается по нецелочислен­ ным в оптимальных планах переменным, имеющим ограничения по целочисленности до тех пор, пока не будет получено цело­ численное решение.

Одним из первых среди комбинаторных методов разработан алгоритм Лэнд и Дойг, смысл которого заключается в следую­

щем. Допустим, поставлена

частично

целочисленная

задача

z = f (л) =

П

min

(6.5.1)

^ Cj X j

 

j

 

 

88

п р и о г р а н и ч е н и я х

 

 

 

 

 

 

2

Ьй

I =

1, 2, . . . , m

(6.5.2)

 

 

j

 

 

 

 

 

.

0 < jc lj< d j;

j =

1,2, .... n

(6.5.3)

 

x L— целые

числа;

/ == 1 , 2 , . . . , rij

(6 .5 .4 )

ni ^

n — условие частичной целочисленное™.

 

Порядок решения (алгоритм):

 

задан­

1.

Решается

задача линейного программирования,

ная моделью (6.5.1—6.5.3).

 

 

 

 

Если полученный при этом оптимальный план Х° удовлетво­

ряет условию целочисленности

(6.5.4), то задача решена. Если

оптимальный план не удовлетворяет условию целочисленности (6.5.4), то значение целевой функции Z0 дает нижнюю границу

для искомого оптимума Z*.

 

 

2. Пусть

некоторая

переменная -*1о(1 < i0 < щ) не получила

в оптимальном плане Х° целочисленного значения,

тогда для

выполнения

условия

целочисленности

необходимо,

чтобы в

дальнейшем эта переменная была

 

 

 

 

\х1о] или лу>.] А-1о[;

(6.5.5)

заметим, что ] x-h [ = [-xio] + 1. Решают

две задачи

линейного

программирования, в которые вводится дополнительное ограни­ чение (6.5.5). Это и есть ветвление.

3. Если одно из полученных оптимальных решений X' отве­ чает условию целочисленности, то это будет решением задачи. Если же одно из полученных решений будет пустым, т. е. зада­ ча неразрешима, то этому решению приписывается оценка + с/х Если одно из решений оптимально, но не отвечает условию це­ лочисленности, то это решение Z' будет нижней границей для последующих решений, а задача разбивается на две задачи при дополнительных ограничениях

(6.5.6)

(6.5.7)

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

Кроме этого метода для решения комбинаторных задач цело­ численного программирования применяются алгоритм Литтла, Мурти, Суини и Кэрел, аддитивный алгоритм Баллаша, и неко­ торые другие методы. Большинство «з них рассмотрено в моно-

Соседние файлы в папке книги из ГПНТБ