- 在线时间
- 5 小时
- 最后登录
- 2012-5-2
- 注册时间
- 2012-3-12
- 听众数
- 3
- 收听数
- 0
- 能力
- 0 分
- 体力
- 78 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 26
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 5
- 主题
- 1
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   22.11% TA的每日心情 | 难过 2012-3-16 08:31 |
---|
签到天数: 2 天 [LV.1]初来乍到
- 自我介绍
- 白领
 |
本帖最后由 lijingyan 于 2012-3-14 16:18 编辑
现要把13件零件分配到圆的等分点上,如下图所示。
已知13件零件重量和13个等分点的XY坐标值。以坐标值为XY轴定义一个表格如下图,再定义一个二维13*13的0-1变量。
求(重量乘X坐标值)的总和的绝对值最 加 (重量乘Y坐标值)的总和的绝对值最小。
程序如下:
!13件零件分配方案;
Model:
sets:
row/1..13/:x,y;!圆上13等分点的XY坐标值;
mass/1..13/:m,mo;!初始质量,排序优化后的质量;
bian(row,row):b;!定义13*13的0-1变量数组;
endsets
data:
m=@ole('D:\LINGO9\Work\data.xls');!输入数据;
x,y=@ole('D:\LINGO9\Work\data.xls');!输入数据;
@ole('D:\LINGO9\Work\data.xls')=mo;!输出结果;
enddata
min=@abs(@sum(row(i) sum(row(j):b(i,j)*m(j)*x(j))))+@abs(@sum(row(i) sum(row(j):b(i,j)*m(j)*y(j))));
!限制各行各列中数字1只出现一次;
@for(row(i) sum(row(j):b(i,j))=1);
@for(row(i) sum(row(j):b(j,i))=1);
!将0-1变量转换成结果;
@for(row(i) sum(row(j):b(i,j)*m(j))=mo);
!定义b为0-1变量;
@for(bian(i,j) bin(b(i,j)));
end
求解结果如下:
但出来结果不是最优结果,现找不出来问题在那,请各位帮忙找找。
2012-03-14:
原来用LING09的,发现软件破解有问题,现在换成lingo10了。
今天将程序改成如下:
但运算了1个小时后计得目标值为27.35,还不是最终结果。
能运算了,但模型好像不对,我的想法是建一个模型,运算13*13次就能得到结果,但现在却要一直运算。 |
-
-
Data.xls
26.5 KB, 下载次数: 0, 下载积分: 体力 -2 点
源数据
-
-
H036.lg4
5 KB, 下载次数: 0, 下载积分: 体力 -2 点
程序
zan
|