Update
Based on J.M.'s answer, I have improved my ugly code and used his approach. Otherwise the format is as outlined in original answer.
Manipulate[p = {-a, 0}; q = {0, b}; r = {c, 0}; s = mp[a, b, c];
nfb = RegionNearest[Circle[{0, 0}, b]];
nfc = RegionNearest[Circle[{0, 0}, c]];
res = VectorAngle @@@
Partition[Join[{{-a, 0}}, sc[#] & /@ ({u, v} /. s[[2]])], 2, 1, 1];
Dynamic@Framed[Row[{Column[{{a, b, c}, Column[{p, q, r}],
Show[
Graphics[{{Blue, Line[{{0, 0}, #}] & /@ {p, q, r}},
EdgeForm[Black], FaceForm[None],
Polygon[{p, q,
r}], {Dashed, Red, Circle[{0, 0}, #]} & /@ {a, b, c},
Locator[Dynamic[q, (q = nfb@#) &]],
Locator[Dynamic[r, (r = nfc@#) &]],
Text["P", {0, 0}, {0, 1}], Text["B", 1.2 q, {-1, -1}],
Text["C", 1.2 r, {1, -1}], Text["A", 1.2 p, {-1, -1}]}],
PlotRange -> Table[{-4, 4}, {2}], ImageSize -> 250],
Total@(EuclideanDistance @@@ Partition[{p, q, r}, 2, 1, 1]),
s[[1]], VectorAngle @@@ Partition[{p, q, r}, 2, 1, 1], res},
Frame -> All],
Show[mv[a, b, c, res[[1]], res[[2]], Green],
mv[a, b, c, VectorAngle[p, q], VectorAngle[q, r], Red],
ImageSize -> 300]
}]], {a, 1, 3}, {{b, 1.5}, 1, 3}, {{c, 2.5}, 1, 3}
, Initialization :> (sc[u_] := {(1 - u^2)/(1 + u^2), 2 u/(1 + u^2)};
perimeter[a_, b_, c_, u_, v_] :=
With[{corners = {{-a, 0}, b sc[u], c sc[v]}},
Total[
Sqrt[Simplify[#.#]] & /@
ListCorrelate[{{-1}, {1}}, corners, 1]]];
mp[a_, b_, c_] :=
With[{pr = perimeter[a, b, c, u, v]},
NMaximize[{pr, -1 <= u <= 1 && -1 <= v <= 1}, {u, v}]];
mv[a_, b_, c_, u_, v_, col_] :=
With[{g =
Function[{x, y, l, m, n},
Total@MapThread[
Sqrt[#1.#1 - 2 (Times @@ #1) Cos[#2]] &, {Partition[{l, m,
n}, 2, 1, 1], {x, y, 2 Pi - x - y}}]]},
Show[
Plot3D[g[x, y, a, b, c], {x, 0, Pi}, {y, 0, Pi},
Evaluated -> True, Mesh -> False],
Graphics3D[{col, PointSize[0.02],
Point[{u, v, g[u, v, a, b, c]}]}]
]];
)]

Original Answer
This is rather ugly and somewhat inefficient and unstable. However, experts may improve or be motivated to elegant rather than brute force.
per[a_, b_, c_] := With[{p1 = {a, 0}},
{{#1[[1]], #1[[2]] - #1[[1]],
2 Pi - #1[[2]]}, #2} & @@ ({Sort[{t1, t2} /. #2], #1} & @@
Quiet[With[{perim =
Total[EuclideanDistance[##] & @@@
Partition[{p1, b {Cos[t1], Sin[t1]},
c {Cos[t2], Sin[t2]}}, 2, 1, 1]]},
NMaximize[perim, {t1, t2}, AccuracyGoal -> 5,
PrecisionGoal -> 5]]])];
mv[a_, b_, c_, u_, v_, col_] :=
With[{g =
Function[{x, y, l, m, n},
Total@MapThread[
Sqrt[#1.#1 - 2 (Times @@ #1) Cos[#2]] &, {Partition[{l, m, n},
2, 1, 1], {x, y, 2 Pi - x - y}}]]},
Show[Plot3D[g[x, y, a, b, c], {x, 0, Pi}, {y, 0, Pi},
Evaluated -> True, Mesh -> False],
Graphics3D[{col, PointSize[0.02], Point[{u, v, g[u, v, a, b, c]}]}]
]]
DynamicModule[{a, b, c},
Column[{Grid[{{"a", Slider[Dynamic[a], {1, 3}]},
{"b", Slider[Dynamic[b], {1, 3}]},
{"c", Slider[Dynamic[c], {1, 3}]}}],
Dynamic@
DynamicModule[{p = {a, 0}, q = {0, b}, r = {-c, 0},
s = per[a, b, c]},
Dynamic@Framed[Row[{Column[{{a, b, c}, Column[{p, q, r}],
Show[Graphics[{{Blue, Line[{{0, 0}, #}] & /@ {p, q, r}},
EdgeForm[Black], FaceForm[None],
Polygon[{p, q,
r}], {Dashed, Red, Circle[{0, 0}, #]} & /@ {a, b, c},
Locator[
Dynamic[
q, (q = RegionNearest[Circle[{0, 0}, b], #]) &]],
Locator[
Dynamic[
r, (r = RegionNearest[Circle[{0, 0}, c], #]) &]],
Text["P", {0, 0}, {0, 1}], Text["B", 1.2 q, {-1, -1}],
Text["C", 1.2 r, {1, -1}], Text["A", 1.2 p, {-1, -1}]}],
PlotRange -> Table[{-4, 4}, {2}], ImageSize -> 250],
Total@(EuclideanDistance @@@
Partition[{p, q, r}, 2, 1, 1]), s[[2]],
VectorAngle @@@ Partition[{p, q, r}, 2, 1, 1], s[[1]]},
Frame -> All],
Show[mv[a, b, c, s[[1, 1]], s[[1, 2]], Green],
mv[a, b, c, VectorAngle[p, q], VectorAngle[q, r], Red],
ImageSize -> 300]
}]]
]}, Frame -> True]]
There are some labeling changes. Here it is assumed $a,b,c$ are given and without loss of generality $P$ is {0,0} and the desired triangle is found by fixing $A$ at {a,0}. The first row is {a,b,c}. The second row are coordinates of A, B, C. The fourth row is measured perimeter for given triangle. The fifth row are the angles between position vectors of triangle and the sixth row is target angles. The graphic on the right is perimeter as function of angles (APB and BPC).
The animated graphic is poor: a combination of code (mainly) and my capture:

This is not ideal and I look forward to better answers.
Eliminate[(* equations *), {x, y}]
? BTW, good on you to use the Weierstrass substitution… $\endgroup$a
,b
,c
are constant value. For example,when PA=3,PB=4,PC=5,NMaximize[{Sqrt[a^2+b^2-2a b Cos[A+B]]+Sqrt[b^2+c^2-2b c Cos[A]]+Sqrt[c^2+a^2-2c a Cos[B]] /. {a->3,b->4,c->5},0<A<Pi,0<B<Pi},{A,B}]
return20.9323
(Root[16257024-3869200 #1^2-1568639 #1^4+3600 #1^6 &, 4]
) $\endgroup$