Материал: 27_Карныгин_Владимир_01

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Платежная матрица:

>> 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

Задание 3.

Для отопления коттеджа в зимний период используется уголь, цена на который зависит от времени года и характера зимы. Летом тонна угля стоит 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

4. Отсутствие решений – неограниченная область

Графическое решение:

Решение с использованием linprog:

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