Tasa equivalente de superficie

Tasa equivalente de superficie preview image

1 collaborator

Default-person Luis García (Author)

Tags

agriculture 

Tagged by Luis García 3 months ago

agroecology 

Tagged by Luis García 3 months ago

ecology 

Tagged by Luis García 3 months ago

spanish 

Tagged by Luis García 3 months ago

Visible to everyone | Changeable by everyone
Model was written in NetLogo 6.4.0 • Viewed 129 times • Downloaded 1 time • Run 0 times
Download the 'Tasa equivalente de superficie' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


Info tab cannot be displayed because of an encoding error

Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

breed [ campesinos campesino ]
breed [ plantas planta ]
breed [ etiquetas etiqueta ]

patches-own [ tipo numero_parcela numero_surco ]
plantas-own [
  especie
  biomasa
  etapa
  mi_parcela
]

globals [
  largo_parcela
  ancho_parcela
  separacion_parcela
  ;; cordenadas (x,y) de la esquina inferior izquierda de cada parcela
  x_parcela_1
  x_parcela_2
  x_parcela_3
  x_parcela_4
  x_parcela_5
  y_parcela_1
  y_parcela_2
  y_parcela_3
  y_parcela_4
  y_parcela_5

  produccion_policultivo_1
  produccion_monocultivo_1
  produccion_policultivo_2
  produccion_monocultivo_2
  produccion_monocultivo_equivalente_1
  produccion_monocultivo_equivalente_2

  densidad_monocultivo_1
  densidad_monocultivo_2
  densidad_policultivo_1
  densidad_policultivo_2

  densidad_relativa_maiz
  densidad_relativa_frijol
  LER_referencia

  delta_t
]

to INICIALIZAR
  clear-all
  set largo_parcela 10 ;; el numero de cuadros que la conforman es + 1
  set ancho_parcela 10 ;; el numero de cuadros que la conforman es + 1
  set separacion_parcela 1
  set delta_t 1

  set-default-shape campesinos "campesino"
  crear_parcelas
  poner_etiquetas

  create-campesinos 1 [ set color red set size 1.5 ]

  colorear_parches
  reset-ticks
end 

to crear_parcelas
  set x_parcela_1 1
  set y_parcela_1 4
  set x_parcela_2 x_parcela_1 + largo_parcela + separacion_parcela
  set y_parcela_2 4
  set x_parcela_3 x_parcela_2 + largo_parcela + separacion_parcela
  set y_parcela_3 4
  set x_parcela_4 x_parcela_3 + largo_parcela + separacion_parcela
  set y_parcela_4 4
  ask patches [ set tipo "NA" ]
  let numero_parches largo_parcela * ancho_parcela

  crear_parcela 1 x_parcela_1 y_parcela_1 numero_parches largo_parcela x_parcela_1
  crear_parcela 2 x_parcela_2 y_parcela_2 numero_parches largo_parcela x_parcela_2
  crear_parcela 3 x_parcela_3 y_parcela_3 numero_parches largo_parcela x_parcela_3
end 

to sembrar_planta [ especie_sembrar ]
  hatch-plantas 1 [
    set especie especie_sembrar
    set etapa "semilla"
    if especie = "maíz"   [ set biomasa 0.1 ]
    if especie = "frijol" [ set biomasa 0.1 ]
    dibujar_planta
  ]
end 

to dibujar_planta
  if etapa = "semilla" [
    set size 0.5
    if especie = "maíz" [ set shape "semilla-maiz" ]
    if especie = "frijol" [ set shape "semilla-frijol" ]
  ]
  if etapa = "madura" [
    set size biomasa
    if especie = "maíz" [ set shape "planta-maiz" set color lime]
    if especie = "frijol" [ set shape "planta-frijol" set color green ]
  ]
  if etapa = "cosechada" [
    set color yellow
  ]
end 

to limpiar_todo
  ask plantas [ die ]
end 

to sembrar_monocultivo_maiz
  ask plantas with [ numero_parcela = 1 ][ die ]
  let surcos_sembrar_planta round ( ( largo_parcela  ) / distancia_entre_surcos_monocultivo_maiz )
  sembrar_num_surcos 1 x_parcela_1 y_parcela_1 "maíz" distancia_entre_plantas_monocultivo_maiz distancia_entre_surcos_monocultivo_maiz surcos_sembrar_planta
end 

to sembrar_monocultivo_frijol
  ask plantas with [ numero_parcela = 2 ] [die]
  let surcos_sembrar_planta round ( ( largo_parcela ) / distancia_entre_surcos_monocultivo_frijol )
  sembrar_num_surcos 2 x_parcela_2 y_parcela_2 "frijol" distancia_entre_plantas_monocultivo_frijol distancia_entre_surcos_monocultivo_frijol surcos_sembrar_planta
end 

to sembrar_policultivo
  ask plantas with [ numero_parcela = 3 ] [die]
  if arreglo = "milpa" [
    let surcos_sembrar_planta round ( ( largo_parcela ) / distancia_entre_surcos_policultivo_maiz )
    sembrar_num_surcos 3 x_parcela_3 y_parcela_3 "maíz" distancia_entre_plantas_policultivo_maiz distancia_entre_surcos_policultivo_maiz surcos_sembrar_planta
    sembrar_num_surcos 3 x_parcela_3 y_parcela_3 "frijol" distancia_entre_plantas_policultivo_maiz distancia_entre_surcos_policultivo_maiz surcos_sembrar_planta
  ]
  if arreglo = "mixto" [
    let y_inicia_surco y_parcela_3
    let x_extra_1 0
    let x_extra_2 distancia_entre_plantas_policultivo_maiz
    while [ y_inicia_surco - y_parcela_3 < largo_parcela ] [
      sembrar_num_surcos 3 (x_parcela_3 + x_extra_1) y_inicia_surco "maíz" ( 2 * distancia_entre_plantas_policultivo_maiz ) distancia_entre_surcos_policultivo_maiz 1
      sembrar_num_surcos 3 (x_parcela_3 + x_extra_2) y_inicia_surco "frijol" ( 2 * distancia_entre_plantas_policultivo_maiz ) distancia_entre_surcos_policultivo_maiz 1
      ifelse x_extra_1 = 0 [ set x_extra_1 distancia_entre_plantas_policultivo_maiz ] [ set x_extra_1 0 ]
      ifelse x_extra_2 = 0 [ set x_extra_2 distancia_entre_plantas_policultivo_maiz ] [ set x_extra_2 0 ]
      set y_inicia_surco y_inicia_surco + distancia_entre_surcos_policultivo_maiz
    ]
  ]
  if arreglo = "surcos" [
    let surcos_sembrar_planta round (( largo_parcela / distancia_entre_surcos_policultivo_maiz_frijol ) / 2)
    sembrar_num_surcos 3 x_parcela_3 y_parcela_3 "maíz" distancia_entre_plantas_policultivo_maiz ( distancia_entre_surcos_policultivo_maiz_frijol * 2 ) surcos_sembrar_planta
    sembrar_num_surcos 3 x_parcela_3 (y_parcela_3 + distancia_entre_surcos_policultivo_maiz_frijol) "frijol" distancia_entre_plantas_policultivo_frijol ( distancia_entre_surcos_policultivo_maiz_frijol * 2 ) surcos_sembrar_planta

  ]
  if arreglo = "franjas" [
    let y_inicia_franja y_parcela_3
    while [ y_inicia_franja - y_parcela_3 < largo_parcela ] [
      sembrar_num_surcos 3 x_parcela_3 y_inicia_franja "maíz" distancia_entre_plantas_policultivo_maiz distancia_entre_surcos_policultivo_maiz franjas_maiz_policultivo
      set y_inicia_franja y_inicia_franja + (( franjas_maiz_policultivo - 1) * distancia_entre_surcos_policultivo_maiz ) + distancia_entre_surcos_policultivo_maiz_frijol
      sembrar_num_surcos 3 x_parcela_3 y_inicia_franja "frijol" distancia_entre_plantas_policultivo_frijol distancia_entre_surcos_policultivo_frijol franjas_frijol_policultivo
      set y_inicia_franja y_inicia_franja + (( franjas_frijol_policultivo - 1) * distancia_entre_surcos_policultivo_frijol ) + distancia_entre_surcos_policultivo_maiz_frijol
    ]
  ]

  set densidad_relativa_maiz count plantas with [ especie = "maíz" and numero_parcela = 3] / count plantas with [ especie = "maíz" and numero_parcela = 1]
  set densidad_relativa_frijol count plantas with [ especie = "frijol" and numero_parcela = 3] / count plantas with [ especie = "frijol" and numero_parcela = 2]
  set LER_referencia densidad_relativa_maiz + densidad_relativa_frijol
end 

to sembrar_num_surcos [ num_parcela corx_inicio cory_inicio especie_sembrar distancia_entre_plantas distancia_entre_surcos num_surcos ]
  let surcos_sembrados 0
  let cory cory_inicio
  ask campesinos [
    set heading 90
    while [ surcos_sembrados < num_surcos ] [
      if cory > max-pycor [ user-message "No se pudo sembrar toda lo que se requería. La simulación continuará solo con la cantidad de semilla que se sembró." stop  ]
      setxy corx_inicio cory
      while [ xcor - corx_inicio < largo_parcela]
      [ if numero_parcela = num_parcela [ sembrar_planta especie_sembrar ]
        fd distancia_entre_plantas
        if mostrar_animaciones? [ display ]
      ]
      set cory cory + distancia_entre_surcos
      set surcos_sembrados surcos_sembrados + 1
    ]
  ]
end 

to crecer
  if not any? plantas with [ numero_parcela = 1 ] or not any? plantas with [ numero_parcela = 2 ][
    user-message "No hay nada para crecer... no se ha sembrado nada. Da click primero en SEMBRAR."
    stop
  ]

  repeat 30 [
    ask plantas [
      (ifelse
        especie = "maíz" [
          let competencia_intra competencia_intra_maiz * count other plantas in-radius radio_interaccion with [ especie = "maíz" ]
          let competencia_inter ifelse-value numero_parcela = 3 [ competencia_inter_maiz_frijol * count other plantas in-radius radio_interaccion with [ especie = "frijol" ] ][ 0 ]
          let facilitacion ifelse-value numero_parcela = 3 [ facilitacion_maiz_frijol * count other plantas in-radius radio_interaccion with [ especie = "frijol" ]][ 0 ]
          set biomasa biomasa + delta_t * ( biomasa * R_maiz * ( 1 - ( biomasa / biomasa_maiz) - competencia_intra - competencia_inter  + facilitacion ) )
          set etapa "madura"
        ]
        especie = "frijol" [
          let competencia_intra competencia_intra_frijol * count other plantas in-radius radio_interaccion with [ especie = "frijol" ]
          let competencia_inter ifelse-value numero_parcela = 3 [ competencia_inter_frijol_maiz * count other plantas in-radius radio_interaccion with [ especie = "maíz" ]] [ 0 ]
          let facilitacion ifelse-value numero_parcela = 3 [ facilitacion_frijol_maiz * count other plantas in-radius radio_interaccion with [ especie = "maíz" ]] [ 0 ]
          set biomasa biomasa + delta_t * ( biomasa * R_frijol * ( 1 - ( biomasa / biomasa_frijol) - competencia_intra - competencia_inter  + facilitacion ) )
          set etapa "madura"
        ]
      )
    ]

    set produccion_monocultivo_1 sum [ biomasa ] of plantas with [ numero_parcela = 1 ]
    set produccion_policultivo_1 sum [ biomasa ] of plantas with [ numero_parcela = 3 and especie = "maíz" ]
    set produccion_monocultivo_2 sum [ biomasa ] of plantas with [ numero_parcela = 2 ]
    set produccion_policultivo_2 sum [ biomasa ] of plantas with [ numero_parcela = 3 and especie = "frijol" ]
    set produccion_monocultivo_equivalente_1 sum [ biomasa ] of plantas with [ numero_parcela = 4 ]
    set produccion_monocultivo_equivalente_2 sum [ biomasa ] of plantas with [ numero_parcela = 5 ]
    ask plantas [ set etapa "madura" dibujar_planta ]

    tick

    inicializar_grafica_RY
    graficar_RYs
  ]
end 

to crear_monocultivos_equivalentes

  if produccion_monocultivo_1 = 0 and produccion_monocultivo_2 = 0
  [ user-message "Antes de crear los monocultivos equivalentes los cultivos deben crecer para obtener las producciones. Da click en CRECER." stop ]

  ask plantas with [ numero_parcela = 4 or numero_parcela = 5 ] [die]
  ask patches with [ numero_parcela = 4 or numero_parcela = 5 ] [ set tipo "NA"  set numero_parcela 0]

  let num_parches_parcela_4 0
  ifelse ajustar_a_densidad_relativa? [
    set num_parches_parcela_4 round (((RY produccion_monocultivo_1 produccion_policultivo_1) / LER_referencia ) * 100)
  ][
    set num_parches_parcela_4 round (((RY produccion_monocultivo_1 produccion_policultivo_1) ) * 100)
  ]
  crear_parcela 4 x_parcela_4 y_parcela_4 num_parches_parcela_4 largo_parcela x_parcela_4

  set y_parcela_5 max [pycor] of patches with [ numero_parcela = 4 ]
  set x_parcela_5 max [pxcor] of patches with [ numero_parcela = 4 and pycor = y_parcela_5 ] + 1

  let num_parches_parcela_5 0
  ifelse ajustar_a_densidad_relativa? [
    set num_parches_parcela_5 round (((RY produccion_monocultivo_2 produccion_policultivo_2) / LER_referencia ) * 100)
  ][
    set num_parches_parcela_5 round (((RY produccion_monocultivo_2 produccion_policultivo_2)) * 100)
  ]

  crear_parcela 5 x_parcela_5 y_parcela_5 num_parches_parcela_5 largo_parcela x_parcela_4

  ;; etiquetar parcela
  create-turtles 1 [
    setxy 43 3
    set shape "NA"
    let RY1 ifelse-value ajustar_a_densidad_relativa? [ precision ((RY produccion_monocultivo_1 produccion_policultivo_1) / LER_referencia) 2 ][ (RY produccion_monocultivo_1 produccion_policultivo_1)]
    let RY2 ifelse-value ajustar_a_densidad_relativa? [ precision ((RY produccion_monocultivo_2 produccion_policultivo_2) / LER_referencia) 2 ][ (RY produccion_monocultivo_2 produccion_policultivo_2)]
    let HA ifelse-value ajustar_a_densidad_relativa? [ precision ((LER produccion_monocultivo_1 produccion_policultivo_1 produccion_monocultivo_2 produccion_policultivo_2) / LER_referencia) 2 ][ (LER produccion_monocultivo_1 produccion_policultivo_1 produccion_monocultivo_2 produccion_policultivo_2) ]
    set label ( word "Monocultivo maíz (" RY1 " ha) \nMonocultivo frijol ( " RY2 " ha) \nSuperficie total = " HA " ha" )
    set label-color black
  ]

  colorear_parches
  sembrar_monocultivo_equivalente_1
  sembrar_monocultivo_equivalente_2

  crecer
end 

to sembrar_monocultivo_equivalente_1
  ask plantas with [ numero_parcela = 4 ] [die]
  let surcos_sembrar_planta round(( largo_parcela / distancia_entre_surcos_monocultivo_maiz ) * (RY produccion_monocultivo_1 produccion_policultivo_1)) + 2
  sembrar_num_surcos 4 x_parcela_4 y_parcela_4 "maíz" distancia_entre_plantas_monocultivo_maiz distancia_entre_surcos_monocultivo_maiz surcos_sembrar_planta
end 

to sembrar_monocultivo_equivalente_2
  ask plantas with [ numero_parcela = 5 ] [die]
  let surcos_sembrar_planta round(( largo_parcela / distancia_entre_surcos_monocultivo_frijol ) * (RY produccion_monocultivo_2 produccion_policultivo_2)) + 2
  sembrar_num_surcos 5 x_parcela_4 y_parcela_5 "frijol" distancia_entre_plantas_monocultivo_frijol distancia_entre_surcos_monocultivo_frijol surcos_sembrar_planta
end 

to crear_parcela [ num_parcela x_inicial y_inicial num_parches longitud_parcela x_extremo ]
  let contador_parches_creados 0
  let contador_surcos_creados 1
  let corx x_inicial
  let cory y_inicial
  let coninuar_creacion true
  while [ contador_parches_creados < num_parches and coninuar_creacion ][
    while [ corx - x_extremo + 1 <= longitud_parcela and contador_parches_creados < num_parches ][
      let celda patch corx cory
      ifelse celda != nobody [
        ask celda [ set tipo "monocultivo" set numero_parcela num_parcela set numero_surco contador_surcos_creados ]
      ][
        user-message "El espacio necesario para crear los monocultivos equivlentes es mayor al que se puede mostrar en la simulación. La simulación continuará sin considerar ese espacio."
        set coninuar_creacion false
        stop
      ]
      set contador_parches_creados contador_parches_creados + 1
      set corx corx + 1
    ]
    set cory cory + 1
    set contador_surcos_creados contador_surcos_creados + 1
    set corx x_extremo
  ]
end 

to-report RY [ M Y ]
  report precision ( Y / M ) 2
end 

to-report LER [ M1 Y1 M2 Y2 ]
  report precision (( RY M1 Y1 ) + ( RY M2 Y2 )) 2
end 

to graficar_RYs
  set-current-plot "producción relativa"
  set-current-plot-pen "RYs"
  plotxy ( RY produccion_monocultivo_1 produccion_policultivo_1) ( RY produccion_monocultivo_2 produccion_policultivo_2)
end 

to inicializar_grafica_RY
  let max_cor 1.5
  set-current-plot "producción relativa"
  clear-plot
  set-current-plot-pen "LER=1"
  plot-pen-up
  ifelse ajustar_a_densidad_relativa? [
    plotxy (densidad_relativa_maiz * 2) 0
    plot-pen-down
    plotxy 0 (densidad_relativa_frijol * 2)
  ] [
    plotxy 1 0
    plot-pen-down
    plotxy 0 1
  ]
  ;; referencias
  create-temporary-plot-pen "rel-1"
  set-plot-pen-color gray + 2
  ifelse ajustar_a_densidad_relativa? [
    plotxy densidad_relativa_maiz 0
    plot-pen-down
    plotxy densidad_relativa_maiz max_cor
  ][
    plotxy 0.5 0
    plot-pen-down
    plotxy 0.5 max_cor
  ]
  create-temporary-plot-pen "rel-2"
  set-plot-pen-color gray + 2
  ifelse ajustar_a_densidad_relativa? [
    plotxy 0 densidad_relativa_frijol
    plot-pen-down
    plotxy max_cor densidad_relativa_frijol
  ][
    plotxy 0 0.5
    plot-pen-down
    plotxy max_cor 0.5
  ]
  set-plot-x-range 0 max_cor
  set-plot-y-range 0 max_cor
end 

to colorear_parches
  ask patches [ set pcolor green + 2 ]
  ask patches with [ tipo = "monocultivo" or tipo = "policultivo" ][
    ifelse numero_surco mod 2 = 0
    [ set pcolor brown + 1 ]
    [ set pcolor brown + 1.5 ]
  ]
end 

to poner_etiquetas
  let x_cors [ 10 21 32 ]
  let y_cors [ 2 2 2 ]
  let labs ["Monocultivo maíz (1 ha)" "Monocultivo frijol (1 ha)" "Policultivo (1 ha)"]
  (foreach x_cors y_cors labs [
    [x y lab ] ->
    create-turtles 1 [
      setxy x y
      set shape "NA"
      set label lab
      set label-color black
    ]
    ]
  )
end 

There is only one version of this model, created 3 months ago by Luis García.

Attached files

File Type Description Last updated
Tasa equivalente de superficie.png preview Preview for 'Tasa equivalente de superficie' 3 months ago, by Luis García Download

This model does not have any ancestors.

This model does not have any descendants.