数学建模社区-数学中国

标题: 13件零件在圆上等分分配方案,结果求不出来(附源程序和数据)? [打印本页]

作者: lijingyan    时间: 2012-3-12 10:14
标题: 13件零件在圆上等分分配方案,结果求不出来(附源程序和数据)?
本帖最后由 lijingyan 于 2012-3-14 16:18 编辑

现要把13件零件分配到圆的等分点上,如下图所示。
Snap2.jpg

已知13件零件重量和13个等分点的XY坐标值。以坐标值为XY轴定义一个表格如下图,再定义一个二维13*13的0-1变量。
求(重量乘X坐标值)的总和的绝对值最 加 (重量乘Y坐标值)的总和的绝对值最小。

Snap3.jpg

程序如下:

!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
Snap4.jpg

求解结果如下:
Snap1.jpg

但出来结果不是最优结果,现找不出来问题在那,请各位帮忙找找。

2012-03-14:
原来用LING09的,发现软件破解有问题,现在换成lingo10了。
今天将程序改成如下:
13-1.JPG
但运算了1个小时后计得目标值为27.35,还不是最终结果。
能运算了,但模型好像不对,我的想法是建一个模型,运算13*13次就能得到结果,但现在却要一直运算。

Data.xls

26.5 KB, 下载次数: 0, 下载积分: 体力 -2 点

源数据

H036.lg4

5 KB, 下载次数: 0, 下载积分: 体力 -2 点

程序


作者: 哦一撇    时间: 2012-3-12 13:04
好复杂的样子。。。存下来有时间再看!!!
作者: 游走江湖    时间: 2012-3-13 22:41
局部最优。 楼主可以想办法改一改
作者: 牛勇    时间: 2012-3-14 13:47

作者: 紫砂蓝飞    时间: 2012-3-14 23:47

作者: 醉笑。看人生    时间: 2012-3-15 12:31

作者: 醉笑。看人生    时间: 2012-3-15 12:40
呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5