title: Usinas com Metas; sets: parametros /@ole('UsinasMetas.xls', 'parametros')/: ; frentes /@ole('UsinasMetas.xls', 'frentes')/: ; usinas /@ole('UsinasMetas.xls', 'usinas')/: req; minas /@ole('UsinasMetas.xls', 'minas')/: cap; matriz_up(usinas, parametros): tu, tr, tl, wm, dpm, dnm; matriz_mfp(minas, frentes, parametros): t; matriz_ufm(usinas, frentes, minas): x, comp; matriz_fm(frentes, minas): Qu, ritmin, ritmax; endsets data: t, req, Qu, cap = @ole('UsinasMetas.xls','t','req','Qu','cap'); ritmin, ritmax = @ole('UsinasMetas.xls','ritmin','ritmax'); tu, tr, tl = @ole('UsinasMetas.xls', 'tu','tr','tl'); wm = @ole('UsinasMetas.xls','wm'); comp = @ole('UsinasMetas.xls','comp'); enddata [fo] min = @sum(usinas(l): @sum(parametros(j): wm(l,j)*dpm(l,j) + wm(l,j)*dnm(l,j))); ! O limite superior de especificação de cada parâmetro deve ser atendido para cada usina; @for(usinas(l): @for(parametros(j): @sum(minas(k): @sum(frentes(i): (t(k,i,j) - tu(l,j))*x(l,i,k))) <= 0)); ! O limite inferior de especificação de cada parâmetro deve ser atendido para cada usina; @for(usinas(l): @for(parametros(j): @sum(minas(k): @sum(frentes(i): (t(k,i,j) - tl(l,j))*x(l,i,k))) >= 0)); ! A meta de especificação de cada parâmetro deve ser atendida para cada usina; @for(usinas(l): @for(parametros(j): @sum(minas(k): @sum(frentes(i): (t(k,i,j) - tr(l,j))*x(l,i,k))) - dpm(l,j) + dnm(l,j) = 0)); ! As requisições de minério das usinas devem ser atendidas; @for(usinas(l): @sum(minas(k): @sum(frentes(i) : x(l,i,k))) = req(l)); ! A quantidade de minério retirada das frentes de cada mina não pode superar a quantidade máxima disponível; @for(minas(k): @for(frentes(i): @sum(usinas(l): x(l,i,k)) <= Qu(i,k))); ! A capacidade das minas deve ser respeitada; @for(minas(k): @sum(frentes(i): @sum(usinas(l): x(l,i,k))) <= cap(k)); ! A quantidade de minério retirada das frentes de cada mina não pode ser inferior ao ritmo mínimo desejado; @for(minas(k): @for(frentes(i) | ritmin(i,k) #ne# 0: @sum(usinas(l): x(l,i,k)) >= ritmin(i,k))); ! A quantidade de minério retirada das frentes de cada mina não pode ser superior ao ritmo máxima desejado; @for(minas(k): @for(frentes(i) | ritmax(i,k) #ne# 0: @sum(usinas(l): x(l,i,k)) <= ritmax(i,k))); data: @ole('UsinasMetas.xls', 'x') = x; enddata end