找回密码
 注册
Simdroid-非首页
查看: 241|回复: 8

在半径r1=180的圆盘里,不重叠最多能放多少个半径r2=30的圆盘?

[复制链接]
发表于 2011-1-12 22:57:18 | 显示全部楼层 |阅读模式 来自 北京
转自:http://www.matlabsky.com/thread-12742-1-1.html

蛮有意思的题目。
发表于 2011-1-12 23:41:37 | 显示全部楼层 来自 北京
Simdroid开发平台
实际可以看作在半径为150的圆内,可以布置多少个点,这些点满足两个条件:
1.点总数小于36;
2.每个点和其他任意一个点之间的距离不小于60
这种条件在lingo中,印象里很好表示,很久没做过数学建模的题目,忘记了。在MATLAB中,这个问题比较麻烦,一来没有整数线规的官方命令,二来这种条件似乎也不是特别好写。
个人见解,不一定准确。

评分

2

查看全部评分

回复 不支持

使用道具 举报

发表于 2011-1-13 09:45:35 | 显示全部楼层 来自 河北廊坊
1.可以用有限元三角剖分的思想去考虑,因为顶点间最好就是构成等边三角形
2.可以把1的结果作为初值,用lingo来写程序计算
回复 不支持

使用道具 举报

发表于 2011-1-13 11:39:20 | 显示全部楼层 来自 北京
用没有最起码编程觉悟的方式,给出我的提示:
1.算法中也许需要体现这些边长大于等于60的等边三角形从外围向内扩展,这是因为充分利用外围空间优于里面空间的优化效果;
2.用AUTOCAD简单画了画,好像答案是27个,不知对否。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2011-1-13 15:33:02 | 显示全部楼层 来自 河北廊坊
本帖最后由 qibbxxt 于 2011-1-13 16:44 编辑

b] 4# bainhome
老兄的思想真是灵活,算法才是王道了!
原来以为Lingo没有初值,很难计算的出来,谁知道9.0的全局优化很强悍
用下面的代码,直接以老兄的结果为初值,27个,可以计算出结果,但是28个,算了10分钟还是没有算出来,估计最优解应该是27个,从图形看也是,也许加上初值会不会有更好的结果,就不知道了。

  1. model:
  2. sets:
  3. dot/1..27/:x,y;
  4. link(dot,dot):;
  5. endsets
  6. data:
  7. @text('x1.txt')=x;
  8. @text('y1.txt')=y;
  9. enddata
  10. @for(dot(i):x(i)^2+y(i)^2<150*150);
  11. @for(link(i,j)|i#ne#j:(x(i)-x(j))^2+(y(i)-y(j))^2>3600);
  12. @for(dot:@free(x);@free(y));
复制代码
用Matlab验证并出图

  1. clear;clc;close all
  2. x=load('x1.txt');
  3. y=load('y1.txt');
  4. distofP=pdist([x,y]);
  5. mindist=min(distofP);% check
  6. t=linspace(0,2*pi);
  7. r=30;
  8. r1=180;
  9. x0=repmat(x',length(t),1);
  10. y0=repmat(y',length(t),1);
  11. x0=bsxfun(@plus,x0,r*cos(t)');
  12. y0=bsxfun(@plus,y0,r*sin(t)');
  13. plot(x0,y0)
  14. xx=cos(t)*r1;
  15. yy=sin(t)*r1;
  16. hold on
  17. plot(xx,yy)
  18. arrayfun(@(i)text(x(i),y(i),num2str(i),'HorizontalAlignment','center '),1:length(x))
  19. axis equal
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2011-1-18 19:16:27 | 显示全部楼层 来自 上海
用没有最起码编程觉悟的方式,给出我的提示:
1.算法中也许需要体现这些边长大于等于60的等边三角形从外围向内扩展,这是因为充分利用外围空间优于里面空间的优化效果;
2.用AUTOCAD简单画了画,好像答案是27个,不 ...
bainhome 发表于 2011-1-13 11:39


来个搞一点的解题模式.


http://www.wolframalpha.com/input/?i=pack+r%3D30+circles+in+a+r%3D180+circle%3F

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2011-1-24 15:46:47 | 显示全部楼层 来自 江苏苏州
有意思,下来查点资料,用MATLAB试试。
回复 不支持

使用道具 举报

 楼主| 发表于 2011-1-24 17:06:13 | 显示全部楼层 来自 北京海淀
回复 不支持

使用道具 举报

发表于 2013-7-19 10:05:03 | 显示全部楼层 来自 湖南长沙
qibbxxt 发表于 2011-1-13 15:33
b] 4# bainhome
老兄的思想真是灵活,算法才是王道了!
原来以为Lingo没有初值,很难计算的出来,谁知道9. ...

你好,能给个具体的过程吗,没试过你说的LINGO软件,谢谢

评分

1

查看全部评分

回复 不支持

使用道具 举报

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

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-9-22 03:40 , Processed in 0.049682 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表