2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Задача линейного программирования. Помогите решить
Сообщение03.02.2016, 12:19 
Здравствуйте.
Следующую задачу поставили в универе с комментарием "простая задача на линеное программирование".Все, что необходимо-правильно формализовать ее. Думаю второй день, но у меня в любом случае получается задача линейно-кусочного программирования, а это уже совсем другая история. Преподаватель отказывается комментировать и настаивает на том, что задача очень простая.

Вот ее постановка:
"Фирма собирает персональные компьютеры для частных клиентов. На следующие 4 квартала имеются заказы на 400,700,500 и 200 комп. соответственно. Фирма может производить больше комп. чем указано в заказах, но в таком случае приходится платить 100 долларов за хранение одного комп. в течении квартала. Увеличение производства в следующем квартале, по сравнению с предыдущим, приводит к дополнительному набору работников, что повышает себестоимость одного компьютера на 60 долларов. При уменьшении производства в следующем квартале, по сравнению с предыдущим, придется прибегнуть к сокращению персонала, что тоже увеличивает стоимость одного комп. на 50 долларов. Как организовать сборку компьютеров, чтобы удовлетворить все заказы?"

В моей формализации переменные обозначают количество компьютеров, которое необходимо произвести в 1, 2, 3 и 4 кварталах года соответственно. А коэффициенты в критериальной функции-разрывные кусочно-линейные функции, которые зависят от соотношения значений соседних переменных.

Получившаяся критериальная функция:
${J = u_2\cdot c_1(u_1,u_2)+u_3\cdot c_1(u_2,u_3)+u_4\cdot c_1(u_3,u_4)+100\cdot (c_2(u_1)+c_3(u_2)+c_4(u_3)+c_5(u_4))}
$
где
$c_1(a,b)
= \begin{cases}
60,&  a < b  \\
0, & a=b  \\
50, & a>b 
\end{cases}$

$c_2(a)
= \begin{cases}
400-a, & a>400\\
0, & a<400
\end{cases}$
$c_3(a)
= \begin{cases}
700-a, & a>700\\
0, & a<700
\end{cases}$
$c_4(a)
= \begin{cases}
500-a, & a>500\\
0, & a<500
\end{cases}$
$c_5(a)
= \begin{cases}
200-a, & a>200\\
0, & a<200
\end{cases}$
Прошу помочь с определением типа этой задачи

 
 
 
 Posted automatically
Сообщение03.02.2016, 12:26 
 i  Тема перемещена из форума «Помогите решить / разобраться (М)» в форум «Карантин»
по следующим причинам:

- отсутствуют собственные содержательные попытки решения задач(и).

Тег CODE как-то не по существу. Лучше убрать.

Исправьте все Ваши ошибки и сообщите об этом в теме Сообщение в карантине исправлено.
Настоятельно рекомендуется ознакомиться с темами Что такое карантин и что нужно делать, чтобы там оказаться и Правила научного форума.

 
 
 
 Posted automatically
Сообщение03.02.2016, 16:04 
 i  Тема перемещена из форума «Карантин» в форум «Помогите решить / разобраться (М)»

 
 
 
 Re: Задача линейного программирования. Помогите решить
Сообщение04.02.2016, 23:12 
cofree

1. В вашей целевой функции есть ошибка (в знаке: вторая группа слагаемых -отрицательна)
2. Вообще то эта задача - задача целочисленного программирования. Так что, решая ее методами ЛП, не надо удивляться, если получится, что в первом квартале надо произвести 417 с половиной компов.
3. Вообще то эта задача - задача выпуклого программирования... Мало Вам не покажется, ибо экстремум может случиться не на границе области (как в ЛП) а в нутре...
4. Но если уж очень хочется (а вашему преподу, видимо, хочется), то да, таки можно ее сделать по ЛП. Но придется попотеть. Именно,
разбейте неравенствами Вашу область изменения параметров на части (типа $u_1\leqslant u_2,......, u_4 \geqslant 200$, всего то и надо рассмотреть $2^7 = 128$ случаев, делов то), и тогда в каждой из областей все будет хорошо, и задача решится. А потом из всех найденных решений выберите минимальное. На самом деле это не так уж страшно - не вы же будете напрягаться, а комп - а он ведь железный...Токо придется и организацию перебора поручить железному дураку, так что, повторяю, програмку написать будет не так просто. И будьте внимательны : некоторые области могут оказаться пустыми - и это, как и выбор начальной точки (симплекс-метод, да?) тоже надо заложить в прогу.

 
 
 [ Сообщений: 4 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group