Регистрация не е нужна, освен при създаване на тема в "Задача на седмицата".

Линейно програмиране

Линейно програмиране

Мнениеот todorovapetya6 » 15 Май 2023, 15:24

В таблицата по долу са дадени предполагаемите доходи за всички възможни комбинации за изпълнение на четири работи от три работника. Направете разпределение на работите, така че доходите от тяхното изпълнение да бъде максимален.
Работи A B C
1 700 600 450
2 800 300 200
3 700 400 300
4 500 800 799
todorovapetya6
Нов
 
Мнения: 5
Регистриран на: 15 Май 2023, 15:18
Рейтинг: 0

Re: Линейно програмиране

Мнениеот Румен Симеонов » 15 Май 2023, 23:08

todorovapetya6 написа:В таблицата по долу са дадени предполагаемите доходи за всички възможни комбинации за изпълнение на четири работи от три работника. Направете разпределение на работите, така че доходите от тяхното изпълнение да бъде максимален.
Работи A B C
1 700 600 450
2 800 300 200
3 700 400 300
4 500 800 799

Струва ми се, че не е съвсем корекно/ясно употребен израза ,,В таблицата по долу са дадени предполагаемите доходи за всички възможни комбинации за изпълнение на четири работи от три работника.". Предполагам,. че имате предвид комбиноциите (работник, работа), като съответно е даден съответния предполагаем дакод за всяка такава една комбинация, при условие, че работникът извърши цялата работа. Моля потвърдете. Предполагам също, че ,,работите" са делими на всевъзможни части от тях идентифицируеми, всяка от частите, с коефициент по-малък или равен от/на 1, и, че търсеното разпределение на работите по рацботници се състои и може да се укаже чрез ккоефинвциенти - по един за всякола комбинация (работник, работа), например - коефициент $B_3$ показващ каква част от работата 3 трябва да бъде разпределена на работника $B$. Моля авторът на задачата да потвърди или отхвърли, че за такова търсено разпределение става въпрос, или, ако не потвърди това, да каже че работите са неделими и ще се разпределят нацяло - всяка една на идин работник цялата.
()(())(()())((()))(()()())(()(()))((())())((()()))
0 1 01 11 001 101 011 111
[ ] 0 1 x ~ & \
Румен Симеонов
Напреднал
 
Мнения: 282
Регистриран на: 02 Апр 2023, 09:53
Рейтинг: 20

Re: Линейно програмиране

Мнениеот Румен Симеонов » 16 Май 2023, 06:44

Очевидно (без линейно програмиране):
Работа $\rightarrow$ Работник:
$\space\space\space\space\space\space\space\space\space\space1\rightarrow$A
$\space\space\space\space\space\space\space\space\space\space2\rightarrow$A
$\space\space\space\space\space\space\space\space\space\space3\rightarrow$A
$\space\space\space\space\space\space\space\space\space\space4\rightarrow$B
()(())(()())((()))(()()())(()(()))((())())((()()))
0 1 01 11 001 101 011 111
[ ] 0 1 x ~ & \
Румен Симеонов
Напреднал
 
Мнения: 282
Регистриран на: 02 Апр 2023, 09:53
Рейтинг: 20

Re: Линейно програмиране

Мнениеот todorovapetya6 » 16 Май 2023, 14:32

Грешката е моя.
В таблицата по долу са дадени предполагаемите доходи за всички възможни комбинации за изпълнение на четири работи от три работника. Направете разпределение на работите, така че доходите от тяхното изпълнение да бъде максимален.

Работници
Работи A B C
1 700 600 450
2 800 300 200
3 700 400 300
4 500 800 799
todorovapetya6
Нов
 
Мнения: 5
Регистриран на: 15 Май 2023, 15:18
Рейтинг: 0

Re: Линейно програмиране

Мнениеот peyo » 16 Май 2023, 15:00

todorovapetya6 написа:Грешката е моя.
В таблицата по долу са дадени предполагаемите доходи за всички възможни комбинации за изпълнение на четири работи от три работника. Направете разпределение на работите, така че доходите от тяхното изпълнение да бъде максимален.

Работници
Работи A B C
1 700 600 450
2 800 300 200
3 700 400 300
4 500 800 799


Ще направим няколко предположения за това какво търсим и ще решим задачата с Python използвайки сбит и малко нечетлив код:

Код: Избери целия код
from itertools import permutations
D = {1: [700, 600, 450],
   2: [800, 300, 200],
   3: [700, 400, 300],
   4: [500, 800, 799]}
A,B,C = None, None, None
max_profit = 0
for jobs in permutations(D, 3):
   profit = sum( [D[jobs[i]][i] for i in range(3) ])
   if profit > max_profit:
      max_profit = profit
      A,B,C=jobs
print('profit:',max_profit, ', A:',A,', B:',B,', C:',C)


profit: 2199 , A: 2 , B: 1 , C: 4
peyo
Математик
 
Мнения: 1759
Регистриран на: 16 Мар 2019, 09:35
Местоположение: София
Рейтинг: 656

Re: Линейно програмиране

Мнениеот Румен Симеонов » 16 Май 2023, 15:00

todorovapetya6 написа:Грешката е моя.
В таблицата по долу са дадени предполагаемите доходи за всички възможни комбинации за изпълнение на четири работи от три работника. Направете разпределение на работите, така че доходите от тяхното изпълнение да бъде максимален.

Работници
Работи A B C
1 700 600 450
2 800 300 200
3 700 400 300
4 500 800 799

Признавате Ваша грешка, но повтаряте първоначално написаното от Вас!
Независимо от моите забележки по формулировката, аз съм дал и отговор (като подразбирам очевидно решение, в което, като обосновка на отговора, само и единствено се споменават фактите, че:
(1) 700 е най-голямата стойност в първия ред и е под работник А,
(2) 800 е най-голямата стойност във втория ред и е под работник А,
(3) 700 е най-голямата стойност в третия ред и е под работник А,
(8) 800 е най-голямата стойност в четвъртия ред и е под работник B).
Какво повече Ви трябва от това?

Ако във редовете на твоята таблица не са отделните работи, а са идентификатори (1, 2, 3, 4) за всевъзможни, по някакъв таен критерии за възможност, разпределения на работите, а в стълбовете на таблицата се задава колко ще бъде ползата от съответния работниик при това разпределение, то тогава за всяко възможно разпределение общата печалба ще е сумата от числата в съответния ред, която сума е най-голяма за четвъртия ред и наиститна е 2199, както и peyo, за по-сложно, я намира с програма, а аз ръчно - чрез сумиране числата във всеки ред и намиране на най-голямата от сумите. Обаче пък, макар и посочвайки 4-тия ред, така не се посочва, кой работник коя работа (или част от работа) ще свърши, а само каква ще е ползата от него, при съответното ,,тайно“ (от 4-тия ред на таблицата) разпределение на работите по работници. Следователно, това не може да се счита за решение на задачата, в която се изисква ,,Направете разпределение на работите“.
()(())(()())((()))(()()())(()(()))((())())((()()))
0 1 01 11 001 101 011 111
[ ] 0 1 x ~ & \
Румен Симеонов
Напреднал
 
Мнения: 282
Регистриран на: 02 Апр 2023, 09:53
Рейтинг: 20


Назад към Оптимиране



Кой е на линия

Регистрирани потребители: Google [Bot]

Форум за математика(архив)