Распределительные задачи с однородными реcурсами
Характеристика общей распределительной задачи, в которой работы и ресурсы (исполнители) выражаются в различных единицах измерения. Выбор базового ресурса и расчет нормированных производительностей ресурсов, пересчет запаса рабочего ресурса исполнителей.
Рубрика | Математика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 29.04.2011 |
Размер файла | 228,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Содержание
1. Теоретическое введение
2. Этапы решения распределительной задачи
3. Решение задачи
4. Пример решения задачи
Текст программы
1. Теоретическое введение
Общая распределительная задача ЛП - это РЗ, в которой работы и ресурсы (исполнители) выражаются в различных единицах измерения. Типичным примером такой задачи является организация выпуска разнородной продукции на оборудовании различных типов.
Исходные параметры модели РЗ
1) n - количество исполнителей;
2) m - количество видов выполняемых работ;
3) - запас рабочего ресурса исполнителя () [ед.ресурса];
4) - план по выполнению работы () [ед. работ];
5) - стоимость выполнения работы исполнителем [руб./ед. работ];
6) - интенсивность выполнения работы исполнителем [ед. работ/ед.ресурса].
Искомые параметры модели РЗ
1) - планируемая загрузка исполнителя при выполнении работ [ед. ресурса];
2) - количество работ , которые должен будет произвести исполнитель [ед. работ];
3) - общие расходы на выполнение всего запланированного объема работ [руб.].
Этапы построения модели
I. Определение переменных.
II. Построение распределительной матрицы (см. табл.6.1).
III. Задание ЦФ.
Таблица 1. Общий вид распределительной матрицы
Исполнители, |
Работы, |
Запас ресурса,ед.ресурса |
||||
… |
||||||
… |
||||||
… |
||||||
… |
… |
… |
… |
… |
… |
|
… |
||||||
План, ед.работы |
… |
Модель РЗ
; |
1 |
Рис
где - это количество работ j-го вида, выполненных i-м исполнителем.
2. Этапы решения распределительной задачи
I. Преобразование РЗ в ТЗ:
1) выбор базового ресурса и расчет нормированных производительностей ресурсов :
; |
2 |
2) пересчет запаса рабочего ресурса исполнителей :
[ед. ресурса]; |
3 |
3) пересчет планового задания :
; |
4 |
4) пересчет себестоимостей работ:
. |
5 |
II. Проверка баланса пересчитанных параметров и построение транспортной матрицы.
III. Поиск оптимального решения ТЗ.
IV. Преобразование оптимального решения ТЗ в оптимальное решение РЗ , причем переход выполняется по формуле (6.6)
[ед. ресурса], |
6 |
где и - соответственно элементы решения РЗ и ТЗ.
V. Определение количества работ , соответствующее оптимальному решению РЗ :
. |
7 |
VI. Определение ЦФ распределительной задачи согласно (6.1).
3. Решение задачи
На фабрике эксплуатируются три типа ткацких станков, которые могут выпускать четыре вида тканей. Известны следующие данные о производственном процессе:
· производительности станков по каждому виду ткани, м/ч
;
себестоимость тканей, руб./м
;
фонды рабочего времени станков (): 90, 220, 180 ч;
· планируемый объем выпуска тканей (): 1200, 900, 1800, 840 м.
Требуется распределить выпуск ткани по станкам с целью минимизации общей себестоимости производства ткани.
Решение
Пусть переменные - это время, в течение которого i-й станок будет выпускать j-ю ткань. Сведем исходные данные задачи в распределительную таблицу (табл.6.2).
Таблица 2 Распределительная матрица
Станки |
Ткани |
Фонд времени , ч |
||||
В1 |
В2 |
В3 |
В4 |
|||
А1 |
2 ()() 24 |
130 |
318 |
142 |
90 |
|
А2 |
312 |
215 |
49 |
121 |
220 |
|
А3 |
68 |
310 |
56 |
214 |
180 |
|
Объем выпуска, м |
1200 |
900 |
1800 |
840 |
ЦФ имеет смысл себестоимости выпуска запланированного количества ткани всех видов
Ограничения имеют вид
Преобразуем РЗ в ТЗ, т.е. представим исходную задачу в виде, когда ткани производит только один станок - базовый и все параметры задачи согласуем с его характеристиками. В качестве базового можно выбирать любой из станков. Мы выберем станок с максимальной производительностью, т.е. . По формуле (6.2) определим производительности станков , нормированные относительно производительности базового станка:
;
;
.
распределительный задача измерение
Таким образом, базовый станок работает в два раза быстрей второго станка и в три раза быстрей третьего.
Пересчитаем фонды времени станков по формуле (6.3):
[ч]; [ч]; [ч].
Из этих величин следует, что тот объем работ, который второй станок выполняет за свой фонд времени 220 ч базовый станок сможет выполнить за 110 ч. Аналогично объем работ, который третий станок выполняет за 180 ч базовый выполнит за 60 ч.
Пересчитаем плановое задание по формуле (6.4):
[ч]; [ч]; [ч]; [ч].
Отсюда следует, что план выпуска первого вида ткани базовый станок выполнит за 50 ч, второго вида - за 30 ч и т.д.
Пересчет себестоимостей производим по формуле (6.5), например:
[руб./ч]; [руб./ч]; [руб./ч].
В полученной ТЗ условие баланса (4.2) не выполняется, т.к. суммарный фонд времени станков больше, чем это необходимо для выполнения плана по выпуску всех тканей (260 ч > 200 ч). Введем фиктивный столбец и запишем все пересчитанные параметры РЗ в транспортную матрицу (см. табл.6.3). Фиктивные тарифы для упрощения приравняем к нулю.
Таблица 3.Транспортная матрица задачи №1
Станки |
Ткани |
Фонд времени, ч |
|||||
В1 |
В2 |
В3 |
В4 |
ВФ |
|||
А1 |
48 |
30 |
54 |
42 |
0 |
90 |
|
А2 |
72 |
60 |
72 |
42 |
0 |
110 |
|
А3 |
144 |
90 |
90 |
84 |
0 |
60 |
|
Объем выпуска , ч |
50 |
30 |
100 |
20 |
60 |
Руководство для использования
Для запуска программы следует нажать клавишу Enter, после чего появится следующее окно. Следуя указаниям программы необходимо ввести соответствующие данные для получения конечного результата:
Рис
После ввода коэффициентов производительностей станков необходимо ввести производительность первого станка по выпуску всех видов тканей:
Рис
Затем на экране появится расчет производительностей остальных станков основанных на знании коэффициентов производительностей:
Рис
Затем необходимо ввести себестоимость производства каждого вида ткани на каждом станке:
Рис
Затем вводятся фонды рабочего времени и планируемые объемы выпуска:
Рис
Потом выводится результат: сколько часов должен работать каждый станок по выпуску соответствующей ткани:
Рис
Список использованной литературы
1. Стивен Прата, «Язык программирования С++».
2. Б. М. Владимирский, А. Б. Горстко, Я. М. Ерусалимский, «Математика».
3. Материал с математического портала www.allmath.ru.
4. Подбельский В. В. «Язык С++».
5. Скотт Мейерс. «Наиболее эффективное использование С++».
Текст программы
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream.h>
#include <conio.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
int n, m, t;
float l[10][10], c[10][10], a[10], b[10];
float l1[10], max;
cout<<"Vvedite kolichestvo stankov: ";
cin>>n;
cout<<"Vvedite kolichestvo tipov vipuskaemoy tkani: ";
cin>>m;
cout<<"\n";
for (int i=1; i<=n; i++)
{
cout<<"Vvedite koeffitsient proizvoditelnosti "<<i<<"-go stanka: ";
cin>>l1[i];
}
cout<<"\n";
clrscr();
for (int j=1; j<=m; j++)
{
cout<<"Vvedite proizvoditelnost 1-go stanka\
\npo "<<j<<"-mu vidu tkani: ";
cin>>l[1][j];
}
clrscr();
cout<<"\n";
for (int i=2; i<=n; i++)
{
cout<<"\n";
for (int j=1; j<=m; j++)
{
l[i][j]=l[1][j]/(l1[1]/l1[i]);
cout<<"Proizvoditelnost "<<i<<"-go stanka\
\npo "<<j<<"-mu vidu tkani (m/ch): "<<l[i][j]<<endl;
}
}
getch();
clrscr();
cout<<"\n";
for (int i=1; i<=n; i++)
{
cout<<"\n";
for (int j=1; j<=m; j++)
{
cout<<"Vvedite sebestoimost "<<j<<"-go vida tkani\
\nna "<<i<<"-m stanke (rub/m): ";
cin>>c[i][j];
}
}
getch();
clrscr();
cout<<"\n";
for (int i=1; i<=n; i++)
{
cout<<"Vvedite fond rabochego vremeni "<<i<<"-go stanka (ch): ";
cin>>a[i];
}
cout<<"\n";
for (int j=1; j<=m; j++)
{
cout<<"Vvedite planiruemiy obyem vipuska "<<j<<"-y tkani (m): ";
cin>>b[j];
}
clrscr();
float aL[10];
for (int i=1; i<=n; i++)
{
aL[i]=1/(l1[1]/l1[i]);
// cout<<aL[i]<<" ";
}
int a1[10];
for (int i=1; i<=n; i++)
{
a1[i]=aL[i]*a[i];
// cout<<a1[i]<<" ";
}
cout<<"\n";
int b1[10];
for (int j=1; j<=m; j++)
{
b1[j]=b[j]/l[1][j];
// cout<<b1[j]<<" ";
}
cout<<"\n";
int c1[10][10];
for (int i=1; i<=n; i++)
for (int j=1; j<=m; j++)
c1[i][j]=c[i][j]*l[1][j];
clrscr();
/*int x=0, y=0;
for (int i=1; i<=n; i++)
{
x=1;
y++;
for (int j=1; j<=m; j++)
{
gotoxy(x+=5,y);
cout<<c1[i][j];
}
} */
int xs[10][10];
int matr[10][10];
int min=xs[1][1];
int p, q;
for (int i=1; i<=n; i++)
for (int j=1; j<=m; j++)
matr[i][j]=0;
int s1=0;
for (int i=1; i<=n; i++)
s1=s1+a1[i];
int s2=0;
for (int j=1; j<=m; j++)
s2=s2+b1[j];
if (s1>s2)
{
for (int i=1; i<=n; i++)
for (int j=1; j<=m; j++)
xs[i][j]=c1[i][j];
int j=m+1;
for (int i=1; i<=n; i++)
xs[i][j]=0;
b1[m+1]=s1-s2;
// ----------------
while (min!=10000)
{
min=10000;
for (int i=1; i<=n; i++)
for (int j=1; j<=m+1; j++)
if (xs[i][j]<min)
{
min=xs[i][j];
p=i;
q=j;
}
if ((b[q]==0) || (a[p]==0))
xs[p][q]=10000;
else
if (a[p]>b[q])
{
matr[p][q]=b[q];
a[p]=a[p]-b[q];
b[q]=0;
xs[p][q]=10000;
}
else
{
matr[p][q]=a[p];
b[q]=b[q]-a[p];
a[p]=0;
xs[p][q]=10000;
}
}
// ----------------
}
else if (s1<s2)
{
for (int i=1; i<=n; i++)
for (int j=1; j<=m; j++)
xs[i][j]=c1[i][j];
int i=n+1;
for (int j=1; j<=m; j++)
xs[i][j]=0;
a1[n+1]=s2-s1;
// ----------------
while (min!=10000)
{
min=10000;
for (int i=1; i<=n+1; i++)
for (int j=1; j<=m; j++)
if (xs[i][j]<min)
{
min=xs[i][j];
p=i;
q=j;
}
if ((b[q]==0) || (a[p]==0))
xs[p][q]=10000;
else
if (a[p]>b[q])
{
matr[p][q]=b[q];
a[p]=a[p]-b[q];
b[q]=0;
xs[p][q]=10000;
}
else
{
matr[p][q]=a[p];
b[q]=b[q]-a[p];
a[p]=0;
xs[p][q]=10000;
}
}
// ----------------
}
else
for (int i=1; i<=n; i++)
for (int j=1; j<=m; j++)
xs[i][j]=c1[i][j];
// ----------------
while (min!=10000)
{
min=10000;
for (int i=1; i<=n; i++)
for (int j=1; j<=m; j++)
if (xs[i][j]<min)
{
min=xs[i][j];
p=i;
q=j;
}
if ((b[q]==0) || (a[p]==0))
xs[p][q]=10000;
else
if (a[p]>b[q])
{
matr[p][q]=b[q];
a[p]=a[p]-b[q];
b[q]=0;
xs[p][q]=10000;
}
else
{
matr[p][q]=a[p];
b[q]=b[q]-a[p];
a[p]=0;
xs[p][q]=10000;
}
}
// ----------------
/*int x=0, y=0;
for (int i=1; i<=n; i++)
{
x=1;
y++;
for (int j=1; j<=m+1; j++)
{
gotoxy(x+=5,y);
cout<<xs[i][j];
}
}
cout<<endl;
for (int j=1; j<=m+1; j++)
cout<<" "<<b1[j]; */
cout<<"Reshenie: skolko metrov dolzhen proizvodit kakoy tkani kazhdiy stanok\
\n(stroki - stanki, stolbtsi - vidi tkaney)";
int x=0, y=0;
for (int i=1; i<=n; i++)
{
x=1;
y++;
for (int j=1; j<=m; j++)
{
gotoxy(x+=5,y);
cout<<matr[i][j];
}
}
getch();
return 0;
}
//---------------------------------------------------------------------------
Размещено на Allbest.ru
Подобные документы
Экзаменационные задачи по математике: расчет процентной концентрации раствора; решение уравнений и неравенств; задачи по геометрии, планиметрии и стереометрии; определение тригонометрических функций, вероятности события; нахождение экстремумов функции.
задача [493,9 K], добавлен 28.12.2011Графическое решение задачи по определению оптимальных суточных объемов производства радиоприемников разной конструкции. Исследование данных моделей на чувствительность с целью оценки предельного возрастания дефицитного ресурса, ведущего к росту прибыли.
задача [195,9 K], добавлен 21.08.2010Вычисление накопленных частостей и построение эмпирических функций вероятности отказов, безотказной работы пресса для силикатного кирпича и гистограмму плотности распределения. Статистическая оценка параметров теоретического распределения ресурса.
контрольная работа [137,8 K], добавлен 11.01.2012Математическое моделирование и особенности задачи распределения. Обоснование и выбор метода решения. Ручное решение задачи (венгерский метод), а также с использованием компьютера. Формулировка полученного результата в сопоставлении с условием задачи.
курсовая работа [383,9 K], добавлен 26.05.2010Теоретические положения симплекс-метода и постоптимального анализа. Построение математической модели задачи. Нахождение ценностей ресурсов. Определение относительных и абсолютных диапазонов изменения уровней запасов дефицитных и недефицитных ресурсов.
курсовая работа [86,7 K], добавлен 19.11.2010Задачи, приводящие к дифференциальным уравнениям. Теорема существования, единственности решения задачи Коши. Общее решение дифференциального уравнения, изображаемое семейством интегральных кривых на плоскости. Способ нахождения огибающей семейства кривых.
реферат [165,4 K], добавлен 24.08.2015Первая краевая задача и граничное условие 1-го рода. Задачи с однородными граничными условиями. Задача с главными неоднородными условиями и ее вариационная постановка. Понятие обобщенного решения. Основные условия сопряжения и условия согласования.
презентация [71,8 K], добавлен 30.10.2013Занимательные задачи, загадки в забавной форме, в которых фигурируют мишки, котики, собачки, девочки и мальчики. Загадки в стихах известных авторов: Б. Заходера, Н. Разговорова, Г. Новицкой, В. Кудрявцевой. Логические задачи в такой же стихотворной форме.
задача [12,9 K], добавлен 19.12.2008Принцип максимума Понтрягина. Необходимое и достаточное условие экстремума для классической задачи на условный экстремум. Регулярная и нерегулярная задача. Поведение функции в различных ситуациях. Метод Ньютона решения задачи, свойства его сходимости.
курсовая работа [1,4 M], добавлен 31.01.2014Применение метода дискретной регуляризации Тихонова А.Н. для нахождения решения обратной задачи для однородного бигармонического уравнения в круге. Сведение дифференциальной задачи к интегральному уравнению; корректно и некорректно поставленные задачи.
курсовая работа [280,2 K], добавлен 20.10.2011