[All][Math] New GA component

2021-01-19 Thread Gilles Sadowski
Hi Avijit.

[I've changed the "Subject:" line.]

Le mar. 19 janv. 2021 à 08:31, Avijit Basak  a écrit :
>
> Hello Gilles Sadowski
>
>  I have extended the current implementation of Genetic Algorithm in 
> a.c.m package and made the probability generation process adaptive. A 
> significant improvement of performance was observed because of this. The 
> current version of implementation in a.c.m.GA incorporates simple genetic 
> algorithm which is not much efficient and useful. However I have extended the 
> same framework to incorporate the enhancement as part of my work. However the 
> library can also be extended to incorporate other advanced concepts of 
> Genetic Programming.

Do you intend to do, or otherwise further contribute to the enhancement
of the GA functionality?

>  To compare with other libraries I have chosen a.c.m because of it's 
> flexible and extensible design.

That's good news, despite we never had much feedback about that code
base...

>  This is to be decided if we need a new component or extend the same 
> component.

The functionality in package "o.a.c.m.genetics" does not depend on functionality
in other packages (except for exceptions).  Setting up a new component would
thus be very easy.
Doing so will bring the same maintenance advantage as we have witnessed with
the other Commons Math spin-offs.

Regards,
Gilles

>> [...]

-
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org



[geometry] IO Modules

2021-01-19 Thread Matt Juntunen
Hello,

I've created GEOMETRY-115 and an associated PR [1] containing new modules for 
IO functionality. The new modules are

  *   commons-geometry-core-io - Common space-independent interfaces and classes
  *   commons-geometry-euclidean-io - Euclidean IO classes; currently contains 
support for the 3D formats TXT, CSV, and OBJ

The API is based on a core BoundaryIOManager class that delegates to 
BoundaryReadHandler and BoundaryWriteHandler implementations based on the 
requested data format. For Euclidean 3D space, a convenience IO3D class is 
provided with static methods that delegate to a default manager instance. In 
addition to reading and writing the core geometric types for the library 
(ConvexPolygon3D, Triangle3D), the Euclidean module also supports reading and 
writing a FacetDefinition interface, which exposes simple, unvalidated 
geometric data. This is intended for accessing raw (possibly invalid) geometric 
data from files and writing data contained in external data structures (for 
example, a custom facet class). The example below is from the IO3D class 
documentation and demonstrates a read, transform, write operation using streams.

final Path origFile = tempDir.resolve("orig.obj");
final Path scaledFile = tempDir.resolve("scaled.csv");

final DoublePrecisionContext precision = new 
EpsilonDoublePrecisionContext(1e-10);
final BoundarySource3D src = Parallelepiped.unitCube(precision);

IO3D.write(src, origFile);

final AffineTransformMatrix3D transform = 
AffineTransformMatrix3D.createScale(2);

try (Stream stream = IO3D.triangles(origFile, precision)) {
IO3D.write(stream.map(t -> t.transform(transform)), scaledFile);
}

Feedback is welcome.

Regards,
Matt J

[1] https://github.com/apache/commons-geometry/pull/130