forum.alglib.nethttp://forum.alglib.net/ Matrix constraintshttp://forum.alglib.net/viewtopic.php?f=2&t=4473 Page 1 of 1

 Author: dzuniman [ Wed Aug 24, 2022 8:15 am ] Post subject: Matrix constraints I have a quadratic programming problem in C#.I am solving for 4 variables X = [x1,x2,x3,x4] subject to a constraint with -1 < (X*R - Y)T < 1. R is a 4x6 matrix, Y is a vector of 6 values and T is a vector of 6 values.Can you please assist me how I can archive this. I believe the constraint is linear but not sure how to represent it. Please assist.X is transposed.

 Author: Sergey.Bochkanov [ Thu Aug 25, 2022 9:30 pm ] Post subject: Re: Matrix constraints Hi!If the only unknown in your problem is X (i.e. Y is known and fixed), then you should simply pass R^T to the minqpsetlc2() function. If Y is also unknown, i.e. you solve for both X and Y, then you should augment R^T with minus identity matrix -I, i.e. append it (not add!) to R^T.Sergey

 Author: dzuniman [ Fri Aug 26, 2022 9:43 am ] Post subject: Re: Matrix constraints X = [x1, x2, x3, x4]R = {[R11, R12, R13, R14, R15, R16], [R21, R22, R23, R24, R25, R26], [R31, R32, R33, R34, R35, R36], [R41, R42, R43, R44, R45, R46]}L = [L1, L2, L3, L4, L5, L6]T = [T1, T2, T3, T4, T5, T6]Constraint = (X * R - L)*T = 0X is what I am trying to solve with the given constraint. R, L and T are fixed.Below is a snap of my code. Please give me an example code how I can include the constraint.public double[] Optimize() { double[] x = new double[] { 0, 0, 0, 0 }; double[] s = new double[] { 1, 1, 1, 1 }; double[] lb = new double[] { 0, 0, 0, 0}; double[] ub = new double[] { double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity }; double epsx = 0.0000000001; int maxits = 0; alglib.minlmstate state; alglib.minlmreport rep; alglib.minlmcreatev(4, x, 0.0001, out state); alglib.minlmsetbc(state, lb, ub); alglib.minlmsetcond(state, epsx, maxits); alglib.minlmsetscale(state, s); alglib.minlmoptimize(state, Objective, null, null); alglib.minlmresults(state, out x, out rep); return x; }

 Author: Sergey.Bochkanov [ Fri Aug 26, 2022 4:38 pm ] Post subject: Re: Matrix constraints Hi!The answer depends on whether multiplication by T in (X * R - L)*T is a scalar product or a component-wise product.In the former case your formula reduces to just one linear equality: dot_product(X,R*T) = dot_product(L,T). You have to precompute transposed matrix-vector product transp(R*T) - it will be a left part of your single-row linear constraint matrix. And you have to compute a product of L and T - it will be its constant right part. Then call minlmsetlc(), with both values packed into its parameter C.In the latter case (component-wise product) you have 6 equality constraints (as many as you have components in T).

 Author: dzuniman [ Mon Aug 29, 2022 7:29 am ] Post subject: Re: Matrix constraints Thanks a lot! This did the trick.

 Page 1 of 1 All times are UTC Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Grouphttp://www.phpbb.com/