整数规划
Matlab求解函数
intcon = [1,2,……];//表示哪些变量整形
[x, fvalue] = intlinprog(f, intcon, A, b, Aeq, beq, lb, ub);
%f为函数,intcon为整数的变量,A, b 为整数约束,Aeq,beq为等式约束, lb, ub 为变量上下限约束
%x is the value of variable , fvalue is the extreme value.
特殊:01规划
01指派,01背包:
- 01指派:多目标,先选后做,双下标
- 01背包:单目标,单下标
蒙特卡洛:计算机模拟解法
计算机暴力求解
上机实例
EX : 现要在A1, A2, A3,… , A8这8个小区建学校,预计有B1,B2等6个地点。
B1可覆盖A1, A5, A7
B2可覆盖A1, A2, A5, A8
B3 A1, A3, A5
B4 A2, A4, A8
B5 A3, A6
B6 A4, A6, A8
如图所示,
校址及覆盖小区
可用
如A1区域,B1,B2,B3只要建一所就能覆盖,所以
综上,约束可写为
添加图片注释,不超过 140 字(可选)
matlab代码:
clear;clc;
n = 10000;%模拟次数
set_min = + Inf;% 最小建校个数,初始无穷大
set_x=0;%具体在哪建校
for i=1:n
x = randi([0,1],6,1);%生成6行1列,0到1的数
if((x(1) + x(2) + x(3) >= 1) & (x(4) + x(6) >= 1) & (x(3) + x(6) >=1) & (x(2) + x(4)>= 1)% (x(5) + x(6) >=1) & (x(1) >= 1)&(x(2)+x(4)+x(6) >= 1))
sum_x = sum(x);
if(sum_x<set_min)
set_x = x;
end
end
end
结果有多个解, 最少建三个学校。
本文作者:West11
本文链接:https://www.cnblogs.com/cxy1114blog/p/18288094
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步