Про планирование и вычислительную мощность
Прислано Integral 07 2011 00:33:20

Часть 1

Есть такой аргумент: для планирования экономики не хватит вычислительных мощностей. Дескать, для учёта всего и вся нужен суперкомпьютер, которого даже в перспективе ещё не предвидится. И нужны какие-то чудесные каналы связи, которых не может быть чуть ли не в принципе. Когда я этот аргумент слышу, каждый раз хочется спросить «пацаны, вы вообще о чём?» Какие, нафиг, суперкомпьютеры и чудо-каналы?

Положим, что на каждого человека приходится 10 000 потребительских товаров (это я специально загнул). Положим, людей в России 200 миллионов (это я тоже специально загнул). Положим, что для хранения информации о вещи нужно 100 байт (зачем, кто бы мне сказал?). Тогда для учёта всех потребительских товаров России нужно

104*2*108*102 = 2*1014 байт

200 терабайт, то есть. Даже при заведомо абсурдных завышениях, цена вопроса — сто винтов, стоимостью сто баксов каждый.

Если же от завышений отказаться, и рассматривать реальные 1000 вещей на человека, 100 миллионов активного населения и 10 байт на хранение, то это винт на терабайт. У меня таких три. Я лично могу на дому хранилище данных по потребительским товарам для трёх Россий организовать. Всех потребительских товаров и их расположения, вплоть до полного износа. Какие, нафиг, суперкомпьютеры?

Какие, нафиг, суперканалы? Положим, человек совершает покупки в среднем раз в день. Положим, магазины работают ровно восемь часов. Это 100 млн/8*60*60 = 3500 покупок в секунду. При заведомо абсурдном килобайте трафика на покупку поток будет 3,5 мегабайта/с. На домашнем канале такое можно обработать. Для всей страны. Какие, нафиг, суперканалы?

Самое главное, кому и зачем надо планировать с точностью до штуки? До тысячных долей от валового продукта? С такой точностью на сто лет вперёд? Если есть статистика по дням о потребляемом (приобретённом) количестве каждого продукта, то достаточно планировать с превышением этой суммы на 20% и все покупатели уйдут довольными. Ещё и про запас останется. Никакого учёта в глобальном плане личных пожеланий каждого в принципе не надо. Правильно запланированная сумма исполнит все личные желания вместе взятые.

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

Вам, граждане-критики, не приходит ведь в голову заявить, что генштаб командует каждым движением каждого солдата, причём, планирует эти движения на всю кампанию с требованием неотступно следовать плану? Наверно не приходит. При этом вы же не считаете, что боевые действия ведутся по законам рынка, путём переговоров каждого солдата с каждым? Не считаете, что кампанию спланировать невозможно, поскольку «никаких мощностей не хватит и вдруг чего случится». Их хватает. А раньше хватало просто собственных голов командиров — безо всякой вычислительной техники. Просто потому, что командиры понимали, что означает термин «планирование» и как оно делается.

Они понимали, вы — нет. Вот тут корень зла, а вовсе не в «неэффективности плана».

 

Update. [info]stealthy_shadow про расчёт мощностей:

Кстати, можно грубо оценить количество передаваемой информации.

Возьмем заведомо завышенные оценки.

1. В день человек совершает покупки пусть 100 номиналов.

2. Пусть на каждую покупку приходится одна транзакция.

3. Пусть покупки совершает две трети населения.

Что получаем?

1. Номинал описывается штрих-кодом. Пусть это будет, скажем 64 бита=8 байт=18446744073709551616 наименований. Хватит?

2. Цена пусть будет 32 битной = 4 байта.

3. Количество товара - тоже 32 бита. Еще 4 байта.

4. ИД покупателя - 32 бита. 4 байта.

5. Каждая транзакция описывается 8+4+4+4=20 байтами

6. Добавим столько же на служебные нужды. 40 байт.

7. Умножим на количество покупателей и количество номиналов. 40*100.000.000*100=400.000.000.000 ~ 400 гигабайта в день.

8. Локальная сеть в 100 мбит имеет чистую пропускную способность ~ 13 мб/сек. Отбросим половину и еще чутку - получим "грязную" пропускную способность 6 мб/с. Вся информация за сутки обо всех транзакциях по всей России может быть передана по сети 100 мбит за 68266 сек=19 часов. Даже так получаем надреальное время с возможными пиками (хи-хи - см. ниже) и спадами в покупочное и непокупочное время.

Это к вопросу об объемах информации. Очевидно, все показатели реально завышены - транзакции можно и нужно объединять в пакеты, покупатель не будет расплачиваться за каждый товар отдельно, количество проданного товара не нужно отсылать в реалтайме - лаг в минуту или даже в час вполне приемлем на первом этапе, никто каждый день не покупает по 100 наименований, бывают еще и гигабитные сети и даже 10 гигабитные и так далее. Так что объем передаваемой информации реально уменьшиться минимум на порядок, а то и два. А скорость передачи увеличится на пару порядков, а то и на все три (не забываем компрессию).

 

Часть 2

 

В первой части я написал про распространённое заблуждение, будто планирование невозможно, поскольку «всех компов не хватит на учёт товаров». Оказалось, домашнего компа в общем-то хватит даже на то, чтобы учесть все физические экземпляры товаров конечного потребления. Как водится, это не все поняли, поэтому оценку количества этих товаров начали ловко обращать в «невозможность планирования производства». Сообщаю: для планирования производства не нужен учёт каждого физического экземпляра. Планирование производство, оно про другое — про сумму физических экземпляров, а не про каждый отдельный.

Однако вопрос планирования производства всё равно для общей массы людей — что-то вроде метафизики тонких миров. Сам никто не считал, однако из спец-передачи «Приведения существуют» точно знает, как оно там в тонком мире всё обстоит. Правда, в случае с экономикой передача называется «Планирование невозможно». И в ней говорится, что оно невозможно, потому что невозможно совсем.

Редкие люди что-то считали сами. Или хотя бы спрашивали специалистов, как посчитать. Один из таких товарищ [info]awas1952. Он в 1996-м году посчитал.

Должен отметить, что Вассерман мне, конечно, друг, но истина дороже. Вся математика в статье по ссылке — правильная. То есть, при постановке именно такой задачи и решении её именно таким методом получится так, как написано в статье. Однако из этого никак не следует, что плановая экономика в принципе невозможна на данном этапе и даже не следует, что она на данном этапе хуже рыночной. А всё потому, что решена не та задача не теми методами.

Вкратце, вот о чём в статье говорится. Есть у нас сколько-то там видов продукции. Производство одних видов завязано на другие виды. Нам надо посчитать, сколько и чего нам следует произвести в условиях ограниченности ресурсов. Для этого мы строим систему линейных уравнений, где описывается «взаимоотношение» каждого вида продукции с каждым другим. И эту систему нам надо решить для нахождения наших плановых значений.

Видов продукции, положим, у нас миллиард (Вассерман говорит о 20 миллионах, но жизнь же не стоит на месте). Это — 109. Если мы построим для решения системы уравнений матрицу, то она будет иметь 109 столбцов и 109 колонок. Искать решения будем методом Гаусса, который имеет сложность О(n3). Это означает, что для поиска решения нам понадобится порядка n3 операций, где n — размерность матрицы. В нашем случае операций, соответственно, будет 1027. Полагая скорость топовых современных процессоров равной 10 гГц, мы выясним, что для поиска решения нам понадобится 1027/1010 = 1017 секунд (понятно, что это значение — приблизительное, но нам сейчас нужен порядок величины). Год состоит из, приблизительно, 3*107 секунд. Значит, на решение задачи нам потребуется 3*109 лет. Распараллелив вычисления и подключив к решению миллион компьютеров, мы всё равно будем решать её 3000 лет, что нам никак не подходит.

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

Да-да. Здесь рассматривается самый общий случай — матрица, в которой каждую ячейку может занимать какое угодно число. Но даже сам автор совершенно правильно замечает, что матрица у нас — не самая общая. Для производства солнечных очков не требуется пулемёт (ну, если к процессу не привлекается кровавая гэбня, конечно), поэтому в соответствующих ячейках будет стоять ноль. Можно сказать даже больше: почти во всех ячейках этой матрицы стоят нули, поскольку производство каждого продукта завязано, ну, в худшем случае, на тысячу других. Но никак не на весь миллиард. Таким образом, мы имеем сильно вырожденную матрицу — разреженную.

Как снова совершенно верно замечает автор, для такой матрицы поиск решения даже методом Гаусса уже имеет сложность O(n2,5), однако оценку по времени почему-то уже не даёт, полагая, что «всё равно очень долго». Но, друзья мои, сложность — степенная функция. В такой функции понижение степени может радикально всё изменить. Давайте всё-таки посчитаем.

(109)2,5 = 3*1022 операций

3*1022 / 1010 = 3*1012 секунд = 105 лет

С миллионом компьютеров это уже один месяц на решение. От трёх тысяч лет такой результат радикально отличается. Даже точное решение в лоб уже не выглядит нереальным. Ведь, повысив частоту процессора в десять раз, мы обойдёмся уже сотней тысяч компьютеров. Заделав девайс (который, к слову, уже есть и называется «видеокарта») для матричных операций, реализованных на уровне железа, мы и в тысячу раз скорость вычислений повысим. Тысяча компьютеров уже за месяц справится. Усовершенствуем алгоритм хотя бы до сложности O(n2,4)… В общем, вариантов масса. Но даже безо всяких усовершенствований ясно: задачу реально решить на современном уровне развития за вполне приемлемое время.

Но самый мега-бонус в том, что нам не обязательно решать эту задачу. Конечно, самое точное и общее решение — это приятно, тут без базара. Но наш мир не идеален: это решение — переуточнённое. Оно находится за пределами «шума» — неизбежных ошибок в процессе производства. Такая точность нам просто не нужна. Нам нужна ощутимо меньшая, на которую мы, тем не менее, будем ориентироваться с некоторым её превышением — для надёжности.

Что это значит? Положим, у нас есть метод прогноза энергопотребления района города. Этот прогноз, как проверила практика — весьма точный. При этом может возникнуть неожиданный выброс активности энергопотребителей, который поднимет энергопотребление на один процент по отношению к предсказанному. Если мы будем поставлять ровно столько, сколько прогнозировали, энергии на всех не хватит. Поэтому нам надо бы поставлять, скажем, на десять процентов больше — выброс на десять процентов ведь практически невероятен, чего нельзя сказать об однопроцентном. Итак, мы предсказали некую величину, но закладываемся в том числе и на то, что может быть в реальности незначительно превышена. Но и в этом случае мы потребности удовлетворим.

У того же Вассермана в статье написано вот что: «Рынок добивается избытка. По возможности во всём. Каждого товара должно быть больше, чем нужно». Всё правильно, но с чего бы ровно так же не делать и плану? При рынке ведь товары не возникают из ничего — их кто-то делает. А раз делает, то кто-то распорядился это делать. Плановая экономика тоже распорядится — нет проблем.

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

Нам не нужен учёт всего миллиарда товаров разом. Мы можем выделить из них однотипные и упростить исходную матрицу. Так, например, яблоки разных сортов для своего выращивания требуют примерно одного и того же оборудования, специалистов одного и того же профиля, примерно одинаковых трудозатрат. Этих сортов, положим для определённости, — сто штук. Мы можем в общем плане считать их просто яблоками, решить задачу оптимизации по яблокам, а потом, внутри решения для «обобщённых яблок» уже оптимизировать по сортам. Это не так точно, но точность — вполне достаточная. В среднем каждый продукт из миллиарда имеет, положим, сто сортов. То есть, наша матрица уменьшается с миллиарда строк до 10 миллионов. Ну и с колонками — аналогично.

(107)2,5 = 3*1017 операций. В тридцать тысяч раз меньше. Вместо миллиона компьютеров безо всяких усовершенствований нам достаточно сотни. И за месяц всё посчитаем.

Ещё, конечно, есть задача по оптимизации «детальных матриц» — их у нас 10 миллионов. Но их размерность существенно меньше.

Но и это ещё не всё. В «общей» матрицы даже после упрощения по сходным типам можно выделить независимые миноры (матрицы, более низких порядков) — ведь будут такие виды продуктов, которые в своём производстве вообще практически никак не пересекаются по своим связям с другими. Пусть таких миноров будет хотя бы десять. И мы сможем решать систему уже для десяти матриц с порядком примерно в миллион.

10*(106)2,5 = 3*1016 операций. Сложность упала ещё на порядок. Сто компьютеров будут решать эту задачу три дня. При незначительных (и уже существующих в реальности) усовершенствованиях — несколько часов.

При этом мы имеем почти точное решение задачи.

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

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

Действительно, представив поведение виртуального собственника в виде некоторого набора параметров, мы можем, например, сгенерировать популяцию «собственников» случайным образом, а потом искать при помощи генетического алгоритма того «собственника» (тот набор параметров), который в результате даст наиболее хорошо соответствующее плану смещение. Совокупность «собственников», обратно же, может выступать как единица популяции. И сгенерировав множество их совокупностей мы генетическим алгоритмом найдём ту совокупность, которая лучше всех справилась с планом. Радость от такого подхода в том, что мы не завязаны на некоторую детерминируемую сложность алгоритма, а можем сами подбирать количество итераций, соответствующую доступному нам времени.

Реальная задача, которую решает планирование, может быть сформулирована так: имеется текущее состояние производства, включающее в себя производственные мощности, человеческие и природные ресурсы, план работ. Надо найти новое состояние, относительно близкое к текущему, но лучше соответствующее спросу. Эта задача — задача принципиально иной сложности, нежели «планирование с нуля», рассмотренное в середине статьи.

С потерей точности, конечно — она от количества итераций зависит. Но нам же не надо получить самое правильное решение, нам достаточно более хорошего, чем при рынке — с чисто экспериментальным поиском (который, кстати, тоже можно организовать). И такое решение таки будет.

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

 

Источник