А теперь давайте посчитаем

А теперь давайте посчитаем

Как-то так само собой разумеется, что человек - есть венец творения природы, и лишь он сам может совершать всякие чудеса. Например, анализировать сложные взаимосвязанные процессы и находить решения трудных и далеко не очевидных задач. Может оно и так, только недаром каждый уважающий себя рыцарь стремился обзавестись толковым оруженосцем. И, желательно, не одним. Ну, там меч-кладенец почистить, костер развести, обед приготовить, коня накормить. В наши времена все эти функции принято называть одним емким термином "обеспечение". Все эти неприметные и вроде как второстепенные помощники на самом деле позволяли рыцарю сверкать доспехами, упряжью и удалью на турнирах и не задумываться особо о хлебе насущном. Зато рыцарь, освобожденный от лишних забот, мог полностью проявить себя в ратном деле и на прочих фронтах.

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

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

Для своей деятельности предприятие использует: комплектующие, расходные материалы, узлы и блоки. Все это имеет конкретную себестоимость (столбец В) и закупается в определенном количестве (столбец С). Умножение первого на второе дает себестоимость. Соответственно, количество, умноженное на цену реализации (столбец Е), дает выручку от реализации (столбец F). Согласно налогового законодательства, каждый из товаров облагается по своей налоговой ставке (столбец G). Ниже расположены итоговые строки, суммирующие все ключевые показатели хозяйственной деятельности. Полагаю, что и без дополнительных пояснений ясно, что Суммарные затраты формируются как сумма затрат на закупку каждого вида используемых изделий. Соответственно, Суммарная выручка есть сумма денег, полученных после продажи всего закупленного по установленным розничным ценам. Сумма налога, что очевидно, формируется как сумма налоговых поступлений по ставкам для каждого товара. Стало быть, Чистая прибыль есть то, что остается от Суммарной выручки после вычета из нее Суммарных затрат и Суммы налога.

Я вовсе не просто так рассказываю о внутреннем устройстве таблицы, использованной в качестве примера. Дело в том, что частенько в подобной ситуации возникает незамысловатый в общем-то вопрос: а нельзя ли тут что-нибудь улучшить? Вполне понятно, что никто не против, например, получить побольше, а потратить поменьше. Дело за малым - найти способ этого достичь. Хотя представленный пример и кажется простым, тем не менее с помощью одного только карманного калькулятора просчитать все вовсе не так легко. Дело в том, что конечная величина чистой прибыли является результатом многоступенчатой системы взаимных связей, причем местами даже не линейных. Суммарная выручка не зависит от налогов. Хотя Сумма налогов от Суммарной выручки как раз зависит. Что уж тут говорить о Чистой прибыли.

До недавнего времени в подобных случаях решения принимались по большей части интуитивно, ибо сказать с уверенностью, что они являются оптимальными не мог никто. Срабатывал простой принцип: решения начальства либо правильные, либо не обсуждаются. Однако нынче времена изменились, и если в вашем распоряжении есть компьютер и программа Microsoft Excel, то, значит, у вас есть тот верный оруженосец, который доброму рыцарю и костер разведет, и упряжь починит.

Среди богатого инструментария Microsoft Excel есть одна принадлежность, которую пользователи незаслуженно обходят вниманием. И очень даже зря. Этим инструментом называется ПОИСК РЕШЕНИЯ, модуль, который по умолчанию не инсталлируется при установке программы электронных таблиц. Однако именно он способен помочь разобраться в сколь угодно сложной системе взаимосвязей и найти все возможные решения при данных условиях. Правда, чтобы получить правильный ответ следует задать правильный вопрос, иначе ничего не получится.

Давайте попробуем попросить компьютер проанализировать тестовую таблицу и сказать, что нужно сделать, чтобы получить максимальную прибыль. Для этого нужно активизировать мастер анализа, который запускается командой ПОИСК РЕШЕНИЯ из меню СЕРВИС. Это вызовет на экран окно мастера, чрезвычайно навороченное внешне, и в то же время чрезвычайно простое в пользовании .

По умолчанию, при разработке данного мастера, предполагалось, что итогом его работы будет одно число, сколь угодно сложно оно бы ни получалось. Поэтому самым первым шагом должно быть определение этой ячейки. В моем случае ею является В10, в которой хранится конкретное значение Чистой прибыли. Этот адрес можно ввести в поле Установить целевую ячейку разными способами: вручную или просто кликнуть по указанной ячейке мышью. С этого момента мастер знает, что конкретно от него хотят получить. Вторым шагом подготовки автоматического анализа является указание того, что программе предстоит добиться. Тут количество вариантов ограничено: минимальное значение, максимальное значение или некое конкретное значение, устанавливаемое вручную.

Третьим шагом является определение перечня ячеек, значения которых мастер сможет изменять для получения заданного результата. Внимание, это ответственный момент, ибо в случае малейшей ошибки, либо мастер не найдет решения, либо повредит паутину связей. Последнее, впрочем, не так страшно, так как любые правки, внесенные мастером, легко отменить и вернуться к первоначальному виду. В данном примере единственное, чем можно позволить программе манипулировать самостоятельно - это лишь объем закупок каждого конкретного наименования. Налоговые ставки менять нельзя, по понятным причинам. Входные цены от нас не зависят. Выходные подкорректировать конечно можно, но лучше этого не делать, так как представленная схема не учитывает такого понятия как платежеспособный спрос, стало быть программа не сможет отличить реально возможную цену от совершенно фантастической. Поэтому в графу Изменения ячейки следует внести всего один диапазон С2:С4. Хотя есть тут одна хитрость. Если всяких значащих ячеек много, то можно сэкономить малость времени, если позволить мастеру определить изменяемые ячейки самостоятельно. Он, правда, не Господь Бог и звезд с неба не хватает, однако достаточно умен, чтобы занести в эту графу все ячейки и диапазоны, в которых помещаются результаты любых вычислений, производимых в рамках данной таблицы. Это происходит после нажатия экранной кнопки Предположить, расположенной рядом с окном ввода поля Изменяя ячейки. Вам останется только удалить лишнее и перечень готов к употреблению.

И вот теперь наступает самый ответственный момент - четвертый этап, этап задания ограничений. Без четко и логично определенных рамок мастер лишь впустую потратит время. Как говорится, и ежу понятно, что максимизировать прибыль можно довольно просто, достаточно увеличить объем закупок и, соответственно, продаж. Однако, если не сказать заранее, какой суммой свободных средств располагает предприятие (то есть если не ограничить величину Суммарных затрат), то мастер никогда не остановится, вплоть до возникновения ошибки переполнения. В моем примере давайте предположим, что предприятие располагает всего двумя тысячами рублей свободного капитала. Потом, опять же с точки зрения мастера анализа, нет никакой разницы между, например, целым и дробным значением количества расходных материалов. Если еще можно представить, что для дела надо потратить три десятых расходного картриджа, то совершенно нельзя предположить, что где-нибудь можно купить три десятых нового картриджа. Значит, мастеру следует сказать, что в ячейках С2:С4 могут располагаться только целочисленные значения. Кроме того, не лишним будет принудительно указать, что в этих ячейках не может находится величина менее, например, нуля. Понятно, что минус один блок вам не продаст ни один магазин или оптовая база.

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

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

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

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

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

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

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

Александр Запольскис
E-mail: leshy@nestor.minsk.by
- титульная страница


Компьютерная газета. Статья была опубликована в номере 34 за 1998 год в рубрике soft :: субд

©1997-2024 Компьютерная газета