[R] Problem with function gp in package cccp
koiier m@iii@g oii scie@ce@iwi@@c@@t
koiier m@iii@g oii scie@ce@iwi@@c@@t
Fri Aug 1 17:39:30 CEST 2025
Thank you, Jeff and Bert!
1. As to the unconstrained problem I gave (which is not my main concern)
I should have added that in geometric programming it is assumed that the
target variables are positive, thus x,y > 0. This would also rule out my
given solution, (0, 0), of the unconstrained problem. The positivity
constraint in geometric programming is a consequence of the role the
logarithmic transformation plays in the theory of geometric programming.
2. However, my concern is to find out how to define equality constraints
and submit them as an argument to gp(), so I wanted to try out the most
simple case. But it seems as gp() implicitely assumes there must be at
least inequality constraints. If I add inequality constraints, then my
equality constraints are not ignored by gp(). So, in the following
example, I added a non-binding inequality constraint, and I receive the
correct solution, this time for the correct reasons:
## Minimise P + Q subject to P*Q = 1 and 0.5*P^(-1)*Q^(-1) <= 1
F0 <- diag(2) # [m0 * n] m0 = number of terms of
the posynomial, n = number of variables
g0 <- log(matrix(1,2,1)) # [m0 * 1]
bexp <- 1
A <- matrix(c(1,1), 1, 2) # one constraint, one row
b <- log(matrix(bexp, 1, 1))
F1 <- matrix(c(-1,-1), 1, 2) # additional (redundant) inequality
constraint [m1 * n] m1 = number of terms of the posynomial
g1 <- log(matrix(0.5*bexp, 1, 1)) # [m1 * 1]
RES <- gp(F0, g0, FList=list(F1), gList=list(g1), A=A, b=b)
sol <- RES$pdv$x
c(sol) # [1] 1 1
RES <- gp(F0, g0, FList=list(F1), gList=list(g1)) # without the
equality constraint
sol <- RES$pdv$x
c(sol) # [1] 0.7071069 0.7071069
Best regards,
Wolfgang
Am 2025-08-01 04:18, schrieb Jeff Reichman:
> In gp(F0, g0, A = A, b = b) : No restrictions provided, trying solve()
>
>
> This likely means that while you've specified A and b, the solver
> doesn't
> recognize any inequality (<=) or equality (=) restrictions - because in
> the
> context of the gp() function from the CVXR or similar geometric
> programming
> libraries in R, you're expected to provide explicit inequality/equality
> markers or properly formatted constraint matrices.
>
> So what's missing? Probably an argument like ineq = ... or eq = ... to
> declare the type of constraint.
>
> Here's how to express your constraint properly, assuming the library
> expects
> inequalities or equalities to be marked explicitly:
>
> # Properly declare equality constraints
> gp(F0, g0, eq=A, eq.b=b)
>
> Or possibly (depending on the package):
>
> gp(F0, g0, Aeq=A, beq=b)
>
> If the solver expects inequality constraints:
>
> gp(F0, g0, A=A, b=b, meq=1) # Indicating 1 equality constraint
>
> Jeff Reichman
>
>
> -----Original Message-----
> From: R-help <r-help-bounces using r-project.org> On Behalf Of
> koller using science.iwi.ac.at
> Sent: Wednesday, July 30, 2025 2:32 PM
> To: r-help using r-project.org
> Subject: [R] Problem with function gp in package cccp
>
> Dear all!
>
> I tried to solve a simple test example of a geometric program:
> minimize x + y s.t. xy = 1
> The solution should be (1, 1).
>
> I tried:
> F0 <- diag(2) # [m * n] m = number of terms of the
> posynomial, n = number of variables
> g0 <- log(matrix(1,2,1)) # [m * 1]
> A <- matrix(c(1,1), 1, 2) # one constraint, one row
> b <- log(matrix(1,1,1))
> RES <- gp(F0, g0, A=A, b=b)
>
> Though I received the correct solution, the function gives a warning:
> In gp(F0, g0, A = A, b = b) : No restrictions provided, trying solve().
>
> Also, when I try
> RES <- gp(F0, g0, A="A", b=b)
> or
> gp(F0, g0)
>
> receiving the same result, I find out, that my equality constraints are
> not
> considered at all.
>
> In my view, the unconstraint problem should have (0, 0) as a solution,
> btw.
>
> Am I missing something fundamental?
>
> Thanks in advance!
>
> Wolfgang
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> https://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
More information about the R-help
mailing list