lijingyan 发表于 2012-3-12 10:14

13件零件在圆上等分分配方案,结果求不出来(附源程序和数据)?

本帖最后由 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次就能得到结果,但现在却要一直运算。

哦一撇 发表于 2012-3-12 13:04

好复杂的样子。。。存下来有时间再看!!!

游走江湖 发表于 2012-3-13 22:41

局部最优。 楼主可以想办法改一改

牛勇 发表于 2012-3-14 13:47

{:3_41:}{:3_41:}{:3_41:}{:3_41:}{:3_41:}{:3_41:}{:3_41:}

紫砂蓝飞 发表于 2012-3-14 23:47

{:3_41:}{:3_41:}{:3_41:}{:3_41:}{:3_41:}{:3_41:}

醉笑。看人生 发表于 2012-3-15 12:31

{:3_41:}{:3_41:}{:3_49:}{:3_50:}

醉笑。看人生 发表于 2012-3-15 12:40

呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵
页: [1]
查看完整版本: 13件零件在圆上等分分配方案,结果求不出来(附源程序和数据)?