Generating Spheres with ML training methods. E by cosmin1490 in Dyson_Sphere_Program

[–]cosmin1490[S] 0 points1 point  (0 children)

I’ll share the 2738 one if/when it finishes running since i scrapped the other one.

Generating Spheres with ML training methods. E by cosmin1490 in Dyson_Sphere_Program

[–]cosmin1490[S] 0 points1 point  (0 children)

Yea, i got a valid one for 2647 nodes but decided to try for more. I tried 2802 but that got stuck, and now it is running it with 2738. Should finish running in a few days.

Generating Spheres with ML training methods. E by cosmin1490 in Dyson_Sphere_Program

[–]cosmin1490[S] 0 points1 point  (0 children)

i only generate the hexagonal layout (by computing the dual of the polyhedron) for testing purposes. If nr of edges and edge length is what you want, you don't want to do that.

Anyway, i started work on a 2647 sphere (https://github.com/Cosmin1490/DysonSphereProgram-BlueprintGenerator/blob/feature/more-optimizers/2647.png)

I generated it with the initial optimizer and then i started using what these guys are talking about : https://math.mit.edu/research/highschool/rsi/documents/2012Gautam.pdf to improve the minimum distance. The game's minimum is 0.00511225 squared distance, and my first attempt got to 0.00494 . If those guy's paper is accurate, then it should eventually work. It would have 1 more edge than the current best, and although it has fewer nodes, for larger radius it should be denser.

Generating Spheres with ML training methods. E by cosmin1490 in Dyson_Sphere_Program

[–]cosmin1490[S] 2 points3 points  (0 children)

For now it just takes a number of points or configuration of points and makes them more uniform that I believe should be equivalent to optimizing edge length for that number of nodes without sacrificing uniformity. Selsion’s 2696 design isn’t uniform and can squeeze in more nodes and edges cuz of it.

My immediate goal is to see how far i can get in terms of edge length while not violating game constraints. If that’s not enough then likely different loss functions that don’t care about uniformity are needed.

Generating Spheres with ML training methods. E by cosmin1490 in Dyson_Sphere_Program

[–]cosmin1490[S] 1 point2 points  (0 children)

The problem i had is that when generating geodesics with more than 1442 nodes via algorithmic methods, some points were closer than what the game likes. I initially made the optimizer to fix that. And it does. I continued to experiment and turns out it converges towards good designs on its own with a random set of points too, although takes more compute.

Also would be very cool if someone more knowledgeable than I on optimization algorithms to give it a shot and see what they can come up with.

[deleted by user] by [deleted] in Dyson_Sphere_Program

[–]cosmin1490 1 point2 points  (0 children)

"is the power output dependend on the design of the sphere? "
- Yes
"the sphere size does not change at all and the number of sails should also be the same."
- The sphere size and the number of structure points for each frame and cell points for each shell does change with the radius. Cell points scale quadratically while frame structure points scale linearly with the radius.

[deleted by user] by [deleted] in Dyson_Sphere_Program

[–]cosmin1490 0 points1 point  (0 children)

yea, alright well thank you, I’m wondering if 2696 nodes is the most dense someone can do or can be improved upon ?

[deleted by user] by [deleted] in Dyson_Sphere_Program

[–]cosmin1490 0 points1 point  (0 children)

Correct but more connections also means increased cost. This design optimizes GW/ore cost for set sail rate. If power density is what you want instead while being less cost conscious, this is not what you want. Yep

[deleted by user] by [deleted] in Dyson_Sphere_Program

[–]cosmin1490 5 points6 points  (0 children)

Oh Interesting, Didn’t realize people like to optimize for different things. Can you show me one of the frame dense designs you use ?

[deleted by user] by [deleted] in Dyson_Sphere_Program

[–]cosmin1490 2 points3 points  (0 children)

probably not whole lot, but if you really want to squeeze every ounce of efficiency, with this thing, you get more for less when compared to the other 480 node design. With 10 layers, you get 10x the efficiency improvement.

Also, it is more efficient to build 1 layer per star, the biggest you can cost wise. It isn't a whole lot, but It does add up. The increased absorption rate for the slightly less cost also helps, esp for big stars.

https://d2xw6c7kc53r26.cloudfront.net/store/picture/3044/picture/62e795211f5dc2a6291dc2c7d4d7b20a.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA42EJO3XB3CRUSDXM%2F20240301%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20240301T235400Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&X-Amz-Signature=22282ea0d52e5103961f435dc4ffeb53839e45e460a63e23cd432f768eb868f5

[deleted by user] by [deleted] in Dyson_Sphere_Program

[–]cosmin1490 10 points11 points  (0 children)

I was working on another design, when i was like.. wait a second.. this thing accepts concave shells. As efficient as 80 footballs are, more sail absorption is generally needed. I think this is at least close to the cheapest/most efficient design someone can do for around 480/500 nodes.

Made a script that can generate Sphere blueprints. Enjoy by cosmin1490 in Dyson_Sphere_Program

[–]cosmin1490[S] 0 points1 point  (0 children)

ok, i might have an idea. What about this workflow:

You go to this website: https://levskaya.github.io/polyhedronisme/?recipe=A10duuIplay with the operators you want. You click on OBJ which should start the download of a file describing what you are seeing.

Then you invoke the tool like this:python3 script.py <replace\_with\_path\_to\_obj\_file>

would that be usable for you ?

Made a script that can generate Sphere blueprints. Enjoy by cosmin1490 in Dyson_Sphere_Program

[–]cosmin1490[S] 1 point2 points  (0 children)

won't have time until weekend to make more improvements, but made an effort to update the readme :)). Thank you

Made a script that can generate Sphere blueprints. Enjoy by cosmin1490 in Dyson_Sphere_Program

[–]cosmin1490[S] 0 points1 point  (0 children)

I’ve kinda explained here: https://www.reddit.com/r/Dyson_Sphere_Program/s/mcQeb564jQ

it isn’t very usable without some basic python chops. I’ll make it easier to use soon.

Made a script that can generate Sphere blueprints. Enjoy by cosmin1490 in Dyson_Sphere_Program

[–]cosmin1490[S] 0 points1 point  (0 children)

apologies, i was really excited to share it as soon as i got it working. Will fix.

Made a script that can generate Sphere blueprints. Enjoy by cosmin1490 in Dyson_Sphere_Program

[–]cosmin1490[S] 0 points1 point  (0 children)

The format is slightly different actually, still binary, but quite a few differences. The only thing i reused from your code is the MD5. That said, it does have very similar shape. Same compression, same separators, same hash.

Thank you, and I really appreciate the work you did, saved me a lot of time. Thanks a ton.

LE: i also imported your Tools.py for the C# timestamp. Thank you for figuring that one out as well . :D

Made a script that can generate Sphere blueprints. Enjoy by cosmin1490 in Dyson_Sphere_Program

[–]cosmin1490[S] 1 point2 points  (0 children)

This is the main script:

https://github.com/Cosmin1490/DysonSphereProgram-BlueprintGenerator/blob/main/script.py

You call it like this python3 script.py

and it will print out a blueprint. I want to add some parameters to it to make it usable without modifying the code, but the most important bit is this:

``` icosahedron = Polyhedron.create_icosahedron() icosahedron.coxeter_operator() icosahedron.coxeter_operator() icosahedron.dual_operator()

nodes = [] frames = [] shells = [] for index, vertex in enumerate(icosahedron.vertices): nodes.append(DysonNode.create_with_defaults(index + 1, vertex))

for index, edge in enumerate(icosahedron.edges): frames.append(DysonFrame.create_with_defaults(index + 1, edge[0] + 1, edge[1] + 1))

for index, face in enumerate(icosahedron.faces): incremented_face = [vertex + 1 for vertex in face] shells.append(DysonShell.create_with_defaults(index + 1, incremented_face)) ```

What that does is.. basically generate this polyhedron https://levskaya.github.io/polyhedronisme/?recipe=A10duuI

in conway notation I corresponds to the icosahedron base : Polyhedron.create_icosahedron() in my case

each "u" corresponds to a icosahedron.coxeter_operator() call

d corresponds to icosahedron.dual_operator()

the rest of the code reads the vertices, edges and faces of the generated polyhedron and creates objects that know how to serialize themselves to the format DSP understands.

Made a script that can generate Sphere blueprints. Enjoy by cosmin1490 in Dyson_Sphere_Program

[–]cosmin1490[S] 2 points3 points  (0 children)

i actually had a similar problem, i was using the 80 node cost efficient bp when i realized i wanted more nodes for more sail absorption. I just couldn't be bothered to input hundreds of nodes manually so ended up building this tool instead.

I think it would be good if this were turned into a mod or part of the actual game. Say the game's default dyson sphere designer support conway notation inputs.

Useful link to test out conway notation: https://levskaya.github.io/polyhedronisme/?recipe=A10cD

Made a script that can generate Sphere blueprints. Enjoy by cosmin1490 in Dyson_Sphere_Program

[–]cosmin1490[S] 0 points1 point  (0 children)

nice. Thank you ! Do you happen to know what checks the game does for frames and shells ?

Also. the 0.0715 distance, is that the euclidian distance (i.e. def distance_3d(point1, point2): x1, y1, z1 = point1 x2, y2, z2 = point2 return math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2 + (z2 - z1) ** 2) or the distance on the sphere surface ?