Browse Source

penalty_par_distance 阶梯函数精确控制

线缆生成顺序调整(xml文件)
MAXBranchPointNumOnSegment 2->4
divide_struct_def_imp
郑敬润 10 months ago
parent
commit
e0682ead82
  1. 186
      data/Tinyroute_test/answer2ALL.txt
  2. 14
      data/Tinyroute_test/temp/SE_Sa.xml
  3. 25
      data/Tinyroute_test/temp/START_END.xml
  4. 49
      data/Tinyroute_test/wirexml/1START_END.xml
  5. 30
      data/Tinyroute_test/wirexml/2NEAR_END.xml
  6. 53
      data/Tinyroute_test/wirexml/3NEAR_START.xml
  7. 29
      include/Const.h
  8. 10
      parameters.txt

186
data/Tinyroute_test/answer2ALL.txt

@ -1,82 +1,140 @@
12 18
3 1 0 0 3 1 0 0
clip196 0 END 0
1020.1 -387.4 172.7 -3.93 0.368 -0.626 2047.2 -246.71 188.62 -0 -0 -0
clip204 0 clip45 0
949.8 -380.8 161.6 -3.934 0.368 -0.626 2018.4 -498.7 208 -0.4 0.043 -0
clip210 0 clip216 1
879.5 -374.3 150.4 -3.934 0.368 -0.626 1908 -486 203.4 -0.4 0 0
1
36 clip45 100.223
3 1 0 0
B 0
239.95 -188.7 13.2 -0 -0 -0
clip124 0
200.9 -303 98.8 -0 -0 0.4
clip461 0
198.5 -270.8 239.1 -0 0.166 0.361
1
100 clip124 11
3 1 0 0
clip277 0
1227.8 -409.9 179.2 -0 0.046 0.395
clip479 0
1222.1 -364.1 314.5 -0 0.193 0.347
D 0
1226 -129.3 372.3 -0 -0 -0
1
199 clip277 11
3 1 0 0
clip859 0
1923.3 -364.4 459 -0 0.248 0.311
clip871 0
1923.3 -328.9 497.3 -0 0.274 0.288
clip883 0
1923.3 -290 532.1 -0 0.299 0.262
2 2
80 clip196 10 264 clip859 11
81 clip204 61.4827 265 clip871 34.1033
3 1 0 0 3 1 0 0
clip226 1 clip873 0
1797.4 -466.4 229.6 0 1.049 3.86 1875.7 -326.7 491.7 -0 0.274 0.288
clip234 1 clip879 0
1797.3 -458.6 257.6 0 1.204 3.815 1875.7 -308.2 509.2 -0 0.287 0.275
F 0 F 0
1872.3 -72.6 496.65 -0 -0 -0 1872.3 -72.6 496.65 -0 -0 -0
1 1
109 clip226 10 566 clip873 11
6 1 0 0 4 1 36 199
clip1540 1 clip105 0
768.5 -139.1 416.4 3.974 -0.219 0.397 1698.5 -464.3 188.7 -0.4 0.043 -0
clip1751 1 clip262 1
1040.6 -139.3 416.6 4 0 0 1588.1 -451.4 184.8 -0.4 0 0
clip1728 1 clip264 1
1102.4 -139.3 416.6 4 0 0 1477.5 -438.1 185.5 -0.4 0 0
clip1722 1 clip274 1
1164.2 -139.3 416.6 4 0 0 1366.8 -424.5 188 -0.4 0 0
clip1714 1 1
1226 -139.3 416.6 4 0 0 84 clip262 100.399
2 1 36 264
clip313 0
1908 -457.1 300.2 -0 0.155 0.366
clip327 0
1907.9 -436.8 346 -0 0.163 0.362
0
2 1 0 265
E 0 E 0
1715.3 -72.6 496.65 -0 -0 -0 1715.3 -72.6 496.65 -0 -0 -0
1 clip1620 0
704 clip1540 10 1797.2 -231.3 490.5 0.4 -0 -0
2 1 80 0
clip471 1
1020.2 -342.6 305.5 0 1.719 3.612
C 0
1040.6 -129.3 372.3 -0 -0 -0
0 0
4 1 81 0 2 1 0 566
clip215 0 clip851 0
809.2 -367.7 139.2 -3.97 0.416 -0.25 1875.7 -377.9 433.3 -0 0.234 0.321
clip240 0 clip861 0
700.6 -356.3 132.7 -3.97 0.427 -0.237 1875.7 -361.2 454.3 -0 0.248 0.311
clip246 0 1
521.3 -337 122 -3.97 0.427 -0.237 272 clip851 11
B 0 3 1 0 84
239.95 -188.7 13.2 -0 -0 -0 clip198 0
911.4 -376 165.9 0.4 -0 -0
clip278 0
1088.8 -395.4 170.4 0.4 -0 -0
clip276 0
1227.8 -409.9 179.2 0.4 -0 -0
2 2
102 clip215 99.39 141 clip198 11
103 clip240 170.653 142 clip278 11
2 1 0 102 1 1 272 36
END 0 clip339 1
2047.2 -246.71 188.62 -0 -0 -0 1860.3 -431.9 343.5 0 -0.179 -0.355
clip109 0
1058.8 -395.4 150.2 -3.97 0.428 -0.239
0 0
2 1 0 102 2 1 141 0
clip120 0 clip1559 0
221.6 -305.2 38.8 3.97 -0.427 0.2369 934.1 -319.6 289.3 -0 0.222 0.33
clip128 0 clip1561 0
400.9 -324.5 49.5 3.97 -0.427 0.2369 934.1 -296.1 321.9 -0 0.242 0.315
1
898 clip1559 29.1872
2 1 0 142
clip200 0
802.7 -364.7 159 0.4 -0 -0
clip204 0
949.8 -380.8 161.6 0.4 -0 -0
1 1
46 clip120 10 145 clip200 11
1 1 102 704 2 1 0 898
clip1553 0 C 0
768.6 -239.8 339.1 -0 2.744 2.91 1040.6 -129.3 372.3 -0 -0 -0
clip1565 1
934 -269.5 351.3 0 -0.267 -0.294
0 0
2 1 0 103 2 1 0 145
clip135 1
559.5 -341.6 120.2 0.398 -0.043 0
clip241 1
700.6 -356.3 132.7 0.395 -0.045 0
1
111 clip135 11
2 1 100 111
clip131 1
380.2 -322.3 109.5 0.398 -0.043 0
clip247 1
521.3 -337 122 0.395 -0.045 0
1
105 clip131 11
3 1 105 0
clip251 0
342 -317.7 111.3 -0.395 0.045 -0
clip259 0
162.4 -298.2 108.7 -0.398 0.042 -0
START 0 START 0
14.175 -227.3 104.1 -0 -0 -0 14.175 -227.3 104.1 -0 -0 -0
clip250 1 1
342 -317.7 111.3 3.97 -0.427 0.237 185 clip251 40.8174
0 2 1 185 0
2 1 46 0 clip1653 1
clip1644 1 276.8 -177.1 -3.2 0 0.4 0
240.5 -181.4 -3.2 0.329 3.986 0
A 0 A 0
270.85 71.25 -9.9 -0 -0 -0 270.85 71.25 -9.9 -0 -0 -0
0 0

14
data/Tinyroute_test/wirexml/SE_Sa.xml → data/Tinyroute_test/temp/SE_Sa.xml

@ -38,31 +38,31 @@
<pin id="_1022" name="end"> <pin id="_1022" name="end">
</pin> </pin>
</connector> </connector>
<wire id="_2001" name="Stoa" wirecsa="0.616" outsidediameter="1.415"> <wire id="_2001" name="STARTtoEND" wirecsa="0.616" outsidediameter="1.415">
<connection pinref="_1002"/> <connection pinref="_1002"/>
<connection pinref="_1022"/> <connection pinref="_1022"/>
</wire> </wire>
<wire id="_2002" name="Stoa" wirecsa="0.616" outsidediameter="1.415"> <wire id="_2002" name="STARTtoA" wirecsa="0.616" outsidediameter="1.415">
<connection pinref="_1002"/> <connection pinref="_1002"/>
<connection pinref="_1004"/> <connection pinref="_1004"/>
</wire> </wire>
<wire id="_2003" name="Stoa" wirecsa="0.616" outsidediameter="1.415"> <wire id="_2003" name="STARTtoB" wirecsa="0.616" outsidediameter="1.415">
<connection pinref="_1002"/> <connection pinref="_1002"/>
<connection pinref="_1006"/> <connection pinref="_1006"/>
</wire> </wire>
<wire id="_2004" name="Stoa" wirecsa="0.616" outsidediameter="1.415"> <wire id="_2004" name="STARTtoC" wirecsa="0.616" outsidediameter="1.415">
<connection pinref="_1002"/> <connection pinref="_1002"/>
<connection pinref="_1008"/> <connection pinref="_1008"/>
</wire> </wire>
<wire id="_2005" name="Stoa" wirecsa="0.616" outsidediameter="1.415"> <wire id="_2005" name="STARTtoD" wirecsa="0.616" outsidediameter="1.415">
<connection pinref="_1002"/> <connection pinref="_1002"/>
<connection pinref="_1010"/> <connection pinref="_1010"/>
</wire> </wire>
<wire id="_2006" name="Stoa" wirecsa="0.616" outsidediameter="1.415"> <wire id="_2006" name="STARTtoE" wirecsa="0.616" outsidediameter="1.415">
<connection pinref="_1002"/> <connection pinref="_1002"/>
<connection pinref="_1012"/> <connection pinref="_1012"/>
</wire> </wire>
<wire id="_2007" name="Stoa" wirecsa="0.616" outsidediameter="1.415"> <wire id="_2007" name="STARTtoF" wirecsa="0.616" outsidediameter="1.415">
<connection pinref="_1002"/> <connection pinref="_1002"/>
<connection pinref="_1014"/> <connection pinref="_1014"/>
</wire> </wire>

25
data/Tinyroute_test/temp/START_END.xml

@ -1,25 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE project PUBLIC "-//Mentor Graphics Corporation//Project 2014.1//EN" "D:/MentorGraphics/Capital/dtd/project.dtd">
<!-- Application Version: 2014.1.SP1610.27 [Build 4] - 25 September 2016 (17:59 IST)-->
<project>
<designmgr>
<harnessdesign>
<harnesscontainer>
<connectivity id="_1000">
<connector id="_1001" name="START" partnumber="0000">
<pin id="_1002" name="start">
</pin>
</connector>
<connector id="_1021" name="END" partnumber="0000">
<pin id="_1022" name="end">
</pin>
</connector>
<wire id="_2001" name="Stoa" wirecsa="0.616" outsidediameter="1.415">
<connection pinref="_1002"/>
<connection pinref="_1022"/>
</wire>
</connectivity>
</harnesscontainer>
</harnessdesign>
</designmgr>
</project>

49
data/Tinyroute_test/wirexml/1START_END.xml

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE project PUBLIC "-//Mentor Graphics Corporation//Project 2014.1//EN" "D:/MentorGraphics/Capital/dtd/project.dtd">
<!-- Application Version: 2014.1.SP1610.27 [Build 4] - 25 September 2016 (17:59 IST)-->
<project>
<designmgr>
<harnessdesign>
<harnesscontainer>
<connectivity id="_1000">
<connector id="_1001" name="START" partnumber="0000">
<pin id="_1002" name="start">
</pin>
</connector>
<connector id="_1003" name="A" partnumber="0000">
<pin id="_1004" name="a">
</pin>
</connector>
<connector id="_1005" name="B" partnumber="0000">
<pin id="_1006" name="b">
</pin>
</connector>
<connector id="_1007" name="C" partnumber="0000">
<pin id="_1008" name="c">
</pin>
</connector>
<connector id="_1009" name="D" partnumber="0000">
<pin id="_1010" name="d">
</pin>
</connector>
<connector id="_1011" name="E" partnumber="0000">
<pin id="_1012" name="e">
</pin>
</connector>
<connector id="_1013" name="F" partnumber="0000">
<pin id="_1014" name="f">
</pin>
</connector>
<connector id="_1021" name="END" partnumber="0000">
<pin id="_1022" name="end">
</pin>
</connector>
<wire id="_2001" name="STARTtoEND" wirecsa="0.616" outsidediameter="1.415">
<connection pinref="_1002"/>
<connection pinref="_1022"/>
</wire>
</connectivity>
</harnesscontainer>
</harnessdesign>
</designmgr>
</project>

30
data/Tinyroute_test/temp/START_A-F.xml → data/Tinyroute_test/wirexml/2NEAR_END.xml

@ -34,29 +34,25 @@
<pin id="_1014" name="f"> <pin id="_1014" name="f">
</pin> </pin>
</connector> </connector>
<wire id="_2002" name="Stoa" wirecsa="0.616" outsidediameter="1.415"> <connector id="_1021" name="END" partnumber="0000">
<connection pinref="_1002"/> <pin id="_1022" name="end">
<connection pinref="_1004"/> </pin>
</wire> </connector>
<wire id="_2003" name="Stoa" wirecsa="0.616" outsidediameter="1.415"> <wire id="_2004" name="CtoEND" wirecsa="0.616" outsidediameter="1.415">
<connection pinref="_1002"/>
<connection pinref="_1006"/>
</wire>
<wire id="_2004" name="Stoa" wirecsa="0.616" outsidediameter="1.415">
<connection pinref="_1002"/>
<connection pinref="_1008"/> <connection pinref="_1008"/>
<connection pinref="_1022"/>
</wire> </wire>
<wire id="_2005" name="Stoa" wirecsa="0.616" outsidediameter="1.415"> <wire id="_2005" name="DtoEND" outsidediameter="1.415" wirecsa="0.616">
<connection pinref="_1002"/>
<connection pinref="_1010"/> <connection pinref="_1010"/>
<connection pinref="_1022"/>
</wire> </wire>
<wire id="_2006" name="Stoa" wirecsa="0.616" outsidediameter="1.415"> <wire id="_2006" name="EtoEND" outsidediameter="1.415" wirecsa="0.616">
<connection pinref="_1002"/>
<connection pinref="_1012"/> <connection pinref="_1012"/>
</wire> <connection pinref="_1022"/>
<wire id="_2007" name="Stoa" wirecsa="0.616" outsidediameter="1.415"> </wire>
<connection pinref="_1002"/> <wire id="_2007" name="FtoEND" outsidediameter="1.415" wirecsa="0.616">
<connection pinref="_1014"/> <connection pinref="_1014"/>
<connection pinref="_1022"/>
</wire> </wire>
</connectivity> </connectivity>
</harnesscontainer> </harnesscontainer>

53
data/Tinyroute_test/wirexml/3NEAR_START.xml

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE project PUBLIC "-//Mentor Graphics Corporation//Project 2014.1//EN" "D:/MentorGraphics/Capital/dtd/project.dtd">
<!-- Application Version: 2014.1.SP1610.27 [Build 4] - 25 September 2016 (17:59 IST)-->
<project>
<designmgr>
<harnessdesign>
<harnesscontainer>
<connectivity id="_1000">
<connector id="_1001" name="START" partnumber="0000">
<pin id="_1002" name="start">
</pin>
</connector>
<connector id="_1003" name="A" partnumber="0000">
<pin id="_1004" name="a">
</pin>
</connector>
<connector id="_1005" name="B" partnumber="0000">
<pin id="_1006" name="b">
</pin>
</connector>
<connector id="_1007" name="C" partnumber="0000">
<pin id="_1008" name="c">
</pin>
</connector>
<connector id="_1009" name="D" partnumber="0000">
<pin id="_1010" name="d">
</pin>
</connector>
<connector id="_1011" name="E" partnumber="0000">
<pin id="_1012" name="e">
</pin>
</connector>
<connector id="_1013" name="F" partnumber="0000">
<pin id="_1014" name="f">
</pin>
</connector>
<connector id="_1021" name="END" partnumber="0000">
<pin id="_1022" name="end">
</pin>
</connector>
<wire id="_2002" name="STARTtoA" wirecsa="0.616" outsidediameter="1.415">
<connection pinref="_1002"/>
<connection pinref="_1004"/>
</wire>
<wire id="_2003" name="STARTtoB" wirecsa="0.616" outsidediameter="1.415">
<connection pinref="_1002"/>
<connection pinref="_1006"/>
</wire>
</connectivity>
</harnesscontainer>
</harnessdesign>
</designmgr>
</project>

29
include/Const.h

@ -25,9 +25,10 @@ const double minAngle = pi / 144; //
const double R = 2000; // 飞机横截面的近似半径 const double R = 2000; // 飞机横截面的近似半径
const double MARGIN = 1000; // 布线的空间范围,从STL模型向外延申的长度 const double MARGIN = 1000; // 布线的空间范围,从STL模型向外延申的长度
//----------------------mark---------------------- //----------------------mark----------------------
const int MAXBranchPointNumOnSegment = 2; // 分支上的最大分支点数 const int MAXBranchPointNumOnSegment = 4; // 分支上的最大分支点数
const int MAXPointNum = N + MAXBranchPointNumOnSegment * N; // 最大分支点数加最大卡箍数 const int MAXPointNum = N + MAXBranchPointNumOnSegment * N; // 最大分支点数加最大卡箍数
double segmentLength = 3000; // *卡箍到卡箍之间的最长距离 // segmentLength=2000 报错:Assertion failed: vis[points[i]] == 0, file D:\SOURCE\WireRouting\WireRouting_CMakeDev\include\Path.h, line 72
double segmentLength = 3000; // *卡箍到卡箍之间的最长距离(搜索半径)(目前2000-3000较好)
const double MinClipToBranchPointDistance = 11; // 卡箍到分支点的最短距离 const double MinClipToBranchPointDistance = 11; // 卡箍到分支点的最短距离
const double MinBranchPointDistance = 11; // 分支点到分支点的最短距离 const double MinBranchPointDistance = 11; // 分支点到分支点的最短距离
@ -42,7 +43,7 @@ double MAXX = -1e9, MINX = 1e9, MAXY = -1e9, MINY = 1e9, MAXZ = -1e9, MINZ = 1e9
vector<Vec3f> vertices; // VS2008 vector<Vec3f> vertices; // VS2008
vector<Vec3u> indices; // VS2008 vector<Vec3u> indices; // VS2008
Mesh mesh; Mesh mesh;
const double intersection_distance = 100; //* // const double intersection_distance = 100; //*
int intersection_model = 0; int intersection_model = 0;
typedef P Point3; typedef P Point3;
@ -124,6 +125,25 @@ inline Vector3 Cross(Vector3 A, Vector3 B)
} }
inline double Area2(Point3 &A, Point3 &B, Point3 &C) { return Length(Cross(B - A, C - A)); } inline double Area2(Point3 &A, Point3 &B, Point3 &C) { return Length(Cross(B - A, C - A)); }
inline double get_penalty_par_distance(double len)
{
static const double intersection_distance = 180;
if (len <= intersection_distance)
return 1;
else if (len <= intersection_distance * 1.5)
return 1.4;
else if (len <= intersection_distance * 3)
return 2.6;
else if (len <= intersection_distance * 5)
return 6;
else if (len <= intersection_distance * 10)
return 15;
else if (len <= intersection_distance * 25)
return 30;
else
return 40;
}
/*考虑了连线方向,卡箍方向,连线长度的综合权值函数 /*考虑了连线方向,卡箍方向,连线长度的综合权值函数
A或者B type!=0inOut没有意义 A或者B type!=0inOut没有意义
inOut1=0沿A的dirinOut1=1A的dir inOut1=0沿A的dirinOut1=1A的dir
@ -163,7 +183,7 @@ inline double distan(P A, P B, int inOut1, int inOut2)
// penalty_par_distance = 8; // penalty_par_distance = 8;
// else // else
// penalty_par_distance = 1; // penalty_par_distance = 1;
penalty_par_distance = get_penalty_par_distance(len);
double len1 = sqrt((A.y - Ycenter) * (A.y - Ycenter) + (A.z - Zcenter) * (A.z - Zcenter)); double len1 = sqrt((A.y - Ycenter) * (A.y - Ycenter) + (A.z - Zcenter) * (A.z - Zcenter));
double len2 = sqrt((B.y - Ycenter) * (B.y - Ycenter) + (B.z - Zcenter) * (B.z - Zcenter)); double len2 = sqrt((B.y - Ycenter) * (B.y - Ycenter) + (B.z - Zcenter) * (B.z - Zcenter));
@ -246,6 +266,7 @@ inline double distan(P A, P B)
// penalty_par_distance = 8; // penalty_par_distance = 8;
// else // else
// penalty_par_distance = 1; // penalty_par_distance = 1;
penalty_par_distance = get_penalty_par_distance(len);
double len1 = sqrt((A.y - Ycenter) * (A.y - Ycenter) + (A.z - Zcenter) * (A.z - Zcenter)); double len1 = sqrt((A.y - Ycenter) * (A.y - Ycenter) + (A.z - Zcenter) * (A.z - Zcenter));
double len2 = sqrt((B.y - Ycenter) * (B.y - Ycenter) + (B.z - Zcenter) * (B.z - Zcenter)); double len2 = sqrt((B.y - Ycenter) * (B.y - Ycenter) + (B.z - Zcenter) * (B.z - Zcenter));

10
parameters.txt

@ -21,4 +21,12 @@ VScode CMake:
} }
cmd: cmd:
.\WireRouting.exe createTinyroute ..\\..\\data\\Tinyroute_test\\clip2 ..\\..\\data\\Tinyroute_test\\wirexml ..\\..\\data\\Tinyroute_test\\connector.csv ..\\..\\data\\Tinyroute_test\\OBJ D:\\outFile\\output_ .\WireRouting.exe createTinyroute ..\\..\\data\\Tinyroute_test\\clip2 ..\\..\\data\\Tinyroute_test\\wirexml ..\\..\\data\\Tinyroute_test\\connector.csv ..\\..\\data\\Tinyroute_test\\OBJ D:\\outFile\\output_
VS2008:
createTinyroute
D:\SOURCE\WireRouting\WireRouting_CMakeDev\data\Tinyroute_test\clip2
D:\SOURCE\WireRouting\WireRouting_CMakeDev\data\Tinyroute_test\wirexml
D:\SOURCE\WireRouting\WireRouting_CMakeDev\data\Tinyroute_test\connector.csv
D:\SOURCE\WireRouting\WireRouting_CMakeDev\data\Tinyroute_test\OBJ
C:\Users\yony\Downloads\output_vs2008
Loading…
Cancel
Save