|    | 
СИ-БИ техника | КВ техника | УКВ техника | Радиоизмерения | Защита от TVI | Источники питания | Софт | Расчеты | Справочники
Главная arrow Проектирование arrow MathCAD arrow Как автор продавал программы (быль)  

Как автор продавал программы (быль)

Оглавление
Как автор продавал программы (быль)
Страница 2
Страница 1 из 2

У Михаила Жванецкого часто спрашивают, откуда он берет темы для своих миниатюр. "Выглядываю в окно и прислушиваюсь к разговорам на улице", — таков ответ великого сатирика. "А как Вы все это запоминаете?" — следует новый вопрос. "Да я забыть не могу!"

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

По профессии автор— преподаватель вуза (Московского энергетического института — www.mpei.ru), где он читает курс лекций по информатике (см. программы курса http://twt.mpei.ac.ru/ochkov/Potoki.htm) и смежным дисциплинам (http://twt.mpei.ac.ru/ochkov/Potoki_MOpt.htm), а также руководит группой технологов и программистов, разрабатывающих обучающие программы и компьютерные тренажеры для ТЭС и АЭС (www.trie.ru). Электростанциям и энергообъединениям нужны наши программы, но их приобретению мешает пресловутый кризис неплатежей. Вот какой компьютерный этюд имел место в марте 1997 г.

Акционерное общество "Тамбовэнерго", не имея свободных денег, тем не менее, изъявило желание приобрести наши программы. Котовскому лакокрасочному заводу (ЛКЗ, Тамбовская обл.) для производства нужна электроэнергия. Московскому энергетическому институту для ремонта аудиторий требуется краска. Научной группе автора необходимо новое компьютерное "железо", инструментальные средства и, естественно, зарплата. Для решения подобных проблем человечество еще на заре цивилизации придумало деньги. Переход же нашей страны от непонятно чего к рынку возродил натуральный обмен— бартер. В вышеописанной товарной цепочке не хватало одного звена, чтобы она замкнулась. К счастью, в МЭИ поступила партия компьютеров, парочку которых мы договорились обменять на краску. В этой комбинации заключалась только часть описываемого компьютерного этюда, если вспомнить шахматное толкование слова "этюд" — решение головоломки путем составления цепочки ходов.

Вторая часть данного компьютерного этюда имела место уже в Тамбове и в Котовске — на ЛКЗ. В "Тамбовэнерго" мне (автор переходит к рассказу от первого лица) после сдачи программ выдали доверенность на получение лакокрасочной продукции на 14 млн, естественно, старых рублей12 в счет задолженности завода за электроэнергию и отправили в Котовск. В отделе сбы- та ЛКЗ сначала наотрез отказались отпускать краску за какие-то там непонятные задолженности, а не за живые деньги, но после угрозы отключения света и тепла с трудом, но согласились. Краска, которая мне подходила, вернее не мне, а отделу снабжения МЭИ, стоила 14 600 рублей за литр и разливалась в тару (в барабаны, если следовать москательному жаргону, которого я нахватался в Котовске) объемом 15 и 55 литров. Пустые барабаны стоили 24 и 30 тыс. рублей соответственно. Работница отдела сбыта'ЛКЗ (ее звали Оля), выписывая на компьютере накладную, спросила, в каких емкостях я возьму краску. Чутье давнего собирателя компьютерных этюдов сразу подсказало, что тут кроется типичная и, главное, реальная задача13 линейного программирования, где целевая функция, которую нужно максимизировать, — суммарный объем краски (или стоимость краски), переменные — количество наполненных краской барабанов по 15 и 55 литров, которые необходимо забрать, и три ограничения:

- стоимость краски не должна превышать оговоренных с Тамбовэнерго 14 млн рублей;

- нельзя брать неполную банку (ограничение на целочисленностъ переменных);

- количества банок разной вместимости не должно быть отрицательными числами.

Оля вызвалась помочь решить эту оптимизационную задачу и тут же с помощью калькулятора прикинула, что мне нужно взять 16 больших и 2 маленьких барабана, вмещающих 910 литров краски на сумму 13 млн 814 тыс. рублей. Вспомнив, как я отчаянно торговался в "Тамбовэнерго" и все-таки увеличил цену программ с 12 до 34 млн руб., я спросил у Оли, а можно ли не терять 186 тысяч— не оставлять их "Тамбовэнерго". Она сказала, что нет, поскольку такие задачи решает чуть ли не каждый день, оптимизируя не только стоимость краски, но и ее загрузку в контейнеры различной вместимости, и что она "собаку съела" на решении таких проблем.

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

Алгоритм оптимизации с помощью процедуры поиска решений Excel можно назвать "ленивым": пользователь формирует таблицу расчета и говорит: "По щучьему велению, по моему хотению сделай так, чтобы... целевая функция приняла максимальное (минимальное, определенное) значение, но при этом были выполнены все ограничения". Для этого пользователю достаточно нажать кнопку Выполнить. Процедура поиска решения Excel выдала нам старый результат— 16 больших и 2 маленьких барабана. Но сдаваться не хотелось.

Есть хорошее правило — проверять решение задачи не только другими методами, но и другими программными средствами. Кроме того, не следует забывать о KISS-принципе программирования. С поцелуями он ничего общего не имеет, хотя хорошее отношение к решаемой задаче и к компьютеру в нем просматривается. KISS — это аббревиатура английской фразы "Keep It Simple, Stupid!" ("Делай это проще, дурачок!"). Она призывает решать поставленную задачу наипростейшими способами и прибегать к изощренным алгоритмам и методикам только тогда, когда простые способы не годятся из за длительности времени счета или из-за нерационального использования других ресурсов человека и/или компьютера.

Рис. 3.21. Задача о краске — решение в среде Excel

Простейший способ решить на компьютере поставленную задачу — это перебрать все варианты и остановиться на оптимальном. Благо вариантов не так уж много— 1088: на отпущенные 14 миллионов можно было взять не более 63 маленьких барабанов с краской или не более 16 больших. Перебор можно назвать "компьютерно-рабоче-крестьянским" методом решения. Но помимо прочего он может дать стопроцентную уверенность не только в правильности, но и в единственности найденного решения или показать, что таких решений несколько. А подобная ситуация нередка в задачах целочисленного линейного программирования.


Пред. - След. »


RLBN.ru - Электроника и компьютеры

0.1559
Hosted by uCoz