>> game2('matrix')
PayMatrix =
0 -300 -100 100 300
300 0 -200 0 200
100 200 0 -100 100
-100 0 100 0 0
-300 -200 -100 0 0
Для отопления коттеджа в зимний период используется уголь, цена на который зависит от времени года и характера зимы. Летом тонна угля стоит 7.5 ден. ед., в мягкую зиму – 8.5, в обычную – 9.0, а в холодную – 9.5. Расход угля в отопительный сезон полностью определяется характером зимы: на мягкую зиму достаточно 6 тонн, на обычную требуется 7, а в холодную расходуется 8. Арендатор может запасать топливо с лета и, в случае необходимости, пополнять его зимой. Однако продать неиспользованный уголь возможности не будет.
Примечание: Программа, код которой приведен ниже, рассчитывает платежную матрицу данной задачи с той точки зрения, что владелец котеджа может летом закупить от 0 до 8 тонн. В зависимости от объема, который будет куплен летом расчитывается сумма затрат на данный уголь плюс который потребуется к нему. Из результата вычитаем идеальное значение затрат — цена за уголь если его на всю зиму купить летом, и итог записывается в соответствующую ячейку матрицы.
function game3
SumCost = 7.5;
WinCost = [8.5 9.0 9.5];
WinWeight = [6 7 8];
A = 1:numel(WinCost);
B = 0:max(WinWeight);
for i = 1:numel(A)
for j = 1:numel(B)
S = SumCost*WinWeight(A(i));
PayMatrix(j,i) = S - B(j)*SumCost - (WinWeight(A(i)) - B(j))*WinCost(A(i))* ((WinWeight(A(i)) - B(j))>0);
end
end
PayMatrix
end
Результаты:
>> game3
PayMatrix =
-6.0000 -10.5000 -16.0000
-5.0000 -9.0000 -14.0000
-4.0000 -7.5000 -12.0000
-3.0000 -6.0000 -10.0000
-2.0000 -4.5000 -8.0000
-1.0000 -3.0000 -6.0000
0 -1.5000 -4.0000
-7.5000 0 -2.0000
-15.0000 -7.5000 0
Задание 4.
1. Существование единственного решения:
Графическое решение:
Решение с использованием linprog:
f = [-1 -1]';
A = [1 0; 0 1];
b = [2 2]';
lb = [0 0];
[x fv] = linprog(f,A,b,[],[],lb)
Optimization terminated.
x =
2.0000
2.0000
fv =
-4.0000
2. Существование бесконечного числа решений
Графическое решение:
Решение с использованием linprog:
f = [-1 -1]';
A = [1 1; -1 -1];
b = [1 -1/2]';
lb = [0 0];
[x fv] = linprog(f,A,b,[],[],lb)
Optimization terminated.
x =
0.5000
0.5000
fv =
-1.0000
3. Отсутствие решений – область пустое множество
Графическое решение:
Решение с использованием linprog:
f = [-1 -1]';
A = [1 0; 0 1;-1 0];
b = [0 2 -2]';
lb = [0 0];
[x fv] = linprog(f,A,b,[],[],lb)
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 primal appears to be infeasible (and the dual unbounded).
(The dual residual < TolFun=1.00e-008.)
x =
1.9803
2.2357
fv =
-4.2160
f = [-1 -1]';
A = [-1 -1; -1 -1];
b = [-1/2 -1]';
lb = [0 0];
[x fv] = linprog(f,A,b,[],[],lb)
Exiting: One or more of the residuals, duality gap, or total relative error
has stalled:
the dual appears to be infeasible (and the primal unbounded).
(The primal residual < TolFun=1.00e-008.)
x =
1.0e+011 *
1.3835
1.3835
fv =
-2.7670e+011