MATLAB求解⾮线性0-1整数规划(基于Yalmip⼯具箱) 前⾔: 折腾了⽼半天,直接在CSDN⾥⾯搜不到代码,百度刚开始也就到⼀个bnb20⼯具箱,可那已经是2009年的玩意了。不过还是很幸运,在我绝望到想⽤求解的时候,终于到了⼀个叫Yalmip的⼯具箱,讲道理,功能强⼤且好⽤。
县域黑社会生存之道
(建议在我给的这个链接⾥下载,官⽹下载的速度实在是emmmm)
2 Yalmip的使⽤实例
需要求解两个规划问题
海南省三亚技工学校
变量说明
如果想学习更多关于Yalmip的使⽤⽅法,可以看和求解的代码
数据clc ,clear %% 数据准备A = xlsread ('Book2.xlsx','A','B2:F10');L = xlsread ('Book2.xlsx','L','B2:F10');M = 18992;%% 站点数量最⼩条件下[n ,~] = size (A ); % n 为变量个数P = binvar (n ,1); % ⽣成变量g = sum (P )*M + sum (P'*(A .*L )); % ⽬标函数% 不等式约束AA = [1 0 1 1 0 1 1 1 1; 1 1 0 1 0 1 1 1 1; 1 0 0 1 0 1 1 1 0; 1 0 1 1 1 1 1 0 0; 1 1 1 0 1 1 1 0 1];AA = -1*AA ;BB = -1*ones (5,1);% 等式约束Ae = [];Be = [];F = set (AA *P <=BB ); % ⽣成约束sol = solvesdp (F ,g );P = double (P ); % 提取解矩阵disp (['选取的备⽤站点的序号为:' num2str (find (P == 1))'])%% 站点数量为3时P2 = binvar (n ,1); % ⽣成变量g2 = sum (P2'*(A .*L )); % ⽬标函数% 不等式约束AA2 = AA ;BB2 = BB ;% 等式约束Ae2 = ones (1,9);Be2 = 3;F2 = set (AA2*P2<=BB2) + set (Ae2*P2 == Be2); % ⽣成约束sol2 = solvesdp (F2,g2);P2 = double (P2); % 提取解矩阵disp (['选取的备⽤站点的序号为:' num2str (find (P2 == 1))'])1
2
3
4
5
6
7
8
9
10
11卫生部副部长
12
13
14
15
16
17
18
19
20
ntfs格式分区21
22
23
24
25
26
27稻草秸秆
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
----------A -----------1 1 1 1 10 1 0 0 11 0 0 1 11 1 1 1 00 0 0 1 11 1 1 1 11 1 1 1 11 1 1 0 01 1 0 0 1----------L ------------426 726 534 361 219601 903 866 692 584256 568 521 347 343180 492 375 215 385113 427 243 168 323109 301 267 276 442278 375 516 365 535286 243 437 390 542409 278 561 636 878123456789101112131415161718192021