Файл: Понятие переменной в программировании. Виды и типы переменных (ТЕОРЕТИЧЕСКИЕ АСПЕКТЫ ИССЛЕДОВАНИЯ ПЕРЕМЕННЫХ В ПРОГРАММИРОВАНИИ).pdf
Добавлен: 30.03.2023
Просмотров: 203
Скачиваний: 1
Пример 3. (Взят из пособия [1]).
Мини-пекарня планирует выпечку батонов и булочек. На производство одного батона расходуется 450 г муки, 10 г масла и 0.5 яйца, а на производство одной булочки - 150 г муки, 5 г масла и 1 яйцо. В пекарню ежедневно завозят 180 кг муки, 10 кг масла и 775 яиц. Прибыль от реализации батона равна 3 рублям, а от реализации булочки - 5 рублям. В день необходимо производить не менее 780 единиц продукции и получать не менее 3500 рублей прибыли. Требуется разработать план, обеспечивающий максимальную прибыль.
Решение. Обозначим производимое в день количество батонов символом x1, а x2 - число булочек. По условию задачи эти переменные удовлетворяют следующей системе ограничений:
Третье условие в системе (6) есть ограничение на количество масла, привозимого каждый день, а четвертое - на количество муки. В последних двух условиях пропорционально изменены коэффициенты для придания записям более простого вида. Формула прибыли имеет вид:
r = 3x1 + 5x2.
Полный текст программы задачи в символах turbobasic^: r0=1 for x1=0 to 400 step 1
for x2=0 to 775 step i
if 3*xi+x2<=i200 and xi+x2/2<=500 and xi+x2>=780 and_ xi/2+x2<=775 then r=3*xi+5*x2
if r>r0 and 3*xi+x2<=i200 and xi+x2/2<=500 and xi+x2>=780_ and xi/2+x2<=775 then r0=r : xi0=xi : x20=x2
next x2, xi : print r0, xi0, x20
Интервал изменения xi вычислен в предположении, что вся мука потрачена на батоны, а интервал для x2 предполагает, что все яйца израсходованы только на изготовление булочек. Такие интервалы перекрывают все возможные целочисленные комбинации.
Отметим, что ограничение на прибыль можно не вводить в программу. В этом случае если лучший результат окажется ниже ограничения, то задача не имеет оптимального решения. Здесь это не так, вычисления дают оптимальный результат:
rmax = 3950, xi0 =i50, x20 = 700.
Текст программы с использованием генератора случайных чисел
r0=i
for s=i to i000000 step i xi=400*rnd : x2=775*rnd if 3*xi+x2<=i200 and xi+x2/2<=500 and xi+x2>=780 and_ xi/2+x2<=775 then r=3*xi+5*x2
if r>r0 and 3*xi+x2<=i200 and xi+x2/2<=500 and xi+x2>=780_ and xi/2+x2<=775 then r0=r : xi0=xi : x20=x2
next s : print r0, xi0, x20
Результат вычислений:
rmax = 3949.i77, xi0 =i49.94i, x20 = 699.87i
оказался весьма близким к точным целочисленным значениям.
Пример 4. (Взят из пособия [2])..
Имеется большое количество бревен длиной 3 м. Из них распиливанием следует получить заготовки двух видов: длиной i.2 м и длиной 0.9 м, причем заготовок каждого вида должно быть получено не менее 50 шт. и 8i шт. соответственно. Каждое бревно можно распилить на указанные заготовки тремя способами: i) на 2 заготовки по i.2 м; 2) на i заготовку по i.2 м и 2 заготовки по 0.9 м; 3) на 3 заготовки по 0.9 м. Найти число бревен, распиливаемых каждым способом, с тем чтобы требуемые количества заготовок каждого вида были получены из наименьшего числа бревен.
Решение. Обозначим через xi,x2,x3 числа бревен, распиливаемых соответственно 1-м, 2-м и 3-м способами. Из них можно получить 2xi + x2 заготовок по i.2 м и 2x2 + 3x3 заготовок по 0.9 м. Общее количество бревен, потребное для изготовления названных заготовок, обозначим символом r. Тогда математическая модель задачи примет вид:
r = Xi + x 2 + X3 ® min
при ограничениях
2Xi + X2 > 50,
2X2 + 3x3 > 81
Все переменные - неотрицательные целые числа.
Ниже приведен полный текст программы, решающей данную задачу. Длины интервалов изменения переменных в циклах вычислений определяются по правым частям неравенств, и они должны быть: для X1 - не менее 25, для X2 - не менее 41, для X3 - не менее 27, чтобы покрыть объем, в котором может находиться оптимальная точка
r0=1000
for x1=0 to 30 step 1
for x2=0 to 50 step 1
for x3=0 to 30 step 1
if 2*x1+x2>=50 and 2*x2+3*x3>=81 then r=x1+x2+x3
if r<r0 and 2*x1+x2>=50 and 2*x2+3*x3>=81 then_
r0=r : x10=x1 : x20=x2 : x30=x3
next x3, x2, x1
print r0, x10, x20, x30
Вычисления дают нам следующий оптимальный результат:
rmin =46, X10 =4, X20 =42, X30 =0.
В учебном пособии [2] отмечается альтернативность оптимальных результатов в целочисленных задачах, и утверждается, что в этой задаче должно быть четыре таких варианта. Они приводятся, но наш результат не совпадает ни с одним из них. Лучший их результат по отношению к величине отходов уступает нашему результату. Приведем его:
rmin =46, X10 =5, X20 =41, X30 =0.
В нашем случае 2.4 м бревен уходят в отходы, а в их случае - 3 м. В нашем случае делается 50 заготовок в 1.2 м и 84 заготовки длиной 0.9 м. А в их случае делается 51 заготовка в 1.2 м и 82 заготовки длиной 0.9 м. Таким образом, наш результат является пятым альтернативным вариантом, и он оказался лучше по минимуму отходов, хотя никаких дополнительных критериев, как можно видеть, в программу не вставлено.
Выводы:
- Суть предлагаемого метода состоит в автоматическом комбинировании величин искомых переменных, вычислении целевой функции для каждой допустимой комбинации и в последовательном ее улучшении.
- Приведенные простые примеры относятся к различающимся видам задач: в первом примере решается общая задача линейного программирования, во втором примере - каноническая задача, а в третьем и четвертом примерах - стандартная задача.
- Примеры наглядно иллюстрируют возможности предлагаемого метода - простоту и скорость получения результата.
- Предлагаемый метод несомненно имеет недостатки. Это отсутствие наглядности, поскольку геометрические образы и связи разнообразных классических подходов остаются в стороне. Это невозможность получения альтернативных результатов в целочисленных задачах. Это невозможность определения без специальных действий, что оптимум может иметь место не в точке, а в некоторой непрерывной области переменных. Это невозможность определения в одном вычислении, что задача не имеет конечного экстремума. Наверняка читатель найдет и другие погрешности.
- Для повышения точности результата следует уменьшать шаги изменения задаваемых переменных. При большом числе задаваемых переменных и малых шагах их изменения количество исчисляемых комбинаций и время вычисления может быть недопустимо велико. Чтобы получить достаточную точность результата за приемлемое время, надо проводить вычисления в несколько этапов. Перед началом вычислений надо задаться сравнительно крупными шагами и интервалами изменения, обеспечивающими попадание оптимума в заданный объем. Получив при этих условиях сравнительно близкую к оптимуму точку, надо выделить вокруг нее меньший объем. Для этого надлежит отступить от нее на величину шага в обе стороны по каждой задаваемой координате и задаться значительно меньшими величинами шагов. Далее снова проводятся вычисления, и все действия повторяются, пока не будет достигнута приемлемая точность.
- Для снижения количества исчисляемых комбинаций и времени счета можно также попытаться использовать генератор случайных чисел. В первом и третьем примерах применение генератора rnd дает очень близкий к оптимуму результат. Однако уже в примере с транспортной задачей для числа циклов изменения переменных 107 результат качественно отличался от оптимального - в таблице результатов не оказалось клеток с близкими к нулю величинами.
- Если оптимум достигается не в единственной точке, а на некотором множестве, то предложенный метод находит только единственную точку, и положение ее зависит от выбора интервалов изменения переменных, порядка их вложения в циклы и шага их изменения.
- В задачах с отсутствием конечного оптимума таковое может быть обнаружено несколькими попытками вычислений с увеличением интервалов изменения переменных. При этом целевая функция неограниченно растет по абсолютной величине.
- Предложенный метод может применяться и к нелинейным задачам, но решение и анализ систем нелинейных уравнений сильно осложнит дело для случаев аналогов общей и канонической задач нелинейного программирования. Между тем препятствий для решения рассмотренным методом аналогов стандартных задач в нелинейной постановке не видно.
ЗАКЛЮЧЕНИЕ
В программировании, хорошо описать задачу не всегда означает решить ее. Но любое описание задачи всегда приближает к ее решению. Алгоритмизация и программирование в последнее время уже с большой натяжкой считаются словами-синонимами. Программистов все чаще называют разработчиками. Результатом программирования всегда является описание (переменные + алгоритм) решения задачи.
Переменная имела характерную особенность: она должна была знать, сколько занимает байт в памяти и как ей выровняться на границу слова, а то и двойного слова. Последнее было очень важно для математических программ. Особенности организации оперативной памяти и работа математического сопроцессора обязывали программиста не только правильно и вовремя описать переменную, но и подумать, как она расположится в оперативной памяти. Прим. "Недра" оперативной памяти недоступны современному программированию в подавляющем большинстве случаев.
Раньше с организацией памяти приходилось строго считаться. Первые структуры данных - совокупности переменных - функционировали как переменные с определенной семантикой, но для доступа к ним требовалось не только знать, сколько байт что занимает, но и учитывать, что некоторые типы данных компилятор автоматом выравнивал на границу слова. Все это приводило к серьезным ошибкам в программах.
В память о тех суровых временах следует отметить, что первые языки при всей их пунктуальности и требовательности обеспечивали переменные, типы, структуры данных в программировании и разработке безопасным синтаксическим контролем.
Если программа проходила синтаксический контроль и успешно линковалась, проблемы с выполнением начинались только при фатальной ошибке программиста или сбое аппаратуры.
СПИСОК ЛИТЕРАТУРЫ
- Александров В. В. Экологическая роль электромагнетизма. - СПб.: Изд-во Поли- техн. ун-та, 2015. - 736 с.
- Барабанов А. А., Косов А. А., Ярославцев Н. А. Влияние энергетических форм природы на жизнедеятельность человека // Академический вестник УралНИИпроект РААСН. - 2015. - № 1. - С. 91-96.
- Бугакова Т. Ю. Вовк И. Г. Математическое моделирование пространственно-временного состояния систем по геометрическим свойствам и оценка техногенного риска методом экспоненциального сглаживания // Вестник СГГА. - 2012. - Вып. 4 (20). - С. 47-58.
- Винер Н. Кибернетика, или управление и связь в животном и машине; или Кибернетика и общество. - 2-е издание. - М.: Наука; Главная редакция изданий для зарубежных стран, 2013. - 344 с.
- Галль Л. Н. В мире сверхслабых. Нелинейная квантовая биоэнергетика: Новый взгляд на природу жизни. - 2016. - 317 с.
- Гуревич И. М. Оценка основных информационных характеристик Вселенной // Приложение к журналу «Информационные технологии». - 2016. - № 12. - С. 2-17.
- Дубров А. П. Когнитивная психофизика: основы. - 2-е изд., исп. и доп. - Ростов н/Д.: Феникс, 2012. - 301 с.
- Егоров В. В. Физические поля и излучения организма (на примере человека). Проблемная лекция. - М.: ФГОУ ВПО МГАВМиБ, 2016. - 64 с.
- Информация // Большой энциклопедический словарь. - 2-е изд., перераб. и доп. - М.: Большая Российская энциклопедия, 2015. — 1434 с.
- Карпик А. П., Осипов А. Г., Мурзинцев П. П. Управление территорией в геоинформационном дискурсе. - Новосибирск: СГГА, 2016. - 279 с.
- Концепции целостности эволюции материального мира / Ю. С. Ларионов, Н. А. Ярославцев, С. М. Приходько, Е. В. Екимов // VI Международный конгресс «Слабые и сверхслабые поля и излучения в биологии и медицине». Санкт-Петербург, 2 июня 2012 г.: сб. научных трудов. - Спб., 2012. - С. 268-269.
- Ларионов Ю. С. Основы эволюционной теории (Концепции естествознания и аксиомы современной биологии в свете эволюции материи): учеб. пособие. - Омск, изд. ИП Скорнякова Е. В., 2012. - 233 с.
- Ларионов Ю. С., Ярославцев Н. А. Зависимость скорости роста растительных тест- объектов семян пшеницы от действия электромагнитных излучений низкой интенсивности естественного происхождения // Вестник СГГА. - 2012. - Вып. 4 (20). - С. 100-106.
- Моисеев Н. Н. Расставание с простотой. - М.: АГРАФ, 2012. - С. 98.
- Першин С. М. Слабое когерентное излучение ОН и орто-Н2О мазеров как несущая в биокоммуникации: орто-Н2О, как резонансный сенсор // Человек и электромагнитные поля: сб. докладов III Международной конференции. - Саров: РФЯЦ-ВНИИЭФ, 2016. - С. 4- 12.
- Петров Н. В. Живой Космос. - СПб.: ООО «Береста», 2015. - 420 с.
- Сборник научных трудов VI Международного конгресса «Слабые и сверхслабые поля и излучения в биологии и медицине». - СПб., 2012. - 309 с.
- Семенков О. И. Информация. Новейший философский словарь / Сост. и гл. науч. ред. А. А. Грицанов. 3-е изд., испр. - Минск: Книжный дом, 2013. - С. 431-434.
- Чернавский Д. С. Синергетика и информация (динамическая теория информации). Изд. 2-е. - М.: Едиториал УРСС, 2014. - 288 с.
- Электромагнитный информационный подход к целостной естественнонаучной картине материального мира / Ю. С. Ларионов, В. С. Ларионов, Н. А. Ярославцев, Н. М. При- ходько, Е. И. Баранова // Вестник СГГА. - 2014. - Вып. 4 (28). - С. 158-174.
- Энергоинформационные взаимодействия как основа понимания целостной картины мира / Н. А. Ярославцев, Ю. С. Ларионов, С. М. Приходько, Е. В. Екимов // VI Международный конгресс «Слабые и сверхслабые поля и излучения в биологии и медицине». Санкт- Петербург, 2-6 июля 2012 г.: сб. научных трудов. - СПб., 2012. - С. 280-281.
- Systems and software engineering - Vocabulary: Although information will necessarily have a representation form to make it communicable, it is the interpretation of this representation (the meaning) that is relevant in the first place [Электронный ресурс]. - Доступ из: https://www/ISO org/obp/ui/#ISO:std: ISO/IEC/IEEE 24765:2010.