Solving non linear system
Mostrar comentarios más antiguos
I'm trying to solve a non-linear min-max systems using the below code. and i'm geeting this error
Error using symengine
Input arguments must be convertible to floating-point numbers.
Error in sym/privBinaryOp (line 1030)
Csym = mupadmex(op,args{1}.s, args{2}.s, varargin{:});
Error in sym/min (line 78)
C = privBinaryOp(X, Y, 'symobj::zipWithImplicitExpansion', 'symobj::minComplex');
Any suggestions to fix it?
syms x111 x114 x121 x124 x211 x214 x221 x224
eq1 = min((min(3*x111,8*x111)+min(2*x211,11*x211)),(6*min(3*x111,8*x111)+6*min(2*x211,11*x211)))+min((7*min(3*x121,8*x121)+7*min(2*x221,11*x221)),(-3*max(3*x124,8*x124)-3*max(2*x224,11*x224)))+min((2*min(x111,7*x111)+2*min(3*x211,7*x211)),(-5*max(x114,7*x114)-5*max(3*x214,7*x214)))+min((min(x121,7*x121)+min(3*x221,7*x221)),(5*min(x121,7*x121)+5*min(2*x221,7*x221)))==-964;
eq2 = min ((6* min (3* x111, 8 *x111)+6* min (2* x211, 11 *x211)),(-max (3*x114, 8* x114) -max (2* x214, 11* x214)))+min ((min (3 *x121, 8* x121)+min (2* x221, 11* x221)),(7* min (3* x121, 8* x121)+7 *min (2 *x221, 11 *x221)))+ min ((3 *min (x111, 7* x111)+3 *min (3* x211, 7* x211)), (6 *min (x111, 7* x111)+6* min (3 *x211, 7* x211)))+min ((4 *min (x121, 7 *x121) +4 *min (3* x221, 7* x221)),(-3 *max (x124, 7 *x124) -3* max (3* x224, 7 *x224)))== -793;
eq3 = min ((min (-8 *x114, -x114) +min (-4 *x214, 6* x211)), (6 *min (-8* x114, -x114) +6 *min (-4* x214, 6* x211)))+min ((7* min (-8* x124, -x124) +7* min (-4* x224, 6* x221)), (-3* max (-x121, -8* x121) -3* max (6* x224, -4* x221)))+min ((2* min (-5* x114, -x114) +2* min (-6 *x214, 2* x211)), (-5* max (-x111, -5* x111) -5* max (2* x214, -6* x211)))+min ((min (-5* x124, -x124) +min (-6* x224, 2* x221)), (5* min (-5* x124, -x124) +5 *min (-6* x224, 2* x221))) == -1331;
eq4 = min ((6* min (-8* x114, -x114) +6* min (-4 *x214, 6* x211)), (-max (-x111, -8* x111) -max (6* x214, -4* x211)))+min ((min (-8* x124, -x124) +min (-4 *x224, 6* x221)), (7* min (-8* x124, -x124) +7 *min (-4* x224, 6* x221)))+min ((3* min (-5* x114, -x114) +3* min (-6* x214, 2* x211)), (6* min (-5* x114, -x114) +6* min (-6* x214, 2* x211)))+min ((4* min (-5 *x124, -x124) +4* min (-6* x224, 2* x221)), (-3* max (-x121, -5* x121) -3* max (2* x224, -6* x221))) == -1476;
eq5 = max ((max (3* x114, 8* x114) +max (2* x214, 11* x214)), (6* max (3* x114, 8* x114) +6 *max (2 *x214, 11 *x214)))+max ((-3 *min (3 *x121, 8* x121) -3* min (2 *x221, 11* x221)), (7 *max (3* x124, 8* x124) +7* max (2* x224, 11* x224)))+max ((-5* min (x111, 7* x111) -5 *min (3* x211, 7* x211)), (2 *max (x114, 7 *x114) + 2* max (3* x214, 7* x214)))+max ((max (x124, 7 *x124) +max (3 *x224, 7* x224)), (5 *max (x124, 7* x124) +5 *max (3 *x224, 7* x224))) == 1816;
eq6 = max ((-min (3* x111, 8* x111) -min (2* x211, 11* x211)), (6* max (3* x114, 8* x114) +6 *max (2* x214, 11* x214)))+max ((max (3* x124, 8* x124) +max (2* x224, 11* x224)), (7 *max (3 *x124, 8* x124) +7* max (2* x224, 11* x224)))+max ((3* max (x114, 7* x114) +3 *max (3 *x214, 7* x214)), (6* max (x114, 7* x114) +6* max (3 *x214, 7* x214)))+max ((-3* min (x121, 7* x121) -3* min (3 *x221, 7* x221)), (4* max (x124, 7* x124) +4* max (3 *x224, 7 *x224))) == 2019;
eq7 = max ((max (-x111, -8* x111) +max (6 *x214, -4 *x211)), (6* max (-x111, -8* x111) +6* max (6 *x214, -4 *x211)))+max ((-3* min (-8* x124, -x124) -3 *min (-4* x224, 6 *x221)), (7 *max (-x121, -8* x121) +7 *max (6 *x224, -4* x221)))+max ((-5* min (-5* x114, -x114) -5 *min (-6 *x214, 2* x211)), (2* max (-x111, -5* x111) +2 *max (2* x214, -6* x211)))+max ((max (-x121, -5 *x121) +max (2* x224, -6 *x221)), (5* max (-x121, -5 *x121) +5 *max (2 *x224, -6* x221))) == 968;
eq8 = max ((-min (-8 *x114, -x114) -min (-4 *x214, 6 *x211)), (6* max (-x111, -8* x111) +6* max (6* x214, -4 *x211)))+max ((max (-x121, -8 *x121) +max (6* x224, -4* x221)), (7 *max (-x121, -8 *x121) +7 *max (6* x224, -4* x221)))+max ((3 *max (-x111, -5 *x111) +3 *max (2* x214, -6 *x211)), (6 *max (-x111, -5* x111) +6* max (2 *x214, -6 *x211)))+max ((-3* min (-5* x124, -x124) -3 *min (-6* x224, 2* x221)), (4* max (-x121, -5 *x121) +4 *max (2 *x224, -6 *x221))) == 843;
sol = fsolve([eq1 eq2 eq3 eq4 eq5 eq6 eq7 eq8], [x111 x114 x121 x124 x211 x214 x221 x224]);
x1Sol = sol.x111;
x2Sol = sol.x114;
x3Sol = sol.x121;
x4Sol = sol.x124;
x5Sol = sol.x211;
x6Sol = sol.x214;
x7Sol = sol.x221;
x8Sol = sol.x224;
6 comentarios
Alex Sha
el 14 de Feb. de 2021
Hi, there are multi-solutions:
1:
x111: 30.3831047236785
x211: -5.54126479494526
x121: 9.07407123832865
x221: -7.80391047985726
x124: -15.6019440206575
x224: 13.9240811319989
x114: 8.43062122058869
x214: 1.743186775959
2:
x111: -2.68046897761557
x211: -1.34642477631217
x121: -4.35524991771589
x221: 4.83024881722802
x124: 13.8432911968638
x224: -6.73730121246132
x114: 2.7940467729709
x214: 7.22101075388942
3:
x111: -2.99999999999999
x211: 1.00000000000006
x121: 2.99999999999957
x221: -4.99999999999991
x124: 6.00000000000008
x224: 4.99999999999994
x114: 4.99999999999999
x214: 5.00000000000001
and more...
Walter Roberson
el 14 de Feb. de 2021
I can tell from the output that Alex used the program he commonly uses for optimization, which is named 1st Opt. It is a commercial third-party program that is not based on MATLAB. It gets good quality solutions. I am sometimes able to improve a little on the solutions using 1st Opt that he posts, but only with a lot of work.
Alex Sha
el 14 de Feb. de 2021
Hi, Ahmed, as Walter explained, the results provided above have been obtained by a software package named 1stOpt, the code is very simple like below:
Function
min((min(3*x111,8*x111)+min(2*x211,11*x211)),(6*min(3*x111,8*x111)+6*min(2*x211,11*x211)))+min((7*min(3*x121,8*x121)+7*min(2*x221,11*x221)),(-3*max(3*x124,8*x124)-3*max(2*x224,11*x224)))+min((2*min(x111,7*x111)+2*min(3*x211,7*x211)),(-5*max(x114,7*x114)-5*max(3*x214,7*x214)))+min((min(x121,7*x121)+min(3*x221,7*x221)),(5*min(x121,7*x121)+5*min(2*x221,7*x221)))==-964;
min ((6* min (3* x111, 8 *x111)+6* min (2* x211, 11 *x211)),(-max (3*x114, 8* x114) -max (2* x214, 11* x214)))+min ((min (3 *x121, 8* x121)+min (2* x221, 11* x221)),(7* min (3* x121, 8* x121)+7 *min (2 *x221, 11 *x221)))+ min ((3 *min (x111, 7* x111)+3 *min (3* x211, 7* x211)), (6 *min (x111, 7* x111)+6* min (3 *x211, 7* x211)))+min ((4 *min (x121, 7 *x121) +4 *min (3* x221, 7* x221)),(-3 *max (x124, 7 *x124) -3* max (3* x224, 7 *x224)))== -793;
min ((min (-8 *x114, -x114) +min (-4 *x214, 6* x211)), (6 *min (-8* x114, -x114) +6 *min (-4* x214, 6* x211)))+min ((7* min (-8* x124, -x124) +7* min (-4* x224, 6* x221)), (-3* max (-x121, -8* x121) -3* max (6* x224, -4* x221)))+min ((2* min (-5* x114, -x114) +2* min (-6 *x214, 2* x211)), (-5* max (-x111, -5* x111) -5* max (2* x214, -6* x211)))+min ((min (-5* x124, -x124) +min (-6* x224, 2* x221)), (5* min (-5* x124, -x124) +5 *min (-6* x224, 2* x221))) == -1331;
min ((6* min (-8* x114, -x114) +6* min (-4 *x214, 6* x211)), (-max (-x111, -8* x111) -max (6* x214, -4* x211)))+min ((min (-8* x124, -x124) +min (-4 *x224, 6* x221)), (7* min (-8* x124, -x124) +7 *min (-4* x224, 6* x221)))+min ((3* min (-5* x114, -x114) +3* min (-6* x214, 2* x211)), (6* min (-5* x114, -x114) +6* min (-6* x214, 2* x211)))+min ((4* min (-5 *x124, -x124) +4* min (-6* x224, 2* x221)), (-3* max (-x121, -5* x121) -3* max (2* x224, -6* x221))) == -1476;
max ((max (3* x114, 8* x114) +max (2* x214, 11* x214)), (6* max (3* x114, 8* x114) +6 *max (2 *x214, 11 *x214)))+max ((-3 *min (3 *x121, 8* x121) -3* min (2 *x221, 11* x221)), (7 *max (3* x124, 8* x124) +7* max (2* x224, 11* x224)))+max ((-5* min (x111, 7* x111) -5 *min (3* x211, 7* x211)), (2 *max (x114, 7 *x114) + 2* max (3* x214, 7* x214)))+max ((max (x124, 7 *x124) +max (3 *x224, 7* x224)), (5 *max (x124, 7* x124) +5 *max (3 *x224, 7* x224))) == 1816;
max ((-min (3* x111, 8* x111) -min (2* x211, 11* x211)), (6* max (3* x114, 8* x114) +6 *max (2* x214, 11* x214)))+max ((max (3* x124, 8* x124) +max (2* x224, 11* x224)), (7 *max (3 *x124, 8* x124) +7* max (2* x224, 11* x224)))+max ((3* max (x114, 7* x114) +3 *max (3 *x214, 7* x214)), (6* max (x114, 7* x114) +6* max (3 *x214, 7* x214)))+max ((-3* min (x121, 7* x121) -3* min (3 *x221, 7* x221)), (4* max (x124, 7* x124) +4* max (3 *x224, 7 *x224))) == 2019;
max ((max (-x111, -8* x111) +max (6 *x214, -4 *x211)), (6* max (-x111, -8* x111) +6* max (6 *x214, -4 *x211)))+max ((-3* min (-8* x124, -x124) -3 *min (-4* x224, 6 *x221)), (7 *max (-x121, -8* x121) +7 *max (6 *x224, -4* x221)))+max ((-5* min (-5* x114, -x114) -5 *min (-6 *x214, 2* x211)), (2* max (-x111, -5* x111) +2 *max (2* x214, -6* x211)))+max ((max (-x121, -5 *x121) +max (2* x224, -6 *x221)), (5* max (-x121, -5 *x121) +5 *max (2 *x224, -6* x221))) == 968;
max ((-min (-8 *x114, -x114) -min (-4 *x214, 6 *x211)), (6* max (-x111, -8* x111) +6* max (6* x214, -4 *x211)))+max ((max (-x121, -8 *x121) +max (6* x224, -4* x221)), (7 *max (-x121, -8 *x121) +7 *max (6* x224, -4* x221)))+max ((3 *max (-x111, -5 *x111) +3 *max (2* x214, -6 *x211)), (6 *max (-x111, -5* x111) +6* max (2 *x214, -6 *x211)))+max ((-3* min (-5* x124, -x124) -3 *min (-6* x224, 2* x221)), (4* max (-x121, -5 *x121) +4 *max (2 *x224, -6 *x221))) == 843;
running above code in 1stOpt, a number of qualified outcomes could be obtained, some more results:
4:
x111: -3.58695295911305
x211: -1.07445850909051
x121: 2.28498000867595
x221: -2.28614733165542
x124: 7.8754041983795
x224: 2.89049819889564
x114: 4.51941882428882
x214: 5.9927411320934
5:
x111: -17.7235672005484
x211: 11.2510753617849
x121: 108.850694404822
x221: 118.545735063581
x124: 7.37522534014823
x224: -6.20277399969955
x114: 20.7395783564568
x214: -10.1936285553793
the exactised one should be:
x111: -3
x211: 1
x121: 3
x221: -5
x124: 6
x224: 5
x114: 5
x214: 5
Walter Roberson
el 14 de Feb. de 2021
Alex Sha
el 16 de Feb. de 2021
Hi, some error or wrong input:
1: "6x112" should be "6*x112";
2: "==-206&&" should be "==-206;";
3: "-3X223,5X222" should be "-3*X223,5*X222";
4: "X*213" should be "X213";
5: "2Min(" should be "2*Min(".
After doing above modifications, the result will be:
x112: -6.7405060869832
x212: 2.36971338564915
x122: 9.82757565025085
x222: 2.73979655042066
x123: 2.66935775949842
x223: 3.48702836315802
x113: 8.53397905414663
x213: -0.859553149820282
Alex Sha
el 17 de Feb. de 2021
One more solution:
x112: -9.12751728247536
x212: -4.85242981963661
x122: 40.4685284423888
x222: 18.2309312718438
x123: -30.3270190436273
x223: 17.4965264223753
x113: 13.8173196565403
x213: -4.695181312283
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre Systems of Nonlinear Equations en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!