Wszystkie ograniczenia równościowe są następujące:
x1 + x2 + x3 + x4 = 1600
30x1 + 60x2 + 70x3 + 80x4 = 62.5*(x1 + x2 + x3 + x4)
30x1 + 40x2 + 0x3 + 20x4 = 18.75*(x1 + x2 + x3 + x4)
Cel: 45x1 + 54x2 + 42x3 + 36x4 -> min.
Przeniosłem wszystko na lewą stronę równania i skorzystałem z linprog, gdzie:
Aeq = [1 1 1 1; -32.5 -2.5 7.5 17.5; 11.25 21.25 -18.75 1.25];
beq = [1600; 0; 0];
f = [45 54 42 36];
linprog(f, [], [], Aeq, beq)
Niestety, zamiast otrzymać wektor jednostek produktów (składajacy się na sumę 1600), otrzymałem następujący błąd:
Exiting: One or more of the residuals, duality gap, or total relative error
has grown 100000 times greater than its minimum value so far:
the dual appears to be infeasible (and the primal unbounded).
(The primal residual < OptimalityTolerance=1.00e-08.)
ans =
1.0e+28 *
0.5520
-1.0120
-0.7360
1.1960
Mógłby ktoś powiedzieć, co tutaj poprawić? Wydaje mi się dosłownie wszystko dobrze (ewentualnie źle zapisałem ograniczenia równościowe, w razie potrzeby mogę podać treść zadania, ale nawet jeśli, powinien być zwrócony w miarę sensowny wynik).