n_ads = 4; n_pos = 5; click_rates = [0.10 0.08 0.06 0.04; 0.08 0.06 0.04 0.02; 0.06 0.04 0.02 0.01; 0.04 0.02 0.01 0.005]; position_costs = [1 2 3 4 5]; % 定义 MILP 优化变量和限制条件 f = -reshape(click_rates, [], 1); Aeq = zeros(n_pos, n_ads * n_pos); beq = ones(n_pos, 1); for i = 1:n_pos for j = 1:n_ads Aeq(i, (i-1)*n_ads+j) = 1; end end A = repmat(position_costs, n_ads, 1) .* eye(n_ads * n_pos); b = ones(n_pos, 1) * 10; lb = zeros(n_ads * n_pos, 1); ub = ones(n_ads * n_pos, 1); intcon = 1:(n_ads * n_pos); [x, fval] = intlinprog(f, intcon, A, b, Aeq, beq, lb, ub); disp(reshape(x, n_pos, n_ads)'); 对于此运算,数组的大小不兼容怎么修改代码
时间: 2024-03-31 12:32:01 浏览: 46
如果数组的大小不兼容,可能是指定的参数与实际的数据维度不匹配,可以检查一下数据的大小和参数的设置是否正确。如果确保数据维度正确,可以尝试修改代码中的参数或者限制条件,使其与实际数据相符。例如,如果 click_rates 数组的大小不是 4x4,而是 5x4,那么可以修改 n_pos 的值为 4,以确保 Aeq 矩阵的维度正确。另外,如果 Aeq 矩阵的大小不正确,也可以检查一下循环中的索引和赋值语句是否正确。
阅读全文