lingo程序疑问

[复制链接]
查看11 | 回复1 | 2010-7-14 22:38:44 | 显示全部楼层 |阅读模式
建筑工地的位置(用平面坐标a,b表示,单位:km)及水泥日用量d(单位:t)用下表给出。目前两个临时料厂位于P(5,1),Q(2,7),日储量各有20t。求从A,B两料厂分别向各工地运送多少水泥,使总的吨公里数最小。两个新的料场应建在何处,节省的吨公里数有多大?

工地编号
1 2 3 4 5 6
a 1.25 8.75 0.5 5.75 3 7.25
b 1.25 0.75 4.75 5 6.5 7.75
d 3 5 4 7 6 11
model:
sets:
demand/1..6/:a,b,d;
supply/1..2/:x,y,e;
link(demand,supply):c;
endsets
data:
a=1.25,8.75,0.5,5.75,3,7.25;
b=1.25,0.75,4.75,5,6.5,7.75;
d=3,5,4,7,6,11;
e=20,20;
enddata
init:
x,y=5,1,2,7;
endinit
min=@sum(link(i,j):c(i,j)*((x(j)-a(i))^2+(y(j)-b(i))^2)^(1/2));
@for(demand(i):@sum(supply(j):c(i,j))=d(i););
@for(supply(i):@sum(demand(j):c(j,i))<=e(i););
@for(supply:@free(x);@free(y););
End
中c的矩阵表示,@free函数意义init作用 以及
min=@sum(link(i,j):c(i,j)*((x(j)-a(i))^2+(y(j)-b(i))^2)^(1/2));
@for(demand(i):@sum(supply(j):c(i,j))=d(i););
@for(supply(i):@sum(demand(j):c(j,i))<=e(i););
@for(supply:@free(x);@free(y););
翻译 (希望详细一点,因为没学过这程序了)

回复

使用道具 举报

千问 | 2010-7-14 22:38:44 | 显示全部楼层
我想变量的意义你应该很清楚了 c表示第j料厂向第i个工地运输的量 @free是取消变量的非负限制 也就是说改建料厂的地点可以是负坐标的 init是给计算赋初值 计算会从给的初值处开始迭代 如果初值和最优解相差不大会提高计算效率下面的目标函数是对运量和距离的积求和最小@for(demand(i):@sum(supply(j):c(i,j))=d(i););对每个工地 各个料厂向这个工地的运量的和等于需求@for(supply(i):@sum(demand(j):c(j,i))<=e(i););对每个料厂 向各个工地运量的和小于存量最后一句说过了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行