`))),e("p",null,"Si possono effettuare operazioni su set con:"),e(o.f,null,C(s||(s=v`
setUNIONE:=SET_AunionSET_B;
setINTERSEZIONE:=SET_AinterSET_B;
`)))),e(o.q,{title:"Variabili"},e("p",null,"Valori che sono ",e("b",null,"calcolati al momento dell'esecuzione")," del programma:"),e(o.f,null,"var nomevariabile;"))),e(o.r,null,e(o.q,{title:"Requisiti"},e("p",null,"È possibile richiedere che un parametro o una variabile soddisfino certi ",e("i",null,"requisiti"),"."),e("p",null,"Si può richiedere che ",e("b",null,"siano ",e(o.h,null,C(l||(l=v`\geq`)))," o ",e(o.h,null,C(c||(c=v`\leq`)))," di un certo valore"),":"),e(o.f,null,C(d||(d=v`
parampositivo,>0;
varnon_positiva,<=0;
`))),e("p",null,"Si può richiedere che ",e("b",null,"appartengano a un dato set"),":"),e(o.f,null,C(_||(_=v`
paramintero_positivo,integer,>0;
varzero_oppure_uno,binary;
`)))),e(o.q,{title:"Indici"},e("p",null,'È possibile creare anche un "array" di parametri o variabili:'),e(o.f,null,C(u||(u=v`
paramdieci_parametri{1..10};
varquadrato{1..10,1..10};
varcubo{1..10,1..10,1..10};
`))),e("p",null,"Si possono usare anche set:"),e(o.f,null,C(p||(p=v`
paramdieci_parametri{DA_UNO_A_DIECI};
`))))),e(o.r,null,e(o.q,{title:"Funzione obiettivo"},e("p",null,"La funzione obiettivo ",e("b",null,"può comparire solo una volta")," nel programma."),e("p",null,"Si definisce con:"),e(o.f,null,C(m||(m=v`
minimizevalore_ottimo_min:espressione;
maximizevalore_ottimo_max:espressione;
`)))),e(o.q,{title:"Vincoli"},e("p",null,"I vincoli a cui sono soggette le variabili si definiscono con:"),e(o.f,null,C(g||(g=v`
nome_vincolo_1:espressione<=1;
nome_vincolo_2:espressione>=parametro;
`))),e("p",null,"I vincoli possono essere indicizzati:"),e(o.f,{language:"gmpl"},C(f||(f=v`
// La diagonale del quadrato deve essere minore di 1
v_3{iinDA_UNO_A_DIECI}:quadrato[i,i]<=1;
// Tutti i valori del quadrato devono essere minori o uguali a 1
`))),e("p",null,"Esistono anche operatori aggregati:"),e(o.f,{language:"gmpl"},C(E||(E=v`
// La somma degli elementi della diagonale deve essere maggiore o uguale a 0
v_5:sum{iinDA_UNO_A_DIECI}quadrato[i,i]>=0;
// Il prodotto degli elementi della diagonale deve essere maggiore o uguale a 0
v_6:prod{iinDA_UNO_A_DIECI}quadrato[i,i]>=0;
`))),e("p",null,"Si possono anche aggiungere requisiti agli indici:"),e(o.f,null,C(b||(b=v`
v_7:sum{iinDA_UNO_A_DIECI,i<=5}quadrato[i,i]>=0;
v_8:prod{iinSET,inotinALTRO_SET}quadrato[i,i]>=0;
`))))),e(o.r,null,e(o.q,{title:"Termine del programma"},e("p",null,"Perchè il programma calcoli i valori di tutte le variabili, è necessaria l'istruzione:"),e(o.f,null,C(S||(S=v`
solve;
`))),e("p",null,"Per stampare i valori calcolati, è possibile usare:"),e(o.f,null,C(h||(h=v`
printf"%d \n",nomevar;
`))),e("p",null,"Eventualmente, anche in un ciclo for:"),e(o.f,null,C(T||(T=v`
`)))),e(o.q,{title:"Compilare ed eseguire"},e("p",null,"Per compilare ed eseguire il programma, è sufficiente eseguire:"),e(o.f,{language:"bash"},"glpsol --math nomefile.mod"),e("p",null,"È possibile specificare i dati in un file separato da quello del modello; in tal caso, si dovrà eseguire:"),e(o.f,{language:"bash"},"glpsol --math -m modello.mod -d dati.mod"),e("p",null,"Per salvare i risultati su file e visualizzarli a schermo:"),e(o.f,{language:"bash"},"glpsol --math nomefile.mod | tee risultati.txt"))))}}).call(this,r("hosL").h)},aQXo:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default={hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#eee",color:"black"},"hljs-link":{color:"#070"},"hljs-emphasis":{color:"#070",fontStyle:"italic"},"hljs-attribute":{color:"#070"},"hljs-addition":{color:"#070"},"hljs-strong":{color:"#d14",fontWeight:"bold"},"hljs-string":{color:"#d14"},"hljs-deletion":{color:"#d14"},"hljs-quote":{color:"#998",fontStyle:"italic"},"hljs-comment":{color:"#998",fontStyle:"italic"},"hljs-section":{color:"#900"},"hljs-title":{color:"#900"},"hljs-class .hljs-title":{color:"#458"},"hljs-type":{color:"#458"},"hljs-variable":{color:"#336699"},"hljs-template-variable":{color:"#336699"},"hljs-bullet":{color:"#997700"},"hljs-meta":{color:"#3344bb"},"hljs-code":{color:"#099"},"hljs-number":{color:"#099"},"hljs-literal":{color:"#099"},"hljs-keyword":{color:"#099"},"hljs-selector-tag":{color:"#099"},"hljs-regexp":{backgroundColor:"#fff0ff",color:"#880088"},"hljs-symbol":{color:"#990073"},"hljs-tag":{color:"#007700"},"hljs-name":{color:"#007700"},"hljs-selector-id":{color:"#007700"},"hljs-selector-class":{color:"#007700"}}},aWdl:function(e,t,r){"use strict";var n=r("SdNZ");t.a=Object(n.a)((function(e){r.e(3).then(function(){e(r("9cHI"))}.bind(null,r)).catch(r.oe)}))},"bTp+":function(e){e.exports=function(e){var t=["add","and","cmp","cmpg","cmpl","const","div","double","float","goto","if","int","long","move","mul","neg","new","nop","not","or","rem","return","shl","shr","sput","sub","throw","ushr","xor"];return{aliases:["smali"],contains:[{className:"string",begin:'"',end:'"',relevance:0},e.COMMENT("#","$",{relevance:0}),{className:"keyword",variants:[{begin:"\\s*\\.end\\s[a-zA-Z0-9]*"},{begin:"^[ ]*\\.[a-zA-Z]*",relevance:0},{begin:"\\s:[a-zA-Z_0-9]*",relevance:0},{begin:"\\s("+["transient","constructor","abstract","final","synthetic","public","private","protected","static","bridge","system"].join("|")+")"}]},{className:"built_in",variants:[{begin:"\\s("+t.join("|")+")\\s"},{begin:"\\s("+t.join("|")+")((\\-|/)[a-zA-Z0-9]+)+\\s",relevance:10},{begin:"\\s("+["aget","aput","array","check","execute","fill","filled","goto/16","goto/32","iget","instance","invoke","iput","monitor","packed","sget","sparse"].join("|")+")((\\-|/)[a-zA-Z0-9]+)*\\s",relevance:10}]},{className:"class",begin:"L[^(;:\n]*;",relevance:0},{begin:"[vp][0-9]+"}]}}},bb6g:function(e,t,r){"use strict";function n(e,t){function r(){this.constructor=e}s(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}function o(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function a(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,a=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=a.next()).done;)i.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(o)throw o.error}}return i}function i(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(a(arguments[t]));return e}r.d(t,"b",(function(){return n})),r.d(t,"a",(function(){return l})),r.d(t,"e",(function(){return o})),r.d(t,"c",(function(){return a})),r.d(t,"d",(function(){return i}));var s=function(e,t){return(s=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||functio