13 个解决方案
#1
m*x1 + n*x2 = 100
m*y1 + n*y2 = 50
m*y1 + n*y2 = 50
#2
汗,这也太简单了吧,我这是一个线形切割问题,根据我的数据量来算,至少有几百万种组合,要找到最优化的一种方法,照你的方法我光定义变量就要累死我了。。。
我那后面还有个省略号啊。大哥。。。。。
我那后面还有个省略号啊。大哥。。。。。
#3
如果可以用来选择切割的方块种类不定的话,这个问题有解么?
#4
就是没有固定的解决办法,所以要求最优的。。
贪婪算法我不会啊。。。。用那个什么模拟退火的我都没接触过。。。
谁告诉我啊
贪婪算法我不会啊。。。。用那个什么模拟退火的我都没接触过。。。
谁告诉我啊
#5
lz 想多啦!!
想点实际点的啦 !!!
------------
比如说一张长100宽50的,我想。。。。。
--------------------
要是数字一换 长100m 宽50m
那要算出来的话 都要很半天
哈哈
更不要是说
分成长10宽2的M张,长20宽30的N张。。。。
哎!!!
想太多啦 !!
想点实际点的啦 !!!
------------
比如说一张长100宽50的,我想。。。。。
--------------------
要是数字一换 长100m 宽50m
那要算出来的话 都要很半天
哈哈
更不要是说
分成长10宽2的M张,长20宽30的N张。。。。
哎!!!
想太多啦 !!
#6
“我想把一个长方形的板分割成,宽度长度各不同的小块,比如说一张长100宽50的,我想分成长10宽2的M张,长20宽30的N张。。。。。等等,怎么才能正好分光,或者剩下的正好等于其中的一种类型块”是不是应该换个问法,怎么分能够让余料最少,能够正好分完的可能性比较小(一般余料不会等于零)。
运筹学里的下料问题,应该算比较简单的下料问题(线性的),其实就是求方程组的最优解,有现成东西可以用,比如Matlab.
运筹学里的下料问题,应该算比较简单的下料问题(线性的),其实就是求方程组的最优解,有现成东西可以用,比如Matlab.
#7
int all_l = int.Parse(this.textBox1.Text.Trim());
int all_w = int.Parse(this.textBox2.Text.Trim());
int first_l = int.Parse(this.textBox3.Text.Trim());
int first_w = int.Parse(this.textBox4.Text.Trim());
int second_l = int.Parse(this.textBox5.Text.Trim());
int second_w = int.Parse(this.textBox6.Text.Trim());
int m =0;
int n =0;
int all_area = all_l * all_w;
int first_area = first_l * first_w;
int second_area = second_l * second_w;
int allforfirst = all_area / first_area;
string rstr = "";
int firstallarea = 0;
int secondallarea = 0;
for (int i = 0; i < allforfirst; i++)
{
firstallarea = i * first_area;
secondallarea = all_area - firstallarea;
m = i;
n = secondallarea / second_area;
if (secondallarea % second_area == 0)
{
rstr += "m=" + m.ToString() + "; n=" + n.ToString() + "\n";
}
}
this.label5.Text = rstr;
#8
这个是按照都是整数而且不考虑分割的效果写的
如果要考虑分割,还要对每组数据进行分割的验证
如果要考虑分割,还要对每组数据进行分割的验证
#9
LZ告诉你如果你说的是就切割 不用拼凑的话 一种方法都没有 哎 高中数学补习一下吧
#10
你玩过俄罗斯方块的游戏吗,你的想法我觉得和那个游戏的思路差不多,只是分割的方块的大小不一样,和这种尺寸的方块的数量不一样。但是如何更合理的去分隔,我觉得还是有些难度的,要考虑更细致,算法会非常复杂,希望你能解决这个问题。
#11
学习,路过
#12
反过来思考,组合数学中的铺路问题?已知砖头的形状,和路的宽度长度,求铺路的方案数。
#13
编码与数学的紧密结合
#1
m*x1 + n*x2 = 100
m*y1 + n*y2 = 50
m*y1 + n*y2 = 50
#2
汗,这也太简单了吧,我这是一个线形切割问题,根据我的数据量来算,至少有几百万种组合,要找到最优化的一种方法,照你的方法我光定义变量就要累死我了。。。
我那后面还有个省略号啊。大哥。。。。。
我那后面还有个省略号啊。大哥。。。。。
#3
如果可以用来选择切割的方块种类不定的话,这个问题有解么?
#4
就是没有固定的解决办法,所以要求最优的。。
贪婪算法我不会啊。。。。用那个什么模拟退火的我都没接触过。。。
谁告诉我啊
贪婪算法我不会啊。。。。用那个什么模拟退火的我都没接触过。。。
谁告诉我啊
#5
lz 想多啦!!
想点实际点的啦 !!!
------------
比如说一张长100宽50的,我想。。。。。
--------------------
要是数字一换 长100m 宽50m
那要算出来的话 都要很半天
哈哈
更不要是说
分成长10宽2的M张,长20宽30的N张。。。。
哎!!!
想太多啦 !!
想点实际点的啦 !!!
------------
比如说一张长100宽50的,我想。。。。。
--------------------
要是数字一换 长100m 宽50m
那要算出来的话 都要很半天
哈哈
更不要是说
分成长10宽2的M张,长20宽30的N张。。。。
哎!!!
想太多啦 !!
#6
“我想把一个长方形的板分割成,宽度长度各不同的小块,比如说一张长100宽50的,我想分成长10宽2的M张,长20宽30的N张。。。。。等等,怎么才能正好分光,或者剩下的正好等于其中的一种类型块”是不是应该换个问法,怎么分能够让余料最少,能够正好分完的可能性比较小(一般余料不会等于零)。
运筹学里的下料问题,应该算比较简单的下料问题(线性的),其实就是求方程组的最优解,有现成东西可以用,比如Matlab.
运筹学里的下料问题,应该算比较简单的下料问题(线性的),其实就是求方程组的最优解,有现成东西可以用,比如Matlab.
#7
int all_l = int.Parse(this.textBox1.Text.Trim());
int all_w = int.Parse(this.textBox2.Text.Trim());
int first_l = int.Parse(this.textBox3.Text.Trim());
int first_w = int.Parse(this.textBox4.Text.Trim());
int second_l = int.Parse(this.textBox5.Text.Trim());
int second_w = int.Parse(this.textBox6.Text.Trim());
int m =0;
int n =0;
int all_area = all_l * all_w;
int first_area = first_l * first_w;
int second_area = second_l * second_w;
int allforfirst = all_area / first_area;
string rstr = "";
int firstallarea = 0;
int secondallarea = 0;
for (int i = 0; i < allforfirst; i++)
{
firstallarea = i * first_area;
secondallarea = all_area - firstallarea;
m = i;
n = secondallarea / second_area;
if (secondallarea % second_area == 0)
{
rstr += "m=" + m.ToString() + "; n=" + n.ToString() + "\n";
}
}
this.label5.Text = rstr;
#8
这个是按照都是整数而且不考虑分割的效果写的
如果要考虑分割,还要对每组数据进行分割的验证
如果要考虑分割,还要对每组数据进行分割的验证
#9
LZ告诉你如果你说的是就切割 不用拼凑的话 一种方法都没有 哎 高中数学补习一下吧
#10
你玩过俄罗斯方块的游戏吗,你的想法我觉得和那个游戏的思路差不多,只是分割的方块的大小不一样,和这种尺寸的方块的数量不一样。但是如何更合理的去分隔,我觉得还是有些难度的,要考虑更细致,算法会非常复杂,希望你能解决这个问题。
#11
学习,路过
#12
反过来思考,组合数学中的铺路问题?已知砖头的形状,和路的宽度长度,求铺路的方案数。
#13
编码与数学的紧密结合