(1)线性规划LP
MODEL:
MIN=2*x1-2*x2;
2*x1+x2+x3=3;
-x1+x2+x4=-1;
@GIN(x1);@GIN(x2);@GIN(x3);@GIN(x4); END
(2)线性规划LP
MODEL:
MIN=-7*x1-12*x2;
9*x1+4*x2+x3=360;
4*x1+5*x2+x4=200;
3*x1+10*x2+x5=300;
@GIN(x1);@GIN(x2);@GIN(x3);@GIN(x4); END
(3)线性规划LP
MODEL:
MIN=2*x1+x2-x4;
x1+x2+x3=5;
-x1+x2+x4=6;
6*x1+2*x2<=21;
END
(4)指派问题AP
MODEL:
SETS:
r/1..5/:;
c/1..5/:;
link(r,c):time,x;
ENDSETS
DATA:
time= 8 6 10 9 2
9 12 7 11 9
7 4 3 5 8
9 5 8 11 8
4 6 7
5 11;
ENDDATA
MIN=@SUM(link:x*time);
@FOR(link:@BIN(x));
@FOR(r(i):@SUM(c(j):x(i,j))=1);
@FOR(c(j):@SUM(r(i):x(i,j))=1);
End
(5)纯整数规划PILP
MODEL:
MAX=40*x1+90*x2;
9*x1+7*x2<=56;
7*x1+20*x2<=70;
@GIN(x1);@GIN(x2);
END
(6)混合整数规划ILP
MODEL:
MAX=40*x1+90*x2;
9*x1+7*x2<=56;
7*x1+20*x2<=70;
@GIN(x1);
END
(7)0—1型整数规划ZILP
MODEL:
MAX=5*x1-x2+7*x3;
x1+4*x2+x3<=5;
x1+2*x2-x3<=2;
2*x1+x2<=3;
4*x2+3*x3<=6;
@BIN(x1);@BIN(x2);@BIN(x3);
END
(8)连续函数的最值问题
最大值MAX
MODEL:
MAX=(x-x^3+y^3-y^5)*@EXP(-(x^2+y^2));
@BND(-2,x,2);@BND(-3,y,3);
END
最小值MIN
MODEL:
MIN=(x-x^3+y^3-y^5)*@EXP(-(x^2+y^2));
@BND(-2,x,2);@BND(-3,y,3);
END
(9)非线性规划问题NLP
MODEL:
SETS:
a/1..6/:horizontal,vertical,distance;
b/1,2/:positionx,positiony;
link(a,b):c;
ENDSETS
DATA:
horizontal=1.25 8.75 0.5 5.75 3 7.25;
vertical=1.25 0.75 4.75 5 6.5 7.75;
distance=3 5 4 7 6 11;
positionx=5 2; !分别为P,Q的横坐标;
positiony=1 7; !分别为P,Q的纵坐标;
ENDDATA
MIN=@sum(b(j):@SUM(a(i):c(i,j)*@SQRT((positionx(j)-horizontal(i))^2+(positiony(j)-vertical(i))^2))); @FOR(a(i):@SUM(b(j):c(i,j))=distance(i));
@FOR(b(j):@SUM(a(i):c(i,j))<=20);
END
(10)动态规划问题
最短路线问题、生产计划问题以及资源分配问题。
(一)最短路线问题:
MODEL:
SETS:
cities/A,B1,B2,B3,C1,C2,C3,D1,D2,E/:L; !属性L(i)
示城市A到城市i的最优行驶路线长; POADS(cities,cities)/ !派生集合POADS表示的是网络中的道路;
A,B1 A,B2 A,B3
B1,C1 B1,C2 B1,C3 B2,C1 B2,C2 B2,C3 B3,C1 B3,C2 B3,C3
C1,D1 C1,D2 C2,D1 C2,D2 C3,D1 C3,D2
D1,E D2,E/:P; !属性P(i,j)是城市i到
城市j的直接距离;
ENDSETS
DATA:
P=2 5 3
7 5 6 3 2 4 5 1 5
1 4 6 3 3 3
3 4;
L=0,,,,,,,,,; !因为L(A)=0;
ENDDATA
@FOR(cities(i)|i#GT#@index(A):L(i)=@MIN(POADS(j,i):L(j)+P(j,i));); !这行中'@index'可以直接写成1;
End
(二)最小运输费用问题
6个出发地8个目的地的最小运输费用问题
MODEL:
SETS:
warehouses/wh1..wh6/: capacity;
vendors/v1..v8/: demand;
links(warehouses,vendors): cost, volume;
ENDSETS
!目标函数;
MIN=@sum(links: cost*volume);
!需求约束;
@FOR(vendors(J):
@SUM(warehouses(I): volume(I,J))=demand(J));
!产量约束;
@FOR(warehouses(I):
@SUM(vendors(J): volume(I,J))<=capacity(I));
!这里是数据;
DATA:
capacity=60 55 51 43 41 52;
demand=35 37 22 32 41 32 43 38;
cost=6 2 6 7 4 2 9 5
4 9
5 3 8 5 8 2
5 2 1 9 7 4 3 3
7 6 7 3 9 2 7 1
2 3 9 5 7 2 6 5
5 5 2 2 8 1 4 3;
ENDDATA
END