objective function being miscalculated on this nonlineal optimization problem with loop structure on the objective function

조회 수: 2 (최근 30일)
So I'm trying to understand why my objective function seems to be misscalculated by any solver I use, here's the code:
% Optimization problem solution end effector four bar mechanism - mech eng
% Create optimization variables
r12 = optimvar("r1","LowerBound",0,"UpperBound",1000);
r22 = optimvar("r2","LowerBound",0,"UpperBound",1000);
Dx2 = optimvar("Dx","LowerBound",0,"UpperBound",2000);
r32 = optimvar("r3","LowerBound",0,"UpperBound",1000);
rp2 = optimvar("rp","LowerBound",0,"UpperBound",1000);
theta42 = optimvar("theta4","LowerBound",0,"UpperBound",6);
r4x2 = optimvar("r4x","LowerBound",0,"UpperBound",1000);
r4y2 = optimvar("r4y","LowerBound",-1000,"UpperBound",0);
theta1deinicio2 = optimvar("theta1deinicio","LowerBound",0,"UpperBound",...
6.28318530718);
Dy2 = optimvar("Dy","LowerBound",0,"UpperBound",263);
% Set initial starting point for the solver
initialPoint.r1 = repmat(200,size(r12));
initialPoint.r2 = repmat(928.2,size(r22));
initialPoint.Dx = repmat(337.62,size(Dx2));
initialPoint.r3 = repmat(615.65,size(r32));
initialPoint.rp = repmat(396.22,size(rp2));
initialPoint.theta4 = repmat(0.3926991,size(theta42));
initialPoint.r4x = repmat(722.52,size(r4x2));
initialPoint.r4y = repmat(-652.24,size(r4y2));
initialPoint.theta1deinicio = zeros(size(theta1deinicio2));
initialPoint.Dy = repmat(200,size(Dy2));
% Create problem
problem = optimproblem;
% Define problem objective
problem.Objective = fcn2optimexpr(@objectiveFcn,r12,r22,Dx2,r32,rp2,theta42,r4x2,...
r4y2,Dy2,theta1deinicio2);
objective = 9.5063e+04
% Define problem constraints
problem.Constraints = r12-sqrt(r4x2^2+r4y2^2)-r32+r22 <= 0;
% Set nondefault solver options
options = optimoptions("fmincon","PlotFcn","optimplotfvalconstr");
% Display problem information
show(problem);
OptimizationProblem : Solve for: Dx, Dy, r1, r2, r3, r4x, r4y, rp, theta1deinicio, theta4 minimize : objectiveFcn(r1, r2, Dx, r3, rp, theta4, r4x, r4y, Dy, theta1deinicio) subject to : (((r1 - sqrt((r4x.^2 + r4y.^2))) - r3) + r2) <= 0 variable bounds: 0 <= Dx <= 2000 0 <= Dy <= 263 0 <= r1 <= 1000 0 <= r2 <= 1000 0 <= r3 <= 1000 0 <= r4x <= 1000 -1000 <= r4y <= 0 0 <= rp <= 1000 0 <= theta1deinicio <= 6.2832 0 <= theta4 <= 6
% Solve problem
[solution,objectiveValue,reasonSolverStopped] = solve(problem,initialPoint,...
"Solver","fmincon","Options",options);
Solving problem using fmincon.
objective = 2.4085e+03
objective = 2.4085e+03
objective = 2.4085e+03
objective = 2.4085e+03
objective = 2.4085e+03
objective = 2.4085e+03
objective = 2.4085e+03
objective = 2.4085e+03
objective = 2.4085e+03
objective = 2.4085e+03
objective = 2.4085e+03
objective = 1.4083e+03
objective = 1.4083e+03
objective = 1.4083e+03
objective = 1.4083e+03
objective = 1.4083e+03
objective = 1.4083e+03
objective = 1.4083e+03
objective = 1.4083e+03
objective = 1.4083e+03
objective = 1.4083e+03
objective = 1.4083e+03
objective = 1.1007e+03
objective = 1.1007e+03
objective = 1.1007e+03
objective = 1.1007e+03
objective = 1.1007e+03
objective = 1.1007e+03
objective = 1.1007e+03
objective = 1.1007e+03
objective = 1.1007e+03
objective = 1.1007e+03
objective = 1.1007e+03
objective = 6.2053e+03
objective = 2.2735e+03
objective = 933.4434
objective = 933.4438
objective = 933.4437
objective = 933.4434
objective = 933.4433
objective = 933.4432
objective = 933.4434
objective = 933.4436
objective = 933.4427
objective = 933.4434
objective = 933.4430
objective = 460.5450
objective = 460.5454
objective = 460.5446
objective = 460.5450
objective = 460.5446
objective = 460.5459
objective = 460.5453
objective = 460.5442
objective = 460.5449
objective = 460.5450
objective = 460.5462
objective = 2.5411e+03
objective = 1.7859e+03
objective = 1.4562e+03
objective = 86.1400
objective = 86.1410
objective = 86.1400
objective = 86.1395
objective = 86.1399
objective = 86.1402
objective = 86.1401
objective = 86.1398
objective = 86.1388
objective = 86.1400
objective = 86.1402
objective = 1.2949e+03
objective = 98.5592
objective = 88.7104
objective = 128.5929
objective = 1.2440e+03
objective = 189.6439
objective = 38.6887
objective = 38.6877
objective = 38.6888
objective = 38.6893
objective = 38.6891
objective = 38.6882
objective = 38.6884
objective = 38.6891
objective = 38.6898
objective = 38.6887
objective = 38.6881
objective = 97.8826
objective = 27.8167
objective = 27.8157
objective = 27.8169
objective = 27.8173
objective = 27.8171
objective = 27.8162
objective = 27.8164
objective = 27.8171
objective = 27.8178
objective = 27.8167
objective = 27.8161
objective = 112.1928
objective = 102.4601
objective = 47.6635
objective = 23.2101
objective = 23.2110
objective = 23.2099
objective = 23.2095
objective = 23.2097
objective = 23.2105
objective = 23.2103
objective = 23.2097
objective = 23.2090
objective = 23.2101
objective = 23.2106
objective = 14.3017
objective = 14.3026
objective = 14.3016
objective = 14.3012
objective = 14.3014
objective = 14.3022
objective = 14.3020
objective = 14.3014
objective = 14.3008
objective = 14.3017
objective = 14.3023
objective = 57.2988
objective = 37.2194
objective = 25.9132
objective = 19.9546
objective = 43.7016
objective = 28.6775
objective = 21.2193
objective = 17.5035
objective = 15.6488
objective = 14.7223
objective = 14.2593
objective = 14.2583
objective = 14.2594
objective = 14.2598
objective = 14.2596
objective = 14.2588
objective = 14.2590
objective = 14.2596
objective = 14.2603
objective = 14.2593
objective = 14.2587
objective = 13.9585
objective = 13.9594
objective = 13.9583
objective = 13.9580
objective = 13.9581
objective = 13.9589
objective = 13.9587
objective = 13.9581
objective = 13.9575
objective = 13.9585
objective = 13.9590
objective = 13.9297
objective = 13.9287
objective = 13.9298
objective = 13.9302
objective = 13.9300
objective = 13.9292
objective = 13.9294
objective = 13.9301
objective = 13.9308
objective = 13.9297
objective = 13.9291
objective = 13.3352
objective = 13.3344
objective = 13.3353
objective = 13.3357
objective = 13.3355
objective = 13.3347
objective = 13.3349
objective = 13.3356
objective = 13.3363
objective = 13.3352
objective = 13.3346
objective = 13.5802
objective = 13.5811
objective = 13.5801
objective = 13.5797
objective = 13.5799
objective = 13.5806
objective = 13.5805
objective = 13.5798
objective = 13.5792
objective = 13.5802
objective = 13.5807
objective = 13.5401
objective = 13.5391
objective = 13.5402
objective = 13.5407
objective = 13.5404
objective = 13.5396
objective = 13.5398
objective = 13.5405
objective = 13.5412
objective = 13.5401
objective = 13.5395
objective = 12.8386
objective = 12.8376
objective = 12.8388
objective = 12.8392
objective = 12.8390
objective = 12.8382
objective = 12.8383
objective = 12.8390
objective = 12.8397
objective = 12.8386
objective = 12.8380
objective = 8.7165
objective = 8.7175
objective = 8.7165
objective = 8.7160
objective = 8.7164
objective = 8.7167
objective = 8.7167
objective = 8.7164
objective = 8.7154
objective = 8.7165
objective = 8.7168
objective = 13.7662
objective = 58.5852
objective = 34.1225
objective = 11.9904
objective = 21.1166
objective = 50.9357
objective = 10.7610
objective = 3.1328
objective = 3.1318
objective = 3.1329
objective = 3.1334
objective = 3.1330
objective = 3.1326
objective = 3.1327
objective = 3.1330
objective = 3.1340
objective = 3.1328
objective = 3.1326
objective = 5.0980
objective = 2.8046
objective = 2.8036
objective = 2.8046
objective = 2.8051
objective = 2.8047
objective = 2.8044
objective = 2.8044
objective = 2.8047
objective = 2.8057
objective = 2.8046
objective = 2.8043
objective = 23.4245
objective = 12.2120
objective = 6.9634
objective = 4.3471
objective = 22.5979
objective = 12.0854
objective = 6.8947
objective = 4.3154
objective = 3.0297
objective = 2.3879
objective = 2.3888
objective = 2.3878
objective = 2.3873
objective = 2.3877
objective = 2.3881
objective = 2.3880
objective = 2.3877
objective = 2.3867
objective = 2.3879
objective = 2.3881
objective = 2.4437
objective = 2.3670
objective = 2.3680
objective = 2.3670
objective = 2.3665
objective = 2.3669
objective = 2.3672
objective = 2.3672
objective = 2.3669
objective = 2.3659
objective = 2.3670
objective = 2.3673
objective = 3.7441
objective = 2.9387
objective = 2.5368
objective = 2.3360
objective = 2.3350
objective = 2.3361
objective = 2.3366
objective = 2.3362
objective = 2.3358
objective = 2.3359
objective = 2.3362
objective = 2.3372
objective = 2.3360
objective = 2.3358
objective = 2.2618
objective = 2.2628
objective = 2.2617
objective = 2.2612
objective = 2.2616
objective = 2.2620
objective = 2.2619
objective = 2.2616
objective = 2.2607
objective = 2.2618
objective = 2.2620
objective = 2.3802
objective = 2.2733
objective = 2.2723
objective = 2.2734
objective = 2.2739
objective = 2.2735
objective = 2.2731
objective = 2.2732
objective = 2.2735
objective = 2.2745
objective = 2.2733
objective = 2.2731
objective = 2.2435
objective = 2.2424
objective = 2.2435
objective = 2.2440
objective = 2.2436
objective = 2.2433
objective = 2.2433
objective = 2.2436
objective = 2.2446
objective = 2.2435
objective = 2.2432
objective = 2.3488
objective = 2.2882
objective = 2.2557
objective = 2.2390
objective = 2.2400
objective = 2.2389
objective = 2.2384
objective = 2.2388
objective = 2.2392
objective = 2.2391
objective = 2.2388
objective = 2.2378
objective = 2.2390
objective = 2.2392
objective = 2.2291
objective = 2.2280
objective = 2.2291
objective = 2.2296
objective = 2.2292
objective = 2.2289
objective = 2.2289
objective = 2.2292
objective = 2.2303
objective = 2.2291
objective = 2.2288
objective = 2.2175
objective = 2.2164
objective = 2.2175
objective = 2.2180
objective = 2.2176
objective = 2.2173
objective = 2.2173
objective = 2.2176
objective = 2.2187
objective = 2.2175
objective = 2.2172
objective = 2.2113
objective = 2.2123
objective = 2.2113
objective = 2.2108
objective = 2.2111
objective = 2.2115
objective = 2.2115
objective = 2.2112
objective = 2.2102
objective = 2.2113
objective = 2.2116
objective = 74.1826
objective = 75.3897
objective = 2.1891
objective = 2.1901
objective = 2.1891
objective = 2.1886
objective = 2.1889
objective = 2.1893
objective = 2.1893
objective = 2.1890
objective = 2.1880
objective = 2.1891
objective = 2.1894
objective = 120.9777
objective = 68.6317
objective = 72.2179
objective = 74.0854
objective = 2.1803
objective = 2.1813
objective = 2.1803
objective = 2.1798
objective = 2.1802
objective = 2.1805
objective = 2.1805
objective = 2.1802
objective = 2.1792
objective = 2.1803
objective = 2.1806
objective = 73.5252
objective = 74.8790
objective = 2.1604
objective = 2.1593
objective = 2.1604
objective = 2.1609
objective = 2.1605
objective = 2.1601
objective = 2.1602
objective = 2.1605
objective = 2.1615
objective = 2.1604
objective = 2.1601
objective = 73.3246
objective = 74.3837
objective = 74.9140
objective = 75.1794
objective = 2.1567
objective = 2.1577
objective = 2.1566
objective = 2.1561
objective = 2.1565
objective = 2.1569
objective = 2.1568
objective = 2.1565
objective = 2.1555
objective = 2.1567
objective = 2.1570
objective = 73.1073
objective = 74.3678
objective = 74.9005
objective = 75.1670
objective = 2.1552
objective = 2.1544
objective = 2.1552
objective = 2.1558
objective = 2.1554
objective = 2.1550
objective = 2.1550
objective = 2.1554
objective = 2.1564
objective = 2.1552
objective = 2.1549
objective = 103.1146
objective = 74.5344
objective = 74.9826
objective = 75.2084
objective = 2.1550
objective = 2.1561
objective = 2.1550
objective = 2.1545
objective = 2.1549
objective = 2.1552
objective = 2.1552
objective = 2.1549
objective = 2.1547
objective = 2.1550
objective = 2.1553
objective = 597.2594
objective = 10.1469
objective = 6.1650
objective = 4.1636
objective = 12.4734
objective = 7.3360
objective = 4.7524
objective = 3.4568
objective = 2.8080
objective = 2.4834
objective = 2.3210
objective = 2.2398
objective = 2.1991
objective = 2.1786
objective = 2.1681
objective = 2.1614
objective = 2.1578
objective = 2.1560
objective = 2.1551
objective = 2.1547
objective = 2.1557
objective = 2.1546
objective = 2.1544
objective = 2.1545
objective = 2.1549
objective = 2.1548
objective = 2.1545
objective = 2.1551
objective = 2.1547
objective = 2.1549
objective = 307.3561
objective = 2.1548
objective = 2.1547
objective = 2.1547
objective = 2.1550
objective = 2.1547
objective = 2.1548
objective = 2.1547
objective = 2.1552
objective = 2.1548
objective = 2.1544
objective = 2.1545
objective = 2.1548
objective = 2.1558
objective = 2.1547
objective = 2.1544
objective = 276.8682
objective = 2.1545
objective = 2.1550
objective = 2.1545
objective = 2.1551
objective = 2.1547
objective = 2.1543
objective = 2.1543
objective = 2.1547
objective = 2.1557
objective = 2.1545
objective = 2.1542
objective = 50.4338
objective = 41.9026
objective = 58.2192
objective = 13.4405
objective = 2.1547
objective = 2.1547
objective = 2.1548
objective = 2.1548
objective = 2.1548
objective = 2.1548
objective = 2.1548
objective = 2.1544
objective = 2.1555
objective = 2.1544
objective = 2.1546
objective = 2.1543
objective = 2.1547
objective = 2.1546
objective = 2.1543
objective = 2.1552
objective = 2.1544
objective = 2.1547
objective = 119.7865
objective = 2.1545
objective = 2.1545
objective = 2.1544
objective = 2.1543
objective = 2.1552
objective = 2.1543
objective = 2.1548
objective = 2.1544
objective = 2.1544
objective = 2.1544
objective = 2.1544
objective = 2.1554
objective = 2.1543
objective = 2.1545
objective = 32.0311
objective = 2.1543
objective = 2.1543
objective = 2.1543
objective = 2.1553
objective = 2.1551
objective = 2.1550
objective = 2.1547
objective = 2.1545
objective = 2.1544
objective = 2.1543
objective = 2.1543
objective = 2.1543
objective = 2.1543
objective = 2.1543
objective = 2.1543
Local minimum possible. Constraints satisfied. fmincon stopped because the size of the current step is less than the value of the step size tolerance and constraints are satisfied to within the value of the constraint tolerance.
% Display results
solution
solution = struct with fields:
Dx: 342.4900 Dy: 118.1782 r1: 173.7786 r2: 950.8467 r3: 638.5143 r4x: 708.5907 r4y: -622.1340 rp: 392.7791 theta1deinicio: 5.6040 theta4: 0.2238
reasonSolverStopped
reasonSolverStopped =
StepSizeBelowTolerance
objectiveValue
objectiveValue = 2.1543
% Clear variables
clearvars r12 r22 Dx2 r32 rp2 theta42 r4x2 r4y2 theta1deinicio2 Dy2 initialPoint...
options reasonSolverStopped objectiveValue
% Create variables with the same name as the fields and assign their values
Dx = solution.Dx;
Dy = solution.Dy;
r1 = solution.r1;
r2 = solution.r2;
r3 = solution.r3;
r4x = solution.r4x;
r4y = solution.r4y;
rp = solution.rp;
theta1deinicio = solution.theta1deinicio;
theta4 = solution.theta4;
columna5_111=[22.1941 22.2252 22.2057 22.1055 21.8999 21.5734 21.1196 20.5384 19.8340 19.0129 18.0821 17.0483 15.9172 14.6941 13.3829 11.9873 10.5101 8.9532 7.3191 5.6105 3.8307 1.9837 0.0743 -1.8923 -3.9100 -5.9708 -8.0641 -10.1760 -12.2872 -14.3702 -16.3874 -18.2934 -20.0408 -21.5872 -22.8985 -23.9500 -24.7268 -25.2235 -25.4442 -25.4032 -25.1254 -24.6455 -24.0024 -23.2369 -22.3861 -21.4818 -20.5483 -19.6017 -18.6510 -17.7012 -16.7555 -15.8161 -14.8844 -13.9625 -13.0538 -12.1622 -11.2902 -10.4376 -9.6025 -8.7820 -7.9722 -7.1722 -6.3842 -5.6121 -4.8585 -4.1247 -3.4099 -2.7114 -2.0255 -1.3478 -0.6717 0.0110 0.7059 1.4147 2.1355 2.8651 3.6007 4.3392 5.0781 5.8178 6.5604 7.3093 8.0673 8.8370 9.6191 10.4118 11.2119 12.0162 12.8221 13.6283 14.4347 15.2417 16.0500 16.8600 17.6706 18.4758 19.2658 20.0331 20.7747 21.4928 22.1904];
columna5_222=[7.8413 8.3896 8.9730 9.5763 10.1823 10.7732 11.3302 11.8334 12.2626 12.5988 12.8252 12.9286 12.9012 12.7416 12.4542 12.0483 11.5363 10.9327 10.2537 9.5159 8.7363 7.9310 7.1159 6.3074 5.5225 4.7783 4.0927 3.4834 2.9669 2.5568 2.2612 2.0796 2.0014 2.0060 2.0661 2.1515 2.2329 2.2864 2.2963 2.2563 2.1694 2.0452 1.8963 1.7357 1.5738 1.4182 1.2737 1.1416 1.0213 0.9108 0.8080 0.7110 0.6181 0.5288 0.4431 0.3623 0.2874 0.2198 0.1606 0.1106 0.0702 0.0396 0.0182 0.0053 0 0.0015 0.0094 0.0237 0.0445 0.0720 0.1070 0.1503 0.2031 0.2663 0.3402 0.4248 0.5198 0.6245 0.7385 0.8620 0.9956 1.1405 1.2979 1.4692 1.6554 1.8571 2.0746 2.3085 2.5594 2.8287 3.1185 3.4320 3.7732 4.1470 4.5583 5.0099 5.5019 6.0333 6.6014 7.2028 7.8331];
columna5_11=-columna5_111*10;
columna5_22=columna5_222*10;
for i = 1:101
Ppy(i) = columna5_22(i) - Dy;
theta11gradosi = rad2deg(theta1deinicio);
theta1(i) = deg2rad(theta11gradosi) + ((2*pi)/101)*(i-1);
Ppx(i) = columna5_11(i) - Dx;
A = r1*cos(theta1(i))+r4x;
B = r1*sin(theta1(i))+r4y;
C = (r3^2 - A^2 - r2^2 - B^2)/(2*r2);
theta2 = 2*atan((B - sqrt(B^2 + A^2 - C^2))/(A + C));
rpp=rp;
thetap=theta2+theta4;
EEPx(i)=r1*cos(theta1(i))+rpp*cos(thetap);
EEPy(i)=r1*sin(theta1(i))+rpp*sin(thetap);
EEPx(102)=EEPx(1);
EEPy(102)=EEPy(1);
end
plot(EEPx,EEPy,Ppx,Ppy)
function objective = objectiveFcn(r1,r2,Dx,r3,rp,theta4,r4x,r4y,Dy,theta1deinicio)
columna5_111=[22.1941 22.2252 22.2057 22.1055 21.8999 21.5734 21.1196 20.5384 19.8340 19.0129 18.0821 17.0483 15.9172 14.6941 13.3829 11.9873 10.5101 8.9532 7.3191 5.6105 3.8307 1.9837 0.0743 -1.8923 -3.9100 -5.9708 -8.0641 -10.1760 -12.2872 -14.3702 -16.3874 -18.2934 -20.0408 -21.5872 -22.8985 -23.9500 -24.7268 -25.2235 -25.4442 -25.4032 -25.1254 -24.6455 -24.0024 -23.2369 -22.3861 -21.4818 -20.5483 -19.6017 -18.6510 -17.7012 -16.7555 -15.8161 -14.8844 -13.9625 -13.0538 -12.1622 -11.2902 -10.4376 -9.6025 -8.7820 -7.9722 -7.1722 -6.3842 -5.6121 -4.8585 -4.1247 -3.4099 -2.7114 -2.0255 -1.3478 -0.6717 0.0110 0.7059 1.4147 2.1355 2.8651 3.6007 4.3392 5.0781 5.8178 6.5604 7.3093 8.0673 8.8370 9.6191 10.4118 11.2119 12.0162 12.8221 13.6283 14.4347 15.2417 16.0500 16.8600 17.6706 18.4758 19.2658 20.0331 20.7747 21.4928 22.1904];
columna5_222=[7.8413 8.3896 8.9730 9.5763 10.1823 10.7732 11.3302 11.8334 12.2626 12.5988 12.8252 12.9286 12.9012 12.7416 12.4542 12.0483 11.5363 10.9327 10.2537 9.5159 8.7363 7.9310 7.1159 6.3074 5.5225 4.7783 4.0927 3.4834 2.9669 2.5568 2.2612 2.0796 2.0014 2.0060 2.0661 2.1515 2.2329 2.2864 2.2963 2.2563 2.1694 2.0452 1.8963 1.7357 1.5738 1.4182 1.2737 1.1416 1.0213 0.9108 0.8080 0.7110 0.6181 0.5288 0.4431 0.3623 0.2874 0.2198 0.1606 0.1106 0.0702 0.0396 0.0182 0.0053 0 0.0015 0.0094 0.0237 0.0445 0.0720 0.1070 0.1503 0.2031 0.2663 0.3402 0.4248 0.5198 0.6245 0.7385 0.8620 0.9956 1.1405 1.2979 1.4692 1.6554 1.8571 2.0746 2.3085 2.5594 2.8287 3.1185 3.4320 3.7732 4.1470 4.5583 5.0099 5.5019 6.0333 6.6014 7.2028 7.8331];
columna5_11=-columna5_111*10;
columna5_22=columna5_222*10;
j=1;
i=1;
J2 = 0;
for i = 1:101
Ppy(i) = columna5_22(i) - Dy;
theta11gradosi = theta1deinicio;
theta1(i) = deg2rad(theta11gradosi) + ((2*pi)/101)*(i-1);
Ppx(i) = columna5_11(i) - Dx;
A = r1*cos(theta1(i))+r4x;
B = r1*sin(theta1(i))+r4y;
C = (r3^2 - A^2 - r2^2 - B^2)/(2*r2);
theta2 = 2*atan((B - sqrt(B^2 + A^2 - C^2))/(A + C));
rpp=rp;
thetap=theta2+theta4;
EEPx(i)=r1*cos(theta1(i))+rpp*cos(thetap);
EEPy(i)=r1*sin(theta1(i))+rpp*sin(thetap);
EEPx(102)=EEPx(1);
EEPy(102)=EEPy(1);
end
min_dist = Inf;
accumulated_dist = zeros(101, 1); % Initialize an array to store the minimum distances
for i = 1:101
% Find the closest point on the second curve to the i-th point on the first curve
distances = sqrt((EEPx - Ppx(i)).^2 + (EEPy - Ppy(i)).^2);
[dist, j] = min(distances);
KA=0;
% Check if the distance is smaller than the current minimum
if dist < min_dist
% Calculate the orthogonal distance between the two curves
if i == 101
i1 = 1;
else
i1 = i+1;
end
if j == 101
j1 = 1;
else
j1 = j+1;
end
v1 = [EEPx(j) - Ppx(i), EEPy(j) - Ppy(i)];
v2 = [EEPx(j1) - Ppx(i1), EEPy(j1) - Ppy(i1)];
orth_dist = abs(det([v1; v2])) / norm(v2 - v1);
% Update the minimum distance and accumulated distance if necessary
min_dist = dist * sin(acos(dot(v1, v2) / (norm(v1) * norm(v2)))) + orth_dist;
accumulated_dist(i) = min_dist;
else
% If the new distance is not smaller than the current minimum, set the accumulated distance to the previous minimum
accumulated_dist(i) = min_dist;
end
end
objective = sum(accumulated_dist)
end
So it seems ok, when I run the code it gives me a solution for which apparently the objective function has a pretty "low" value:
I want to add that the problem has a solution, I got it from a paper, both curves (the orange and blue) do get really close, not perfect, but close, and just think, why does the objective value that is the result of the sum of the distance of all the 101 points could be so small.
I ran the objective function in another code with the solution values it gave me:
Not even close, not even true. so yeah, something is off.
  댓글 수: 10
Torsten
Torsten 2023년 2월 27일
Me too ... But there are two curves. Black in the image corresponds to red in MATLAB and red in the image corresponds to blue in MATLAB ? Are there also coordinates given in the image ?
José David Castillo Blanco
José David Castillo Blanco 2023년 2월 27일
편집: José David Castillo Blanco 2023년 2월 27일
yeah, like you said
and no, no coordinates, that's why the origin of the points "Dx" and "Dy"
Ppy(i) = columna5_22(i) - Dy;
theta11gradosi = theta1deinicio;
theta1(i) = deg2rad(theta11gradosi) + ((2*pi)/101)*(i-1);
Ppx(i) = columna5_11(i) - Dx;
is part of the optimization, to see their distance from my reference.

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Get Started with Optimization Toolbox에 대해 자세히 알아보기

제품


릴리스

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by