matlab中使用gurobi时报错:
无法识别的字段名称 "addVars"。
出错 untitled (第 5 行)
tasks = model.addVars(numEmployees, numTasks, 'vtype', 'B', 'Name', 'tasks');
model = struct();
% 定义任务分配变量,假设有280个员工,100个任务
numEmployees = 280;
numTasks = 100;
tasks = model.addVars(numEmployees, numTasks, 'vtype', 'B', 'Name', 'tasks');
% 每个任务必须由一个员工执行
for j = 1:numTasks
model.addConstr(sum(tasks(:, j)) == 1, sprintf('task_%d_assignment', j));
end
% 每个员工只能执行一个任务
for i = 1:numEmployees
model.addConstr(sum(tasks(i, :)) == 1, sprintf('employee_%d_assignment', i));
end
% 读取任务不满意程度数据
dissatisfactionData = readmatrix('dissatisfaction.xlsx');
% 读取负面影响数据
negativeImpactData = readmatrix('negativeimpact.xlsx');
% 添加任务不满意程度约束
for j = 1:numTasks
model.addConstr(sum(tasks(:, j)) == 1, sprintf('task_%d_assignment', j));
end
% 构建任务不满意程度目标函数
taskDissatisfaction = dissatisfactionData .* negativeImpactData; % 使用任务不满意程度和负面影响的乘积作为目标函数系数
model.setObjective(sum(sum(tasks .* taskDissatisfaction)), 'minimize');
% 添加负面影响约束
for i = 1:numEmployees
for j = 1:numTasks
if negativeImpactData(i, j) > 0
model.addConstr(tasks(i, j) == 0, sprintf('negative_impact_employee_%d_task_%d', i, j));
end
end
end