Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций_KIT.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
1.46 Mб
Скачать

Лекция 8 возможности скм maple для моделирования

План лекции

  • Построение корреляционно-регрессионных моделей в СКМ Maple

  • Поиск оптимальных решений в СКМ Maple

Построение корреляционно-регрессионных моделей в СКМ Maple

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

Построить и оценить регрессионную модель в СКМ MAPLE можно с помощью модулей и функций статистической библиотеки stats (таблица 1).

Подключение этой библиотеки осуществляется командой

>with(stats);

Таблица 1. Подбиблиотеки библиотеки stats

Подбиблиотеки

Описание

importdata

импорт данных из файла

anova

вариационный анализ

describe

cтатистические характеристики

fit

аппроксимация данных

random

cлучайные значения

statevalf

численная оценка данных

statplots

графика

transform

преобразования данных

Подбиблиотека Fit

Эта подбиблиотека предназначена для нахождения корреляционных отношений и для аппроксимации данных выбранными зависимостями с использованием метода наименьших квадратов.

Формат:

fit[leastsquare[[x,y]]]([[dataX], [dataY]]);

По умолчанию система приближает зависимость к уравнению прямой линии.

Пример 1. Провести анализ зависимости среднедневной заработной платы, руб. (Y) от среднедушевого прожиточного минимума в день одного трудоспособного, руб. (х). Таблица П1 с исходными данными приведена в Приложении 1 к лабораторной работе №8.

Сеанс работы в Maple:

На первом этапе массивы данных x – среднедушевой прожиточный минимум в день одного трудоспособного и Y – среднедневная заработная плата следует оформить типом statsdata для возможности обработки процедурами и функциями библиотеки stats СКМ Maple:

> restart;

> with(stats);

>X:=[1788,1890,2064,2158,2296,2330,2350,2440,2510,2610,2633,2688,2750,3500,3620,3800];

>Y:=[6000,6000,6600,6600,6800,7500,7420,7580,7550,7785,7855,7700,7963,8500,8560,9100];

Для расчета функциональной зависимости между экспериментальными данными X и Y и возможности ее графического отображения определим функцию пользователя spisok=f(x) c использованием функционального оператора à:

> spisok:=(x,y)->[x,y];

Далее, задав вид модели (например, линейная), рассчитаем коэффициенты уравнения регрессии:

> fit[leastsquare[[x, y]]]([X,Y]);

и приведем полученное уравнение к численному виду:

> f:=evalf(%,4);

Следует отметить, что при определенной ранее функциональной зависимости между независимой и зависимой переменными функция leastsquare[[x,y],y=f(x)] позволяет задавать вид модели по усмотрению разработчика. Если задать, например, квадратичную или кубическую зависимость, можно рассчитать и такие модели:

> eq:=y=z*x^2+b*x+c;

> evalf(fit[leastsquare[[x, y], eq]]([X,Y]),4);

>evalf(fit[leastsquare[[x,y],y=a*x^3+b*x^2+c*x+d]]([X,Y]),7);

Для вычисления описательных характеристик, используемых при анализе статистических данных, можно использовать функцию describe.

Подробнее с этой темой можно ознакомиться в [8, 9].

Поиск оптимальных решений в СКМ Maple

Библиотека Simplex

Если требуется найти переменные, при которых линейная функция многих переменных имеет максимум (или минимум) при выполнении определенных ограничений, заданных в виде линейных равенств или неравенств, то следует использовать симплекс-метод. Этот метод реализован в библиотеке simplex, содержащей алгоритм линейной оптимизации. Библиотека simplex, как и любая другая подключается командой with. Подробнее с функциями этой библиотеки можно ознакомиться в справочной системе СКМ Maple.

Поиск максимума (минимума) функции осуществляется командами maximize (minimize), которые используются в следующем формате:

maximize(expr, opt1, opt2, ..., optn)

minimize(expr, opt1, opt2, ..., optn)

здесь

expr - алгебраическое выражение,

opt1, opt2, ..., optn – параметры оптимизации.

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

Библиотека Optimization

Эта стандартная библиотека позволяет отыскивать оптимальные решения для задач следующего вида:

  • линейного программирования LPSolve

  • квадратического программирования QPSolve

  • нелинейного программирования NLPSolve

  • среднеквадратического отклонения LSSolve

Пример 2. Решить задачу линейного программирования, используя библиотеку simplex и библиотеку Optimization.

Фирма производит три вида продукции (A, B, C), для выпуска каждого требуется определенное время обработки на всех четырех устройствах.

Вид продукции

Время обработки, ч.

Прибыль, у.е.

I

II

III

IV

A

1

3

1

2

3

B

6

1

3

3

6

C

3

3

2

4

4

Рассчитать оптимальный план производства, если допустимое время работы на устройствах I, II, III, IV составляет соответственно 84, 42, 21 и 42 часа.

Экономико-математическая модель задачи имеет вид:

Целевая функция: func:=3*A+6*B+4*C.

О граничения: 1∙А+6∙B+3∙C<=84

3∙A+1∙B+3∙C<=42

1∙A+3∙B+2∙C<=21

2∙A+3∙B+4∙C<=42

A,B,C – неотрицательные (> =0)

A,B,C – целочисленные.

Здесь A,B,C – количество производимой продукции каждого вида.

Приведем решение в системе Maple с использованием библиотеки simplex:

> func:=3*A+6*B+4*C;

> ogran:={1*A+6*B+3*C<=84, 3*A+1*B+3*C<=42, 1*A+3*B+2*C<=21, 2*A+3*B+4*C<=42};

> rez:=maximize(func, ogran, NONNEGATIVE);

> rez:=evalf(rez,3);

> F:=subs(rez,func);

Решение в системе Maple с использованием библиотеки Optimization:

>restart;

>with(Optimization);

[ImportMPS, Interactive, LPSolve, LSSolve, Maximize, Minimize, NLPSolve, QPSolve]

>func:=3*A+6*B+4*C;

3A+6B+4C

>ogran:={1*A+6*B+3*C<=84, 3*A+1*B+3*C<=42, 1*A+3*B+2*C<=21, 2*A+3*B+4*C<=42};

{1A+6B+3C<=84, 3A+1B+3C<=42, 1A+3B+2C<=21, 2A+3B+4C<=42};

>LPSolve(func, ogran, assume={nonnegative, integer}, maximize);

[54., [A=12, B=3, C=0]]

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

Пример 3. Решить задачу нелинейного программирования, используя библиотеку Optimization.

Предприятие выпускает два вида продукции. Для изготовления продукции требуется ресурсы трех видов. С учетом брака расход ресурсов на единицу производимой продукции j-го вида определяется выражением: aij+kij xj, а прибыль в зависимости от объемов производства равна рj+ ljxj где

xj

искомый объем производства продукции j-го вида,

aij

норма расхода i-го ресурса на производство единицы продукции j-го вида,

kij

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

рj-

прибыль от единицы продукции j-го вида ,

lj

коэффициент изменения прибыли, влияющий на объем производства продукции.

Требуется найти такие объемы производства продукции, при которых прибыль максимальна.

Исходные данные к задаче приведены в таблице 1.

Таблица 1. Исходные данные

Ресурс(i)

Запас ресурса

Норма расхода ресурсов aij на продукцию вида j

Коэффициент изменения норм расхода ресурсов kij на продукцию вида j

1

2

1

2

1

1350

15

18

0,1

0,05

2

1400

12

16

0,2

0,2

3

1580

17

14

0,1

0,15

Прибыль (ден. ед.)

100

120

Коэффициент изменения прибыли

-0,08

-0,1

Составим математическую модель задачи.

При заданных значениях параметров целевая функция имеет вид:

f(x1,x2)=(100-0.8x1)x1+ (120-0.1x2)x2 à max,

или

f(x1,x2)=100x1-0.8x12+120x2-0.1x22 à max.

Ограничения по ресурсам имеют вид:

(15+0.1x1)x1+(18+0.05x2)x2 ≤ 1350

( 12+0.2x1)x1+(16+0.2x2)x2 ≤1400

(17+0.1x1)x1+(14+0.15x2)x2 ≤ 1580

или

1 5x1+0.1x12+18x2+0.05x22 ≤ 1350

12x1+0.2x12+16x2+0.2x22 ≤ 1400

17x1+0.1x12+14x2+0.15x22 ≤ 1580

X1 ≥ 0, x2 ≥ 0

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

Решение в системе Maple с использованием библиотеки Optimization:

>restart:with(Optimization);

>func:=100*x1-0.08*x1^2+120*x2-0.1*x2^2;

>ogran:={15*x1+0.1*x1^2+18*x2+0.05*x2^2<=1350,12*x1+0.2*x1^2+16*x2+0.2*x2^2<=1400, 17*x1+0.1*x1^2+14*x2+0.15*x2^2<=1580};

>rez:=NLPSolve(func,organ,assume=nonnegative,maximize);

>rez:=evalf(rez,3);

Максимальная прибыль в размере 7220 ден. ед.будет получена при объеме производства продукции первого вида, составляющем 32,6 усл.ед, продукции второго вида 34,7 усл.ед.

Таким образом, используя возможности СКМ Maple можно с успехом рассчитывать экономические модели разных видов.