Change Value during optimization process
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hey,
is it possible to change a value during the optimization loop?
Example: I want to maximize x and y
lb = lowerbound ub = upperbound
a = lb(0) ub(100)
b = lb(0) ub(50)
x = a+b
y = a+b
To archieve the solution I need the solution to be x = 50 + 25 and y = 50 + 25 how would i express this in code? Thanks!
example code I thought of but doesnt work
xyprob = optimproblem;
a = optimvar('a','LowerBound',0,'UpperBound',500);
b = optimvar('b','LowerBound',0,'UpperBound',100);
y = optimvar('y');
x = optimvar('x');
xyprob.ObjectiveSense = 'maximize';
xyprob.Objective = x
xyprob.Objective = y
xyprob.Constraints.econs1 = x == a+b
xyprob.Constraints.econs2 = y == a+b
[xysol,fval] = solve(xyprob);
tbl = struct2table(xysol)
2 Kommentare
Matt J
am 10 Okt. 2018
Bearbeitet: Matt J
am 10 Okt. 2018
Example: I want to maximize x and y
Since x=y why don't we just say that we are maximizing x?
If x~=y, what does it mean to maximize two objectives at once in a linear program?
Why are x and y optimvars at all? Why wouldn't you just have
a = optimvar('a','LowerBound',0,'UpperBound',500);
b = optimvar('b','LowerBound',0,'UpperBound',100);
xyprob.Objective = a+b ;
Akzeptierte Antwort
Matt J
am 11 Okt. 2018
How about this?
xyprob = optimproblem;
xa = optimvar('xa','LowerBound',0,'UpperBound',100);
xb = optimvar('xb','LowerBound',0,'UpperBound',50);
ya = optimvar('ya','LowerBound',0,'UpperBound',100);
yb = optimvar('yb','LowerBound',0,'UpperBound',50);
xyprob.ObjectiveSense = 'maximize';
xyprob.Objective = xa+xb;
xyprob.Constraints.econs1 = xa+ya <= 100;
xyprob.Constraints.econs2 = xb+yb <= 50;
xyprob.Constraints.econs3 = xa+xb == ya+yb;
xyprob.Constraints.econs4 = xa+xb + ya+yb == 150;
[xysol,fval] = solve(xyprob);
tbl = struct2table(xysol)
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Linear Least Squares finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!