## Problem Description and Formulation

The jeweler has 1000 units of gold to make rings and necklaces. The goal is to maximize profit given the following constraints:

- Each ring needs 2 units of gold.
- Each necklace needs 3 units of gold.
- At least three times as many rings are needed than necklaces.
- There needs to be at least 50 necklaces made.
- The profit per ring is $50.
- The profit per necklace is $75.

## Mathematical Formulation

Let \(R\) be the number of rings and \(N\) be the number of necklaces.

### Objective Function

Maximize profit: \(50R + 75N\)

### Constraints

1. Gold constraint: \(2R + 3N \leq 1000\)
2. Ring-necklace ratio constraint: \(R \geq 3N\)
3. Necklace minimum constraint: \(N \geq 50\)
4. Non-negativity constraints: \(R \geq 0, N \geq 0\)

Since \(R\) and \(N\) represent quantities of items, we implicitly assume they are integers. However, for the purpose of this linear programming problem, we will first solve it without integer constraints and then consider if an integer solution is required.

## Gurobi Code

```python
import gurobi

def solve_jeweler_problem():
    # Create a new model
    model = gurobi.Model()

    # Define variables
    R = model.addVar(lb=0, name="Rings")
    N = model.addVar(lb=0, name="Necklaces")

    # Objective function: Maximize profit
    model.setObjective(50*R + 75*N, gurobi.GRB.MAXIMIZE)

    # Constraints
    model.addConstr(2*R + 3*N <= 1000, name="Gold_Constraint")
    model.addConstr(R >= 3*N, name="Ring_Necklace_Ratio")
    model.addConstr(N >= 50, name="Necklace_Minimum")

    # Optimize
    model.optimize()

    # Print solution
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal solution: Rings = {R.varValue}, Necklaces = {N.varValue}")
        print(f"Max Profit: ${model.objVal:.2f}")
    else:
        print("No optimal solution found.")

solve_jeweler_problem()
```

This code sets up the optimization problem as described, using Gurobi's Python interface. It defines the variables, sets up the objective function and constraints, and then solves the problem. The solution is printed out, including the optimal number of rings and necklaces to produce and the maximum achievable profit. 

Note that this problem is a linear program and does not explicitly require integer solutions for \(R\) and \(N\). However, in practice, you might need to add integrality constraints if fractional numbers of items cannot be produced. To enforce integer solutions, you would add `R.integrality = 1` and `N.integrality = 1` after defining the variables.