lingo编写单纯形法的程序怎么写?

发布网友 发布时间:2022-04-22 00:09

我来回答

2个回答

热心网友 时间:2023-07-09 11:20

model:
sets:
firehouse/1..3/:num;
fire/1..7/:;
link(firehouse,fire):distance,x;
endsets
data:
num=3,2,2;
enddata
min=@sum(link:distance*x);
@for(firehouse(i):@sum(fire(j):x(i,j))=num(i));
@for(fire(j):@sum(firehouse(i):x(i,j))=1);
@for(link:@gin(x));
end

结果
X( 1, 1) 0.000000 0.000000
X( 1, 2) 1.000000 0.000000
X( 1, 3) 0.000000 0.000000
X( 1, 4) 0.000000 0.000000
X( 1, 5) 0.000000 0.000000
X( 1, 6) 1.000000 0.000000
X( 1, 7) 1.000000 0.000000
X( 2, 1) 0.000000 0.000000
X( 2, 2) 0.000000 0.000000
X( 2, 3) 1.000000 0.000000
X( 2, 4) 1.000000 0.000000
X( 2, 5) 0.000000 0.000000
X( 2, 6) 0.000000 0.000000
X( 2, 7) 0.000000 0.000000
X( 3, 1) 1.000000 0.000000
X( 3, 2) 0.000000 0.000000
X( 3, 3) 0.000000 0.000000
X( 3, 4) 0.000000 0.000000
X( 3, 5) 1.000000 0.000000
X( 3, 6) 0.000000 0.000000
X( 3, 7) 0.000000 0.000000

就是说1号消防站派车到2 6 7
2号到3 4
3号到1 5

热心网友 时间:2023-07-09 11:20

sets:
one/1..3/:a;
two/1..7/:b;
links(one,two):c,x;
endsets

data:
a=3 2 2;
b=1 1 1 1 1 1 1;
c=36 24 49 21 81 72 45
30 20 56 24 99 88 55
36 24 63 27 90 80 50;
enddata

min=@sum(links(i,j): c(i,j)*x(i,j));
!目标函数;

@for(one(i): @sum(links(i,j): x(i,j))=a(i));
!相当于条件
x11+x12+x13+x14+x15+x16+x17=3
x21+x22+x23+x24+x25+x26+x27 =2
x31+x32+x33+x34+x35+x36+x37=2;

@for(two(j): @sum(links(i,j): x(i,j))=b(j));
!相当于条件(没理解错的话)
连加号(i从1到3)Xij=1 , j=1 2 3 4 5 6 7;

!Xij>=0是默认的;

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com