Matlab报错
clc, clear,
load data.txt;
result = 1;
count = 0;
score = data(:,1:2:20);
probability = data(:,2:2:20);
for i = 1 : 4
for j = 1 : 10
low(i,j) = min(score(4 * i - 3 : 4 * i, j));
end
end
prob = optimproblem('ObjectiveSense', 'max');
x = optimvar('x', 4, 10, 'Type', 'integer', 'LowerBound', 0, 'UpperBound', 1);
prob.Objective = sum(sum(low.*x));
prob.Constraints.con1 = sum(x,2) == 4;
for j = 1 : 10
result = 1;
for i = 1 : 4
result = x(i,j) * result;
end
if result == 1
count = count + 1;
end
end
prob.Constraints.con2 = count == 4;
[sol, fval] = solve(prob),
sol.x
无法从 optim.problemdef.OptimizationEquality 转换为 logical。
出错 practice408 (第 46 行)
if result == 1
尝试修改过result变量名也没用,在网上也没有找到合适的解决方式
这个错误通常出现在尝试将非逻辑类型转换为逻辑类型时。根据你提供的代码,我猜测问题可能出现在这一行:
if result == 1
因为result是一个optimvar类型的变量,不是逻辑类型。你可以尝试将这一行改成:
if ismembertol(result.value, 1)
这将检查result的值是否接近1,如果是,就会执行if语句的代码块。另外,你在代码中使用了逗号运算符来分隔两个函数的调用,这可能会导致问题。你可以将这两行代码分开写,像这样:
[sol, fval] = solve(prob);
sol.x;
希望这些建议能够解决你的问题。