To solve this optimization problem, we need to define the decision variables, objective function, and constraints. Let's denote the number of almond tins as \(A\) and the number of cashew tins as \(C\).

- Decision Variables: \(A\) (number of almond tins), \(C\) (number of cashew tins)
- Objective Function: Maximize profit \(10A + 15C\)
- Constraints:
  - Filling time constraint: \(5A + 4C \leq 400\)
  - Labeling time constraint: \(3A + 5C \leq 500\)
  - Non-negativity constraints: \(A \geq 0, C \geq 0\)

Given these definitions, we can translate the problem into Gurobi code in Python. We will use the Gurobi library to model and solve this linear programming problem.

```python
from gurobipy import *

# Create a new model
m = Model("Almond_Cashew_Optimization")

# Define decision variables
A = m.addVar(vtype=GRB.INTEGER, name="almond_tins")
C = m.addVar(vtype=GRB.INTEGER, name="cashew_tins")

# Set the objective function to maximize profit
m.setObjective(10*A + 15*C, GRB.MAXIMIZE)

# Add constraints
m.addConstr(5*A + 4*C <= 400, name="filling_time_constraint")
m.addConstr(3*A + 5*C <= 500, name="labeling_time_constraint")

# Optimize the model
m.optimize()

# Print out the results
if m.status == GRB.OPTIMAL:
    print(f"Optimal solution: {A.varName} = {A.x}, {C.varName} = {C.x}")
    print(f"Maximum profit: ${10*A.x + 15*C.x:.2f}")
else:
    print("No optimal solution found")

```