Я хочу объявить, что x будет переменным для двоичного 0,1
i и k представляют объекты в матрице потока, j и q представляют местоположение в матрице расстояний.
x (i, j) означает, что x будет равен 1, если i (средство) назначено в j (местоположение) ..
x (i, j) = 1, если средство i назначено местоположению j и еслив противном случае xij = 0, в противном случае это означает, что если x (k, q) = 1, x (i, J) будет 0 ...
пример ручного расчета
Мин= (f i1, k1 * d j1, q1 * x i1, j1 * x k1, q1) + (f i1, k1 * d j1, q2 * x i1, j1 * x k1, q2) + (f i1, k1* d j1, q3 * x i1, j1 * x k1, q3) ....
(0 * 0 * 1 * 1) + (0 * 6 * 1 * 0) + (0 * 8* 1 * 0) .....
Я хочу * xi1, j1 * xk1, q1, чтобы быть 0 или 1 .. если я выберу i1, j1 = 1, другой будет 0 .. дляпример i2, j1 будет равен 0
ниже приведена кодировка
clc;
clear;
%sum sum sum sum(fik*djq*xij*xkq)
%i,k= facilities
%j,q= location
%f(i,k)= flow between facilities i and k
%d(j,q)= distance between locations j and q
%xij = 1 if facility i is assigned to location j and if otherwise, xij = 0
% Flow matrix: flow assigning facility i (column) to facility k (row)
f = [0 5 7 9;
5 0 4 6;
7 4 0 3;
9 6 3 0];
%Distance matrix: distance assigning location j (column) to location q (row)
d = [0 6 8 9;
6 0 5 1;
8 5 0 2;
9 1 2 0];
z= 0;
nf= 4;
nd= 4;
for i=1:nf
for j=1:nf
for k=1:nd
for q=1:nd
z = min('z','f(i,k)*d(j,q)*x(i,j)*x(k,q)');
end
end
end
end
%Constraints
%The first set of constraints requires that each facility gets exactly one
%location, that is for each facility, the sum of the location values
%corresponding to that facility is exactly one
Constraints.constr1 = sum(x,2) == 1;
%The second set of constraints are inequalities. These constraints specify
%that each office has no more than one facility in it.
Constraints.constr2 = sum(x,1) == 1;
disp (z);