how do i create a binary [0,1]?

7 次查看(过去 30 天)
how can i write to declare that x will be variable for binary 0,1
if x(i,j)=1 ;
else (x(k,q)= 0;
end;
i want to put it in my coding below
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);

回答(2 个)

Image Analyst
Image Analyst 2018-5-16
Do you mean like this???
% x(i, j) = 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];
x = zeros(size(f));
[rows, columns] = size(f)
for row = 1 : rows
for col = 1 : columns
facility_i = col;
facility_k = row;
if f(row, col) == facility_k
x(row, col) = 1;
end
end
end
x
Not exactly what i, j, and k mean. How are they related to row and column. If you say xij, then i=row and j=column, but then in your flow matrix explanation you say i is column, not row and you don't even mention j - you mention k which is row, but i was row. I'm confused (or you are).
  1 个评论
sharifah shuthairah syed abdullah
im sorry...
i and k represent facilities in flow matrix, j and q represent location in distance matrix ..
x(i,j) mean that x will be equal to 1 if i (facility) is assign in j (location) ..
x(i, j) = 1 if facility i is assigned to location j and if otherwise, xij = 0,
so otherwise mean that if x(k,q) =1 , x(i,J) will be 0...
for example
Min =(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 )...
I want to *xi1,j1 * xk1,q1 to be 0 or 1.. if i choose i1, j1=1 the other will bw 0.. for example i2,j1 will be equal to 9

请先登录,再进行评论。


semi legend
semi legend 2018-11-11
编辑:semi legend 2018-11-11
imagine if you have 5 virables , and you want to set the last 2 either on of them 0 or 1
you could do it, but that depends in what you want for that problem "to be or not to be"
[Inf;Inf;Inf;1;1]; to be % it will force (4) and (5) to be binary by 1 or 0 or [Inf;Inf;Inf;0;0]; or not to be
inf ; means array of infinite ( integers)
hope that at least helps

类别

Help CenterFile Exchange 中查找有关 Get Started with MATLAB 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by