Необходимо максимизировать доход за счет оптимизации распределения ресурсов - PullRequest
0 голосов
/ 22 июня 2019

Предположим, что есть 5 компонентов, и каждый компонент имеет случайную поставку:

-------------------
| Comp | Quantity |
|------|----------|
| C1   | 500      |
| C2   | 700      |
| C3   | 400      |
| C4   | 1000     |
| C5   | 850      |
-------------------

И моя фабрика может производить 25 различных продуктов, каждый из которых нуждается в различном количестве каждого компонента:

--------------------------------------------
| Product | Price | C1 | C2 | C3 | C4 | C5 |
|---------|-------|----|----|----|----|----|
| P1      | $450  | 6  | 7  | 2  | 9  | 4  |
| P2      | $300  | 8  | 5  | 3  | 3  | 7  |
| P3      | $100  | 2  | 4  | 9  | 4  | 6  |
| P4      | $500  | 4  | 1  | 0  | 9  | 8  |
| ..      | ..    | .. | .. | .. | .. | .. |
--------------------------------------------

Мне нужно определить, сколько каждого продукта мне нужно построить, чтобы максимизировать конечный доход, не превышая при этом поставки каждого компонента?

Лучший алгоритм, который я написал до сих порпроходит по каждому продукту и находит максимальное количество, которое может быть произведено, а затем берет продукт с наибольшим доходом (цена * максимальное количество), затем удаляет этот продукт из списка и вычитает это количество компонентов из поставки, затем повторяет процессс остальными продуктами.

Вот псевдокод, который у меня есть:

foreach (var product in productList)
{
    product.MaxQty = MaxQty(product, supply);
    product.Revenue = product.Price * product.MaxQty;
}
// Take product with highest Revenue;
// Update supply;
// Repeat the loop;

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

...