Balancing of Utility in Palmoil Supply chain model

No preview image

1 collaborator

Syarif_hidayat_-_nov_2018_ Syarif Hidayat (Author)

Tags

Visible to everyone | Changeable by the author
Model was written in NetLogo 4.1.3 • Viewed 408 times • Downloaded 21 times • Run 0 times
Download the 'Balancing of Utility in Palmoil Supply chain model' modelDownload this modelEmbed this model

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


WHAT IS IT?

This section could give a general understanding of what the model is trying to show or explain.

tes

HOW IT WORKS

This section could explain what rules the agents use to create the overall behavior of the model.

HOW TO USE IT

This section could explain how to use the model, including a description of each of the items in the interface tab.

THINGS TO NOTICE

This section could give some ideas of things for the user to notice while running the model.

THINGS TO TRY

This section could give some ideas of things for the user to try to do (move sliders, switches, etc.) with the model.

EXTENDING THE MODEL

This section could give some ideas of things to add or change in the procedures tab to make the model more complicated, detailed, accurate, etc.

NETLOGO FEATURES

This section could point out any especially interesting or unusual features of NetLogo that the model makes use of, particularly in the Procedures tab. It might also point out places where workarounds were needed because of missing features.

RELATED MODELS

This section could give the names of models in the NetLogo Models Library or elsewhere which are of related interest.

CREDITS AND REFERENCES

This section could contain a reference to the model's URL on the web if it has one, as well as any other necessary credits or references.

Comments and Questions

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

Click to Run Model

globals [
  
  

  
  gcounter
  gcounter2
  
  gupetani
  gupedagang
  gupabrcpo
  gupabrminygor
  gudistributor
  
  gw1_1petani
  gw2_1petani
  gw1_2petani
  gw2_2petani
  
  gw1_1pedagang
  gw2_1pedagang
  gw1_2pedagang
  gw2_2pedagang
  
  gw1_1pabrcpo
  gw2_1pabrcpo
  gw1_2pabrcpo
  gw2_2pabrcpo

  gw1_1pabrminygor
  gw2_1pabrminygor
  gw1_2pabrminygor
  gw2_2pabrminygor
  
  gw1_1distributor
  gw2_1distributor
  gw1_2distributor
  gw2_2distributor
  
  
  gformulayl1petani
  gformulayl1pedagang
  gformulayl1pabrcpo
  gformulayl1pabrminygor
  gformulayl1distributor
  
  gformulayl2petani
  gformulayl2pedagang
  gformulayl2pabrcpo
  gformulayl2pabrminygor
  gformulayl2distributor
  
  
  gntpetani
  gntpedagang
  gntpabrcpo
  gntpabrminygor
  gntdistributor
  
  gntriilpetani
  gntriilpedagang
  gntriilpabrcpo
  gntriilpabrminygor
  gntriildistributor
  
  
  
  gu_total
  gnt_total
  gntriil_total
  gselisih
  
  ]
        
turtles-own [
    
  risiko
  investasi
  u1
  u2
  formulayl1
  formulayl2
  nt
  ntriil
  alpha
  w1_1
  w1_2
  w2_1
  w2_2
  alphawx1
  alphawx2
  ]
 
breed [petani]
breed [pedagang]
breed [pabrik_cpo]
breed [pabrik_minygor]
breed [distributor]
breed [konsumen]

to do_setup
  clear-all

  if file-exists? "hasilutil.csv"
    [file-delete "hasilutil.csv"]
  
  file-open "hasilutil.csv"
  file-print 
  "W1_1PET,W2_1PET,FORMULAYL1PET,W2_2PET,W1_2PET,FORMULAYL2PET,SELISIHPET, W1_1PED,W2_1PED,FORMULAYL1PED,W2_2PED,W1_2PED,FORMULAYL2PED,SELISIHPED, W1_1CPO,W2_1CPO,FORMULAYL1CPO,W2_2CPO,W1_2CPO,FORMULAYL2CPO,SELISIHCPO, W1_1GOR,W2_1GOR,FORMULAYL1GOR,W2_2GOR,W1_2GOR,FORMULAYL2GOR,SELISIHGOR, W1_1IDIS,W2_1DIS,FORMULAYL1DIS,W2_2DIS,W1_2DIS,FORMULAYL2DIS,SELISIHDIS"
  file-close

  set gselisih 0  
  do_setup_patches
  do_setup_turtles
end 

to do_setup_patches
  ask patches 
    [ set pcolor green ]
end 

to do_setup_turtles
  set-default-shape petani "circle"
  create-petani 1
  [
    set color red
    ;setxy -10 0 
  ]
   
  set-default-shape pedagang "circle"
  create-pedagang 1
  [
    set color black
    ;setxy -5 0 
  ]
 
  
  set-default-shape pabrik_cpo "circle"
  create-pabrik_cpo 1
  [set color violet]
   
  set-default-shape pabrik_minygor "circle"
  create-pabrik_minygor 1
  [set color sky]
  
  set-default-shape distributor "circle"
  create-distributor 1
  [set color yellow]
  
  
  ;ask turtles [ 
  ;  setxy random-pxcor random-pycor]
end 

to do_go

  do_optimal
  
  tick
end 

to-report VARY [#low #high]
    ;; reports a random integer in given range, inclusive
   report #low + random(#high - #low + 1)
end  

to do_optimal
  set gcounter gcounter + 1

  ask turtle 0
    [
      ;biaya produksi petani
            
      ifelse gcounter > 1
        [
            if w1_1 < (1 - 0.001)
              [   
                set w1_1 w1_1 + 0.001 
              ]
              
            if w2_2 < (1 - 0.001)
              [   
                set w2_2 w2_2 + 0.001 
              ]
        ]
        [
            set risiko 0.355
            ;set investasi 0.49
            set investasi 0.00298
            set alpha 2
            ;w1 adalah bobot risiko  w2 investasi
            set w1_1 0.001 
            set w2_2 0.001
                       
        ]
      
      set w2_1 1 - w1_1
      ;gw1 global 
      set gw1_1petani w1_1
      set gw2_1petani w2_1
      set alphawx1 alpha * ( (w1_1 * risiko) + (w2_1 * investasi))
      ; u1 fungsi utility berdasar risiko sebelum dikalikan  alpha
      ; formulayl adalah fungsi utility  setelah dikalikan  alpha   
      ; formulayl = u * alpha
      set u1 exp(alphawx1)
      set formulayl1 u1 * alpha
      set gformulayl1petani formulayl1
      
      set w1_2 1 - w2_2
      set gw1_2petani w1_2
      set gw2_2petani w2_2
      set alphawx2 alpha * ( (w1_2 * risiko) + (w2_2 * investasi))
      set u2 exp(alphawx2)
      set formulayl2 u2 * alpha
      set gformulayl2petani formulayl2
                   
      set-current-plot "petani"
      set-current-plot-pen "Util-risk"
      plot formulayl1
      set-current-plot-pen "Util-inv"
      plot formulayl2
     
     
    ] 
    
  ask turtle 1
    [
      ;biaya produksi pedagang
      
      
      ifelse gcounter > 1
        [
            if w1_1 < (1 - 0.001)
              [   
                set w1_1 w1_1 + 0.001 
              ]
             
             if w2_2 < (1 - 0.001)
              [   
                set w2_2 w2_2 + 0.001 
              ]
        ]
        [
            set risiko 0.124
            set investasi 0.00854
            set alpha 2
            set w1_1 0.001
            set w2_2 0.001
            
            set ntriil 0.67
            set gntriilpedagang ntriil
            
        ]
      
      set w2_1 1 - w1_1
      set gw1_1pedagang w1_1
      set gw2_1pedagang w2_1
      set alphawx1 alpha * ( (w1_1 * risiko) + (w2_1 * investasi))
      set u1 exp(alphawx1)
      set formulayl1 u1 * alpha
      set gformulayl1pedagang formulayl1
      
      
      set w1_2 1 - w2_2
      set gw1_2pedagang w1_2
      set gw2_2pedagang w2_2
      set alphawx2 alpha * ( (w1_2 * risiko) + (w2_2 * investasi))
      set u2 exp(alphawx2)
      set formulayl2 u2 * alpha
      set gformulayl2pedagang formulayl2
      
      set-current-plot "Pengepul"
      set-current-plot-pen "Util-risk"
      plot formulayl1
      set-current-plot-pen "Util-inv"
      plot formulayl2
    ] 
    

  ;pabrcpo
  
  
 
  ask turtle 2 
    [
      ifelse gcounter > 1
        [
           if w1_1 < (1 - 0.001)
              [   
                 set w1_1 w1_1 + 0.001 
              ]
           if w2_2 < (1 - 0.001)
              [   
                 set w2_2 w2_2 + 0.001 
              ]
        ]
        [
            set risiko 0.224
            set investasi 0.39381
            set alpha 2
            set w1_1 0.1
            set w2_2 0.1
            
            ;set ntriil 1.35
            ;set gntriilpabrcpo ntriil
            ; instruksi ini sebetulnya tidak berperan karena tidak dipakai pada program
        ]
      
      set w2_1 1 - w1_1
      set gw1_1pabrcpo w1_1
      set gw2_1pabrcpo w2_1
      set alphawx1 alpha * ( (w1_1 * risiko) + (w2_1 * investasi))
      set u1 exp(alphawx1)
      set gupabrcpo u1
      set formulayl1 u1 * alpha
      set gformulayl1pabrcpo formulayl1
      
      set w1_2 1 - w2_2
      set gw1_2pabrcpo w1_2
      set gw2_2pabrcpo w2_2
      set alphawx2 alpha * ( (w1_2 * risiko) + (w2_2 * investasi))
      set u2 exp(alphawx2)
      set gupabrcpo u2
      set formulayl2 u2 * alpha
      set gformulayl2pabrcpo formulayl2
      
      set-current-plot "PKS"
      set-current-plot-pen "Util-risk"
      plot formulayl1
      set-current-plot-pen "Util-inv"
      plot formulayl2
    ]
    
   ;pabrcpo
  
  
 
  ask turtle 3 
    [
       ifelse gcounter > 1
        [
            if w1_1 < (1 - 0.001)
              [   
                 set w1_1 w1_1 + 0.001 
              ]
              
            if w2_2 < (1 - 0.001)
              [   
                set w2_2 w2_2 + 0.001 
              ]
        ]
        [
            set risiko 0.193
            set investasi 0.58575
            set alpha 2
            set w1_1 0.001
            set w2_2 0.001
            
            set ntriil 9.35
            set gntriilpabrminygor ntriil
        ]
      
      set w2_1 1 - w1_1
       set gw1_1pabrminygor w1_1
      set gw2_1pabrminygor w2_1
      set alphawx1 alpha * ( (w1_1 * risiko) + (w2_1 * investasi))
      set u1 exp(alphawx1)
      set formulayl1 u1 * alpha
      set gformulayl1pabrminygor formulayl1
      
      
      set w1_2 1 - w2_2
      set gw1_2pabrminygor w1_2
      set gw2_2pabrminygor w2_2
      set alphawx2 alpha * ( (w1_2 * risiko) + (w2_2 * investasi))
      set u2 exp(alphawx2)
      set formulayl2 u2 * alpha
      set gformulayl2pabrminygor formulayl2
      
      set-current-plot "Refinery"
      set-current-plot-pen "Util-risk"
      plot formulayl1
      set-current-plot-pen "Util-inv"
      plot formulayl2
    ]
    
  ask turtle 4 
    [
      ifelse gcounter > 1
        [
            if w1_1 < (1 - 0.001)
              [   
                 set w1_1 w1_1 + 0.001 
              ]
              
            if w2_2 < (1 - 0.001)
              [   
                set w2_2 w2_2 + 0.001 
              ]  
        ]
        [
            set risiko 0.103
            set investasi 0.00893
            set alpha 2
            set w1_1 0.001
            set w2_2 0.001
            ; sebetulnya ntriil nilai tambah riil tidak diapa-apakan dalam proses beirkutnya 
            set ntriil 0.42
            set gntriildistributor ntriil
        ]
      
      set w2_1 1 - w1_1
      set gw1_1distributor w1_1
      set gw2_1distributor w2_1
      set alphawx1 alpha * ( (w1_1 * risiko) + (w2_1 * investasi))
      set u1 exp(alphawx1)
      set formulayl1 u1 * alpha
      set gformulayl1distributor formulayl1
      
      
      set w1_2 1 - w2_2
      set gw1_2distributor w1_2
      set gw2_2distributor w2_2
      set alphawx2 alpha * ( (w1_2 * risiko) + (w2_2 * investasi))
      set u2 exp(alphawx2)
      set formulayl2 u2 * alpha
      set gformulayl2distributor formulayl2
      
      set-current-plot "distributor"
      set-current-plot-pen "Util-risk"
      plot formulayl1
      set-current-plot-pen "Util-inv"
      plot formulayl2
    ]
  
  file-open "hasilutil.csv"
  ; disini dihitung selisih-selisih utk mencari titik temu curva risiko dan curva investasi langsung di print di csv
  file-print (word gw1_1petani "," gw2_1petani "," gformulayl1petani "," gw2_2petani "," gw1_2petani "," gformulayl2petani "," (gformulayl1petani - gformulayl2petani) "," gw1_1pedagang "," gw2_1pedagang "," gformulayl1pedagang "," gw2_2pedagang "," gw1_2pedagang "," gformulayl2pedagang "," (gformulayl1pedagang - gformulayl2pedagang) "," gw1_1pabrcpo "," gw2_1pabrcpo "," gformulayl1pabrcpo "," gw2_2pabrcpo "," gw1_2pabrcpo "," gformulayl2pabrcpo "," (gformulayl1pabrcpo - gformulayl2pabrcpo) "," gw1_1pabrminygor "," gw2_1pabrminygor "," gformulayl1pabrminygor "," gw2_2pabrminygor "," gw1_2pabrminygor "," gformulayl2pabrminygor "," (gformulayl1pabrminygor - gformulayl2pabrminygor) "," gw1_1distributor "," gw2_1distributor "," gformulayl1distributor "," gw2_2distributor "," gw1_2distributor "," gformulayl2distributor "," (gformulayl1distributor - gformulayl2distributor))
  file-close 
end 


There is only one version of this model, created over 5 years ago by Syarif Hidayat.

Attached files

No files

This model does not have any ancestors.

This model does not have any descendants.