pyfa-org / Pyfa

Python fitting assistant, cross-platform fitting tool for EVE Online
GNU General Public License v3.0
1.6k stars 402 forks source link

Automatic fitting (stats/price maximization/minimization) #2478

Open kindaSys331 opened 1 year ago

kindaSys331 commented 1 year ago

Hey guys. This is a proposal. I was looking for related issues and didn't manage to find any. So if this will be a duplicate please point out to the original thread.

So the idea is to make some "Fit suggestion" mechanism that will be able to generate fits suggestions based on user defined features. Like ship type, tank type (armor/shield/hull, active/passive) DPS type and rang requirements, maybe even suggest boosters/implants or desired logi number and type.

As a quick example, say I want to fit a cruiser, armor tank, I want to have as much active tank as I can get with my skills with DPS no lower than N and a total price no higher than P. I click some buttons, select ship type, select what tank I want and maybe what kind of guns/DPS, fill out N and P and pyfa will generate a number of examples of fits for Vexor/Thorax etc. and whatever it finds to be most accurate based on my requirements

This will probably not be very easy to implement but it will definitely ease life for many players, especially for new ones.

In fact I would like to try to implement something like this myself if you find it useful.

What do you think?

DarkFenX commented 1 year ago

Doing fit calculations is very expensive in pyfa. Any change triggers full fit recalculation, which takes a while. Performance has been improved a lot in https://github.com/pyfa-org/eos, but still not good enough for various auto optimizations, since I ran into python's shortcomings. To get around them, I started recoding the same concept in Rust, which should yield much better performance.

I have small set of offline scripts for that (mostly to optimize things like abyssal damage mods), and even with various combinatorial optimizations it's prohibitively expensive.

So, at least for now, it is unattainable goal.