非线性规划习题
之前的非线性规划的练习题
题目 1.
2.
3.
解答
这里利用y = x1*x2 可以去进行替换 并且利用x的取值的特性可以得到新的条件:
x1 + x2 - 1 <= y <= x1 x1 + x2 - 1 <= y <= x2 y = 0 或 1和之前的约束条件形成一个3个变量的线性的0-1规划问题
这是一个线性的0-1规划问题 设置备选校址对应的为:x1,x2,x3,x4,x5,x6 对应着8个居民小区会有这8个不同条件的约束 如第一个:x1 + x2 + x3 >= 1 以此类推可以得出:
f = [1,1,1,1,1,1]; Aeq = [-1 -1 -1 0 0 0; 0 -1 0 -1 0 0;0 0 -1 0 -1 0; 0 0 0 -1 0 0; -1 -1 -1 0 0 0;0 0 0 0 -1 -1;-1 0 0 0 0 0;0 -1 0 -1 0 -1]; beq = [-1;-1;-1;-1;-1;-1;-1;-1]; [x,y] = intlinprog(f,ones(6,1),Aeq,beq,[],[],zeros(6,1)); y x = 1 0 0 1 1这里就是一个24个不同变量分配的问题,典型的机器-工人分配问题,直接用相关算法即可; 其中link集合中x表示所求企业分配,c表示分配利润 @for为约束条件
model: sets: machine/1..6/; company/1..4/; link(machine,company):c,x; endsets data: c = 4 2 3 4 6 4 5 5 7 6 7 6 7 8 8 6 7 9 8 6 7 10 8 6; enddata max = @sum(link:c*x); @for(company(j):@sum(machine(i):x(i,j)) >= 1); @for(machine(i):@sum(company(j):x(i,j)) = 1); @for(link:@bin(x)); end