forum.alglib.net

ALGLIB forum
 It is currently Fri Sep 22, 2023 9:44 pm

 All times are UTC

Forum rules

1. This forum can be used for discussion of both ALGLIB-related and general numerical analysis questions
2. This forum is English-only - postings in other languages will be removed.

 Page 1 of 1 [ 5 posts ]
 Print view Previous topic | Next topic
Author Message
 Post subject: Matrix constraintsPosted: Wed Aug 24, 2022 8:15 am

Joined: Fri Jul 08, 2022 1:16 pm
Posts: 3
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.

Top

 Post subject: Re: Matrix constraintsPosted: Thu Aug 25, 2022 9:30 pm

Joined: Fri May 07, 2010 7:06 am
Posts: 891
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

Top

 Post subject: Re: Matrix constraintsPosted: Fri Aug 26, 2022 9:43 am

Joined: Fri Jul 08, 2022 1:16 pm
Posts: 3
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 = 0

X 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;
}

Top

 Post subject: Re: Matrix constraintsPosted: Fri Aug 26, 2022 4:38 pm

Joined: Fri May 07, 2010 7:06 am
Posts: 891
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).

Top

 Post subject: Re: Matrix constraintsPosted: Mon Aug 29, 2022 7:29 am

Joined: Fri Jul 08, 2022 1:16 pm
Posts: 3
Thanks a lot! This did the trick.

Top

 Display posts from previous: All posts1 day7 days2 weeks1 month3 months6 months1 year Sort by AuthorPost timeSubject AscendingDescending
 Page 1 of 1 [ 5 posts ]

 All times are UTC

Who is online

Users browsing this forum: No registered users and 1 guest

 You cannot post new topics in this forumYou cannot reply to topics in this forumYou cannot edit your posts in this forumYou cannot delete your posts in this forumYou cannot post attachments in this forum

Search for: