您的位置:首页 > 其它

数模整数规划实例

2017-08-06 21:48 267 查看
非线性规划习题

之前的非线性规划的练习题

题目

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: