如何创建二进制文件 [0,1]?



我想声明 x 对于二进制 0,1 将是变量

I 和 K 表示流矩阵中的设施点,j 和 q 表示距离矩阵中的位置。

x(i,j( 表示如果在 j(位置(中分配 i(设施(,则 x 将等于 1。

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 * xi1,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);

通过使用 recperm

此接收器用于在编码中细化 0,1

最新更新