Unable to resolve the name cvx.Variable

% Define distance matrix (10x10)
distances = [
0, 3, 0, 0, 0, 0, 0, 0, 0, 0;
3, 0, 4, 0, 0, 0, 0, 0, 0, 0;
0, 4, 0, 5, 0, 0, 0, 0, 0, 0;
0, 0, 5, 0, 6, 0, 0, 0, 0, 0;
0, 0, 0, 6, 0, 7, 0, 0, 0, 0;
0, 0, 0, 0, 7, 0, 8, 0, 0, 0;
0, 0, 0, 0, 0, 8, 0, 9, 0, 0;
0, 0, 0, 0, 0, 0, 9, 0, 10, 0;
0, 0, 0, 0, 0, 0, 0, 10, 0, 11;
0, 0, 0, 0, 0, 0, 0, 0, 11, 0;
];

% Define capacity matrix (10x1)
capacities = [
15;
20;
25;
20;
30;
25;
30;
15;
20;
10;
];

% Define source and destination nodes
source_node = 1;
destination_node = 10;

% Define decision variables for edge selection
edges = cvx.Variable(size(distances));

% Define objective function: minimize total distance
objective = sum(sum(distances .* edges));

% Define constraints
constraints = [
sum(edges(source_node, :)) == 1, % Outgoing edges from source
sum(edges(:, destination_node)) == 1 % Incoming edges to destination
];

for node = 1:size(distances, 1)
constraints = [constraints, sum(edges(node, :)) <= capacities(node)]; % Node capacity constraints
end

% Solve the optimization problem using CVX
cvx_begin quiet
variable edges(size(distances));
minimize(objective);
subject to
constraints;
cvx_end

% Extract the optimal edge selection
optimal_edges = edges;

% Find the shortest path based on the optimal edge selection
current_node = source_node;
shortest_path = current_node;

while current_node ~= destination_node
next_node = find(optimal_edges(current_node, :slight_smile: == 1);
current_node = next_node;
shortest_path = [shortest_path, current_node];
end

% Display the shortest path
fprintf(‘Shortest path from Node %d to Node %d: ‘, source_node, destination_node);
fprintf(’%d → ‘, shortest_path(1:end-1));
fprintf(’%d\n’, shortest_path(end));
fprintf(‘Shortest distance: %.2f\n’, cvx_optval);

=========================================

hello every one, I am using macios and matlab 2020a. When I run the code I am getting

"Unable to resolve the name cvx.Variable.

Error in untitled2 (line 34)
edges = cvx.Variable(size(distances));" this error. Could you help me to solve it ? thank you

All the (CVX) variables, objective, and constraints need to be between cvx_begin and cvx_end;

Also, there is no such thing I know of as cvx.Variable, whether inside or outside cvx_begin to cvx_end;

Please read or re-read the CVX Users’ Guide

This is a forum about CVX in Matlab and cvx.Variable is a construct from CVXPY in Python.

1 Like