Dopasowanie optymalnej wartości

0

Hej, mam taki problem:
Jest pewna lista składników posiadająca pewne parametry dla danej ilości składnika (np. dla 100g) np:

  1. Składnik A: p1 = 3, p2 = 4, p3 = 8
  2. Składnik B: p1 = 6, p2 = 2, p3 = 5
  3. Składnik C: p1 = 8, p2 = 9, p3 = 6

Składniki można mnożyć uzyskując ich wielokrotności (załóżmy że tak jak w sklepie kupujemy na wadze daną ilość składnika).

Problem jest taki, że potrzebujemy uzyskać konkretne wartości sum poszczególnych parametrów (dajmy na to z jakąś tolerancją np. 5% w górę i w dół) np.

Suma p1 musi równać się 25 +- 5%
Suma p2 musi równać się 30 +- 5%
Suma p3 musi równać się 50 +- 5%

Musimy odnaleźć takie wagi poszczególnych składników A, B, C aby jak najlepiej dopasować do wartości sum poszczególnych parametrów p1, p2, p3.

I teraz pytanie: Czy wiecie o jakichś algorytmach rozwiązujących przedstawiony problem o których mógłbym poczytać w celu jego rozwiązania? Może macie jakieś pomysły na rozwiązanie takiego problemu?

Pozdrawiam ;)

1

Zwykły układ równań z 3 niewiadomymi

http://www.wolframalpha.com/input/?i=%7B+3*x%2B6*y%2B8*z%3D25%3B+4*x%2B2*y%2B9*z%3D30%3B+8*x%2B5*y%2B6*z%3D50+%7D

Waga składnika A: 1195 / 221 * 100g
B: 70 / 221 * 100g
C: 190 / 221 * 100g

0

A jeżeli będziemy takich składników mieli np. 10? Też uda się to rozwiązać układem 10-ciu równań z 3-ma niewiadomymi?
Liczba parametrów jest stała i wynosi 4, lecz ilość składników może się zmieniać

0

Użyłem narzędzia Solver z programu Calc. Ma ono kilka algorytmów, ja użyłem DEPS Evolutionary Algorithm.
Na danych z przykładu i kryterium minimalizacja |p1-25|+|p2-30|+|p3-50| dostałem takie rozwiązania:

5         1         1          (dodatkowy warunek, że szukamy rozwiązań całkowitych)
5,407    0,316   0,859
0

Żeby było bardziej zrozumiale to podam może konkretny przykład.
Mamy program do układania diety.

I listę składników o następujących makroskładnikach odżywczychv(na 100g produktu):
B-białko, T-tłuszcz, W-węglowodany
kurczak: B-21, T-4, W-0
kasza: B-14, T-1, W-72
warzywa: B-2, T-0, W-4

Z tych produktów musimy skomponować posiłek, który ma się składać z:
-60g białka
-115g węglowodanów
-16g tłuszczy

I problemem jest jak najbardziej optymalne dobranie wagowo poszczególnych składników posiłku aby otrzymać najbardziej przybliżoną wartość makroskładników w posiłku.

Czyli algorytm po wprowadzeniu produktów i ich wartości odżywczych, oraz sum wartości dla posiłku poda nam coś takiego:
użyj tyle i tyle gram kurczaka, tyle gram kaszy i tyle gram warzyw

Mam nadzieję że napisałem w miarę zrozumiale ;)

1

No to mamy już słowo klucz, którego sam użyłeś: "optymalizacja", która jest bardzo dużą częścią informatyki.

Ja tam nie jestem ekspertem, ale jak widzę układ równań liniowych opisujących ograniczenia i funkcję celu będącą jakimś maksimum, to kojarzy mi się to z programowaniem liniowym, a to z metodą simpleks.

1

Wydaje mi się, że podałem już nazwę algorytmu, który prowadzi do celu: DEPS Evolutionary Algorithm.

0

Dzięki wszystkim za naprowadzenie w poszukiwaniu rozwiązania. na pewno przydadzą się wasze rady. Dziękuję ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1