Jump to content
Dante Unbound: Share Bug Reports and Feedback Here! ×

Math: Max 5 Syndicates Solver


nslay

Recommended Posts

DISCLAIMER: This was math done purely out of curiosity! I have not tested this yet and, well, maximizing 5 syndicates seems extremely impractical! You probably shouldn't try this!

Now, somebody has actually pulled this off and even maximized all 6 syndicates. See here:

 

The kind of linear algebra math in this post will NOT directly provide that 6 syndicate strategy. It will only work for 5 syndicates with the 6th syndicate standing changing freely. However, if you have the right initial conditions, the 6th syndicate can be implicitly maxed with this math! Will it be practical? Absolutely not!

To understand this post, you will need some familiarity with linear algebra (matrix and vector stuff). There are probably multiple ways to solve this problem... some of them may even be easier than my solution (like the above reddit post)!

If you're reading this post, you probably already know how syndicates work. I won't explain them.

First of all, we can use a matrix to model how syndicate standing is distributed among the syndicates. Define the syndicate mixing matrix to be:
xUdTNBj.jpg

 

Where the columns are ordered as:
J8bsoeR.jpg

 

So, for example, if you earn 1000 standing for Steel Meridian, then

W*[1000, 0, 0, 0, 0, 0]^T = [1000, 0, 0, -1000, 500, -500]^T

Which corresponds to 1000 standing for Steel Meridian, -1000 standing for Perrin Sequence, 500 standing for Red Veil and -500 standing for New Loka.

We all have some syndicate standing in the 6 syndicates. Denote the initial syndicate standing vector as s_0. Remember to ignore rank and consider CUMULATIVE standing. It takes 372000 = 5000 + 22000 + 44000 + 70000 + 99000 + 132000 standing to fully max out a syndicate! For the negative side: -71000 = -5000-22000-44000.

For example, my s_0 vector would be:
s_0 = [372000, 372000, 372000, -71000, 372000, -71000]^T

I have Steel Meridian, Red Veil, Cephalon Suda and Arbiters of Hexis maxed.

Now denote s to be the TARGET syndicate standing. Let's say I also want New Loka maxed. So my target standing vector s would be:
s = [372000, 372000, 372000, -71000, 372000, 372000]^T

Now to characterize the strategy, consider parameterizing earned standing in terms of:
standing earned per syndicate = c*p

where c is a scalar value and is the magnitude of positive syndicate standing you've earned (not counting the +50%), and p is a vector of the proportions of standing distributed to each syndicate. If I'm wearing a Steel Meridian sigil, then p = [1, 0, 0, 0, 0, 0] for a particular mission. It should go without saying that p always sums to 1.

We're not interested in individual missions. I want to know proportions of standing to earn across all missions. In other words, what proportion of the standing should I wear different syndicate sigils? So if I start with s_0 standing and I play for multiple days wearing different sigils and accumulate a total of c standing, then I ultimately end up with this standing:
new standing state = s_0 + c*W*p

Now p captures the proportion of standing I earned from wearing different sigils.

So let's pose the problem. In the simplest form, we want to solve for c and p for this kind of problem:
s = s_0 + c*W*p

For my example, unfortunately, this is overdescribed in the sense that I don't want to constrain Perrin Sequence (and I can't anyway because W is rank 5 and not rank 6). Let's remove Perrin Sequence from the optimization! I do this with a diagonal matrix mask defined as follows
nbaoaMG.jpg

 

And I will turn this problem into a CONSTRAINED least squares problem
447DHNM.jpg

 

It's constrained since we need our proportion vector p to be non-negative and sum to 1. Now you can remove the constraint and relax the problem in many ways. I've provided my own non-standard trick here!

Define the matrix Z to be a projection matrix that transforms any vector into the space of vectors that sum to 0. Then you can freely characterize all vectors that sum to 1. So for example:
p = Z*u + 1/6

For any vector u, p will still sum to 1. This does NOT guarantee that p will have non-negative components. We'll come back to this later.

Here is the definition and properties of projection matrix Z
lHf7oi5.jpg

 

And wouldn't you know it? The syndicate matrix W happens to have row and column spaces in Z. In other words:
Z*W = W*Z = W

So start by making a substitution for p (like above)
FDVSgKd.jpg

 

And do another substitution to hid c (sorry, SciWeavers only allows for 1000 character LaTeX portions)
hjOV7CE.jpg

 

Now the right-hand-side is an unconstrained optimization problem! To solve it, we can take the gradient and equate to 0 and solve for u hat.
6TsACYf.jpg

 

And lots of simplification...
emYuD0J.jpg

 

Now we return to the non-negativity constraint on p! We solve for syndicate standing c that produces non-negative p... We identify the minimum component of u hat and equate that component for 0. Then it's straightforward to find c.
yQ9g8sH.jpg

 

Upshot
After all is said and done, this is the upshot (simple formulas)! This looks similar to the Moore-Penrose Pseudoinverse stuff! I guess there are more concise solutions...
lazaJWY.jpg

 

And here's a simple Matlab/Octave script
https://pastebin.com/9HeXTzQZ

Example: Max 5 Syndicates
I want New Loka to be my fifth maxed syndicate. What kind of unrealistic strategy will take my current standing state with 4 maxed syndicates to 5 maxed syndicates?

Here's my s_0:
s_0 = [372000, 372000, 372000, -71000, 372000, -71000]^T

And here's my target:
s = [372000, 372000, 372000, -71000, 372000, 372000]^T

And my mask matrix suppresses Perrin Sequence (like above).

Now plug all of that into the math and I get:
c = 5759000
p = [0.30769, 0.23077, 0, 0.30769, 0.076923, 0.076923]^T

Let's double check that we indeed max 5 syndicates!
new standing = s_0 + c*W*p = [372000, 372000, 372000, -514000, 372000, 372000]

NOTE: This math does NOT clamp standing like the game... Perrin Sequence could never be -514000 standing! It would be clamped at -71000.

Cool huh? Scary that I'd need almost 6 million standing to pull this off!

Is this practical? No! I'm not even sure how accurately I could follow the prescribed p. For example, if I stay in mission too long, I might overshoot ~30% on Steel Meridian's share!

Example: Max 6 Syndicates
This math cannot directly solve c, p for maxing 6 syndicates (it would be overconstrained). But you can imagine that if you shave off some standing from 5 maxed syndicates, you could implicitly funnel it into the 6th syndicate. How much standing is needed to take the 6th syndicate from -71000 to 372000 standing?
standing needed = 372000+71000 = 443000

Now imagine each of your 5 maxed syndicates sacrificing some standing to push the 6th syndicate to 372000. Each Syndicate would need to give:
standing sacrificed per syndicate = 443000/5 = 88600

So your initial standing might look something like this:
s_0 = [372000, 372000, 372000, -71000, 372000, 372000]^T

Your target standing will look like this (remove 88600 from each syndicate):
s = [283400, 283400, 283400, 372000, 283400, 283400]^T

NOTE: 283400 is still rank 5! (240000 is needed for rank 5).

The mask matrix M will be the same (ignore Perrin Sequence)! We're only indirectly maxing Perrin Sequence as a coincidence of the problem setup!

Now plug it all in...
c = 6290600
p = [ 0, 0.1831, 0.25352, 0.056338, 0.29577, 0.21127 ]^T

Is this for real? Double check!
s_0 + c*W*p = [ 283400, 283400, 283400, 372000, 283400, 283400 ]^T

How cool is that? Not very practical... 6 million more standing needed!? And those proportions...

Hope you enjoyed! I sure did!

Link to comment
Share on other sites

You're a real nerd, man. Congratulations (actual compliment)

Anyway, i have tried maximizing as much syndicates as i can. It's not simply "impractical", it's impossible to achieve in terms of how long human lives, moreover play games.

Link to comment
Share on other sites

4 hours ago, bad4youLT said:

Math , I hate it because I never understood it .

Probably because you weren't taught in a very good way... or perhaps in a way not tailored to your perspective. That said, I didn't exactly learn math only in school... growing up I had some smart Internet buddies who inspired me. One of them was even an Olympiad winner of some sort (I'm definitely not at the level!)! We used to talk about all sorts of random math and computer science stuff (even if we couldn't possibly understand it). Anyway, outside of school and instead of fishing (I lived near the coast), I started doodling math and doing any math questions I could find on the Internet. I used to do (actually solvable) questions on mathwizz.com hosted by some cool University of Calgary statistics professor... I'm not sure if that site is still operational! Anyway... doing that cleared a lot of missing/missed details from coursework...

If you find the right kinds of friends and the right kinds of projects/motivations... you will probably clear up all those misunderstood details and totally get it.

Link to comment
Share on other sites

4 hours ago, nslay said:

Probably because you weren't taught in a very good way... or perhaps in a way not tailored to your perspective. That said, I didn't exactly learn math only in school... growing up I had some smart Internet buddies who inspired me. One of them was even an Olympiad winner of some sort (I'm definitely not at the level!)! We used to talk about all sorts of random math and computer science stuff (even if we couldn't possibly understand it). Anyway, outside of school and instead of fishing (I lived near the coast), I started doodling math and doing any math questions I could find on the Internet. I used to do (actually solvable) questions on mathwizz.com hosted by some cool University of Calgary statistics professor... I'm not sure if that site is still operational! Anyway... doing that cleared a lot of missing/missed details from coursework...

If you find the right kinds of friends and the right kinds of projects/motivations... you will probably clear up all those misunderstood details and totally get it.

we all just trying to find what we're good at, and a crowd that accepts us.

some people find music, some people find history, some people find cooking. you found math, good for you, nothing is absolutely for everyone no mater how good the motivations are.

Link to comment
Share on other sites

Let's say you did max 5 syndicates and buy an augment. How much work do you have to do to recover the lost 25000 standing?

Let's say I buy a New Loka augment (I'm missing some)... New Loka goes from 372000 to 347000 standing.

s_0 = [ 372000, 372000, 372000, -71000, 372000, 347000 ]^T

Now I want to max New Loka again:

s = [ 372000, 372000, 372000, -71000, 372000, 372000 ]^T

How much standing is needed to recover that lost 25000?

Plug it in...

NOTE: I still mask out Perrin Sequence. I don't care about standing in this syndicate.

c = 325000 (again, you don't count +50% standing bonus to other syndicates)

p = [ 0.30769, 0.23077, 0, 0.30769, 0.076923, 0.076923 ]^T

325000 is pretty bad, but it's not as bad as 5 million standing to max 5 syndicates in the first place! If you repeat the calculation for just 1 standing spent, it takes 13 standing total to recover the spent 1 standing (it so happens that 13*25000 = 325000)!

It may be slightly more practical to maintain 5 syndicates if DE rarely adds new augments. Then you just buy the augments and then use the math to max all 5 again. Getting there in the first place is still crazy!

Now what about using 6 syndicates? It's unworkable. You cannot make any kind of use (impractical or otherwise) of 6 syndicates. The 6th syndicates gets implicitly maxed by sacrificing some standing in 5 syndicates. If you spend ANY standing in any syndicate, you will not have any extra standing in the other syndicates to cover that loss! The only way to recover is to max 5 syndicates (necessarily plunging the 6th to -71000 standing) and then sacrifice some standing to max the 6th again. But it's only through existing wealth of standing that the 6th can be maxed at all! It's impossible to max the 6th if you spend too much standing among the other 5.

* If all syndicates are within the standing caps, the system will be in constant conservation of the sum of all standing (no matter what you do). So you must necessarily drive the 6th syndicate down to -71000. The standing caps allow us to violate the conservation of standing... once you hit that -71000 cap, you can start to increase the sum of standing!

Link to comment
Share on other sites

14 hours ago, PublikDomain said:

Very cool, but I'll stick with 4 :P

Are those 4, sm, rv, hexis, and suda?

According to my calculations that's nowhere as accurate as op's, loka and perrin seems to make more diverse enemies which makes it really hard to have 4 maxed with those two.

Link to comment
Share on other sites

4 hours ago, Soy77 said:

Are those 4, sm, rv, hexis, and suda?

According to my calculations that's nowhere as accurate as op's, loka and perrin seems to make more diverse enemies which makes it really hard to have 4 maxed with those two.

You could max Steel Meridian, Red Veil, New Loka, Perrin by wearing Red Veil and New Loka sigils.

First max Steel Meridian and Red Veil by wearing Red Veil sigils. Then switch to New Loka and gain New Loka/Perrin standing for a while until Steel Meridian dips too low in standing. Then switch to Red Veil sigils again and max Steel Meridian.

Now then... I diverge from this response...

A Difference in Target Standing?

I noticed the wiki has some interesting numbers for maxing 5 syndicates. If you start from 0 standing, and you want to max 5 syndicates: Steel Meridian, Red Veil, Cephalon Suda, Arbiters of Hexis and New Loka. Then the wiki's prescribed mixture is faster (not always true for different initial standing)

For these 5 syndicates, wiki says: p = [ 0.4186, 0.1886, 0, 0.3256, 0, 0.0698 ]^T

This corresponds to a target standing for s = [ 2.5*372000, 372000, 372000, -71000, 372000, 372000 ]^T ... of course that 2.5*372000 = 930000 is impossible to have in the game!

And would need c = 15996000 total standing (makes sense for 0 initial standing in all syndicates!).

If I instead use target standing s = [ 372000, 372000, 372000, -71000, 372000, 372000 ]^T

Curiously I get a slightly different p that requires MORE standing to achieve the target s.

p = [ 0.38182  0.14545  0.054545  0.30909  0  0.10909 ]^T

Which would need c = 20460000 standing total! So it seems my solution backtracks to shave off excess Steel Meridian standing to exactly have 372000 standing... instead of 930000 standing!

Of course the wiki's prescribed p will be suboptimal for a different initial standing state! For example: if I already have 4 maxed syndicates and I want to max New Loka, the wiki's prescribed mixture will be ~3x slower.

Wiki does share some solutions for different combinations of 5 syndicates. For example, when maxing Arbiters of Hexis Cephalon Suda, Perrin Sequence, Red Veil, New Loka... then the wiki and the solution in OP (with M masking out Steel Meridian!) will be:

p = [ 0.32039,  0.07767,  0.14563,  0.28155,  0,  0.17476 ]^T

And will take c = 38316000 standing to max from 0 standing in all 6 syndicates.

A Better Problem

The wiki's solution helped me realize that my problem setup is too exacting. Though it still works, we don't actually really care about EXACTLY solving:

s = s_0 + c*M*W*p 

NOTE: the M masks out Perrin Sequence in my examples (it masks out 1 syndicate).

Having more than the target standing would be fine right? Above we curiously observed that larger target standing yielded smaller overall effort (less total standing c).

So we actually want this:

s_0 + c*M*W*p >= s

NOTE: >= is greater than or equal to

This starts to look more like a linear programming problem... then you need a linear programming solver and lose the nice closed form solution!

In the mean time, I'll definitely keep thinking of tweaks to the problem formulation. Perhaps there is a way to determine an "optimal" target standing that will give lowest effort/standing p.

References

https://warframe.fandom.com/wiki/Syndicate -- Look for "View Supporting Efficiency List".

Link to comment
Share on other sites

7 hours ago, Soy77 said:

Are those 4, sm, rv, hexis, and suda?

According to my calculations that's nowhere as accurate as op's, loka and perrin seems to make more diverse enemies which makes it really hard to have 4 maxed with those two.

Support Hexis and Perrin equally and you get Hexis, Perrin, Loka, and Suda standing equally. Loka and Suda you get passively at half rate, and since Hexis and Perrin are only half opposed their gains only half cancel out. Gaining 1 point in Hexis and 1 point in Perrin gives you a net 0.5 points in all 4.

Link to comment
Share on other sites

18 minutes ago, PublikDomain said:

Support Hexis and Perrin equally and you get Hexis, Perrin, Loka, and Suda standing equally. Loka and Suda you get passively at half rate, and since Hexis and Perrin are only half opposed their gains only half cancel out. Gaining 1 point in Hexis and 1 point in Perrin gives you a net 0.5 points in all 4.

Oh, I misread the Hexis and Suda. Exactly, it's the same strategy for any 4.

Link to comment
Share on other sites

22 minutes ago, nslay said:

Oh, I misread the Hexis and Suda. Exactly, it's the same strategy for any 4.

I think it's a little different due to the way the alliances work. You need to support your two primary Syndicates unequally if you want a different set of 4, because Hexis and Perrin IIRC are the only syndicates whose allied faction isn't the other faction's enemy. Hexis and Perrin are the only two who you can support 100% without problems.

Link to comment
Share on other sites

3 hours ago, PublikDomain said:

Hexis and Perrin IIRC are the only syndicates whose allied faction isn't the other faction's enemy.

This is the words that i was trying to say.

 

Damm my education.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

Guest
This topic is now closed to further replies.
×
×
  • Create New...