# How to model two exponential cones \>= a specific value with JuMP?

**URL:** <https://discourse.julialang.org/t/how-to-model-two-exponential-cones-a-specific-value-with-jump/66589>\
**Category:** Optimization (Mathematical)\
**Tags:** question, jump\
**Created:** [August 18, 2021, 8:13am UTC](https://discourse.julialang.org/t/how-to-model-two-exponential-cones-a-specific-value-with-jump/66589 "2021-08-18T08:13:36Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![zlq178](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zlq178/32/17952_2.png) [@zlq178](https://discourse.julialang.org/u/zlq178)\
**Post date:** [August 18, 2021, 8:13am UTC](https://discourse.julialang.org/t/how-to-model-two-exponential-cones-a-specific-value-with-jump/66589/1 "2021-08-18T08:13:36Z")

</div>

The model is as follow:  
obj: min a_exp(b)+c_exp(d)  
subject to: 1\<=a\<=2  
1\<=b\<=2  
0.5\<=c\<=2  
0.5\<=d\<=2  
a_exp(b)+c_exp(d)\>=0.5  
 ![image](https://global.discourse-cdn.com/julialang/original/3X/6/0/6038a4ef59e730de64fff14dc501eee9669c96b0.png)

I see the exponential cones in Jump’s example is smaller than one specific value. Is there an idea to model the proposed problem?

---

<div class="post-metadata">

**Author:** ![blegat](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/blegat/32/217090_2.png) [@blegat](https://discourse.julialang.org/u/blegat)\
**Post date:** [August 18, 2021, 12:31pm UTC](https://discourse.julialang.org/t/how-to-model-two-exponential-cones-a-specific-value-with-jump/66589/2 "2021-08-18T12:31:02Z")

</div>

With SCS you need a conic formulation so you need to use the [`ExponentialCone`](https://jump.dev/MathOptInterface.jl/stable/reference/standard_form/#MathOptInterface.ExponentialCone).  
You see in the doc that `(x, y, z)` is in the cone iff `y exp(x / y) <= z` and `y > 0`.  
So for instance `exp(a) <= b` is rewritten as `[a, 1, b] in ExponentialCone()`.  
It’s not clear to me how to reformulate your model into a conic program though.  
It does not even clear that the problem is convex.  
For instance, in `0.5 <= a * exp(b) + c * exp(d)`, for the problem to be convex, you would need `a * exp(b)` to be concave in `a` and `b` while it is convex in the direction `b`.  
If you replace `@objective` with `@NLobjective` and `@constraint` by `@NLconstraint`, you can use a nonlinear solver like Ipopt or NLopt.
