Solving non linear system
Show older comments
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 Comments
Alex Sha
on 14 Feb 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
on 14 Feb 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
on 14 Feb 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
on 14 Feb 2021
Alex Sha
on 16 Feb 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
on 17 Feb 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
Accepted Answer
More Answers (0)
Categories
Find more on Systems of Nonlinear Equations in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!