How to write if condition in gurobi 9.5? - gurobi

Any example for using if statement in gurobi 9.5 ?
its my first time to use gurobi. I am trying to implement the following code via if statement however i keep getting error or infeasible model.
m.addConstrs(p2g[t]==0 for t in range(A) if pv_generation[t]<=load[t] pfor t in range(A) )
m.addConstrs(p2g[t]==p2g[t] for t in range(A) if pv_generation[t]>load[t] for t in range(A))
I've checked the gurobi documentation but it doesn't provide any clear example

Related

How can I get test_value in PyMC(PyMC4)?

I am a newbie in Bayesian and Probabilistic inference, and sorry for this basic question. Recently I am following some examples in Bayesian Methods. And, the examples require me to use "tag.test_value." However, I am trying to use PyMC rather than PyMC3, so there is an error using the sentence. Although I tried to use others such as init_value, initial_value, it does not work...
Could you kindly let me know alternatives for that sentence to check the initial value in PyMC (that was originally test value in PyMC3)?
a = pm.Uniform("b", 0, 50)
print(a.tag.test_value)
AttributeError: 'ValidatingScratchpad' object has no attribute 'test_value
It appears that Aesara does not compute test value by default. You need to set aesara.config.compute_test_value = "warn". Then you can call a.get_test_value(). Hope this helps!

How to fix remove NAs from my regression table and fix error message when running expert summs

I am trying to export a table or a regression analysis summary. using the export_summs function keeps returning the error message: Error in [<-(*tmp*, , names(coef(fm)), value = coef(fm)) :
subscript out of bounds
Note that this issue did not happen with the exact same data before. I just ran it again with more efficient and statistically better model. everything else is the same. I have tried changing the coefficient names in several ways and omitting the missing values. summary() is not an issue. only when I try running export_summs(). another issue is that I have used na.action=na.omit in the regression formula and na.omit("regression formula") and NA still shows up as a value in my regression table.
How do I fix those two issues?
Appreciate the help.

Is there a way to modify a Gurobi parameter (MIPFOCUS) in a Pyomo environment?

I'm relatively new in Pyomo and Gurobi. I'm trying to solve a Non-Convex quadratic programming but the solver output give me the following issue:
"gurobipy.GurobiError: Quadratic equality constraints are non-convex. Set NonConvex parameter to 2 to solve model."
So, I'm trying to modify the solver parameter in order to obtain the correct result.
p.s. I'm already tryed to install gurobipy but the package manager Pip give me: "Could not find a version that satisfies the requirement gurobipy (from versions: )
No matching distribution found for gurobipy"
Tanks a lot for your time and consideration!
This page explains how to set parameters in Pyomo: https://pyomo.readthedocs.io/en/stable/working_models.html#sending-options-to-the-solver
optimizer.options["NonConvex"] = 2
or
results = optimizer.solve(instance, options="NonConvex=2")

Octave: quadprog index issue?

I am trying to run several files of code for an assignment. I am trying to solve an optimization problem using the "quadprog" function from the "optim" package.
quadprog is supposed to solve the optimization problem in a certain format and takes inputs H,f, A,b, Aeq, Beq, lb, ub.
The issue I am having involves my f which is a column vector of constants. To clarify, f looks like c*[1,1,1,1,1,1] where c is a constant. Quadprog seems to run my code just fine for certain values of c, but gives me the error:
error: index (_,49): but object has size 2x2
error: called from
quadprog at line 351 column 32
for other values of c. So, for example, 1/3 works, but 1/2 doesn't. Does anyone have any experience with this?
Sorry for not providing a working example. My code runs over several files and I seem to only be having problems with a specific value set that is very big. Thanks!
You should try the qp native Octave function.
You mention f is: c*[1,1,1,1,1,1] but, if c is a scalar, that is not a column vector. It seems very odd that a scalar value might produce a dimensions error...

#NLConstraint with vectorized constraint JuMP/Julia

I am trying to solve a problem involving the equating of sums of exponentials.
This is how I would do it hardcoded:
#NLconstraint(m, exp(x[25])==exp(x[14])+exp(x[18]))
This works fine with the rest of the code. However, when I try to do it for an arbitrary set of equations like the above I get an error. Here's my code:
#NLconstraint(m,[k=1:length(LHSSum)],sum(exp.(LHSSum[k][i]) for i=1:length(LHSSum[k]))==sum(exp.(RHSSum[k][i]) for i=1:length(RHSSum[k])))
where LHSSum and RHSSum are arrays containing arrays of the elements that need to be exponentiated and then summed over. That is LHSSum[1]=[x[1],x[2],x[3],...,x[n]]. Where x[i] are variables of type JuMP.Variable. Note that length(LHSSum)=length(RHSSum).
The error returned is:
LoadError: exp is not defined for type Variable. Are you trying to build a nonlinear problem? Make sure you use #NLconstraint/#NLobjective.
So a simple solution would be to simply do all the exponentiating and summing outside of the #NLconstraint function, so the input would be a scalar. However, this too presents a problem since exp(x) is not defined since x is of type JuMP.variable, whereas exp expects something of type real. This is strange since I am able to calculate exponentials just fine when the function is called within an #NLconstraint(). I.e. when I code this line#NLconstraint(m,exp(x)==exp(z)+exp(y)) instead of the earlier line, no errors are thrown.
Another thing I thought to do would be a Taylor Series expansion, but this too presents a problem since it goes into #NLconstraint land for powers greater than 2, and then I get stuck with the same vectorization problem.
So I feel stuck, I feel like if JuMP would allow for the vectorized evaluation of #NLconstraint like it does for #constraint, this would not even be an issue. Another fix would be if JuMP implements it's own exp function to allow for the exponentiation of JuMP.Variable type. However, as it is I don't see a way to solve this problem in general using the JuMP framework. Do any of you have any solutions to this problem? Any clever workarounds that I am missing?
I'm confused why i isn't used in the expressions you wrote. Do you mean:
#NLconstraint(m, [k = 1:length(LHSSum)],
sum(exp(LHSSum[k][i]) for i in 1:length(LHSSum[k]))
==
sum(exp(RHSSum[k][i]) for i in 1:length(RHSSum[k])))