template.php
<?php
declare(strict_types=1);
class template
{
private string $titolo;
private string $filename;
private string $alta;
private string $bassa;
private string $pagina;
private string $contenuto;
private int $setta_alta;
private int $setta_bassa;
function __construct()
{
}
function setta_titolo(string $title): void
{
$this->titolo = $title;
}
function setta_filename(string $filename): void
{
$this->filename = $filename;
}
function setta_contenuto(string $content): void
{
$this->contenuto = $content;
}
function mostra_pagina(): string
{
header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
if (!isset($this->setta_alta)) {
$this->setta_alta();
}
if (!isset($this->setta_bassa)) {
$this->setta_bassa();
}
$this->pagina = $this->alta . '<h2>' . "$this->titolo" . '</h2>' .
$this->contenuto . $this->bassa;
return ($this->pagina);
}
function setta_alta(): void
{
if (!isset($this->setta_alta)) {
$this->setta_alta = 1;
}
$testata = implode('', file('testata.php') ?: []);
$keywords = ' <meta name="keywords" content="simplesso, algoritmo del simplesso, metodo grafico, programmazione lineare, tableau, due fasi, programmazione lineare intera, piani di taglio, soluzione grafica, ricerca operativa, pivot">
<meta name="description" content="Strumento on-line per la risoluzione step by step di problemi di Programmazione Lineare e di Programmazione Lineare Intera. Questo strumento e\' stato pensato, progettato e realizzato dallo studente che doveva affrontare l\'esame scritto di Ricerca Operativa sulla risoluzione di un problema di programmazione lineare. Lo scopo principale era quello di poter verificare la correttezza della risoluzione della programmazione lineare o lineare intera svolta a mano. Da queste pagine si introduce un problema di programmazione lineare e saranno visualizzate la formulazione in forma standard e quella in forma canonica, ottenute aggiungendo automaticamente variabili ausiliarie, di slack o di surplus, e eventuali variabili artificiali. Se vengono aggiunte variabili artificiali per ottenere la forma canonica viene costruito e risolto passo passo il problema ausiliario della minimizzazione della forma di inammissibilita\': s\'inizializza il algoritmo del simplesso andando a cercare un vertice della regione ammissibile col metodo delle due fasi. La risoluzione della programmazione lineare viene effettuata col algoritmo del simplesso primale standard, evidenziando per ogni iterazione la matrice tableau, l\'esito del test di ottimalita\' e l\'elemento pivot scelto. I calcoli sono effettuati su numeri razionali come nella risoluzione a mano. Nel caso di due variabili decisionali viene, inoltre, presentata anche la risoluzione col metodo grafico, tracciando la regione ammissibile, il gradiente della funzione obiettivo e le linee di livello di questa in corrispondenza dei vertici esplorati dal algoritmo del simplesso in forma tabellare. La risoluzione grafica viene fatta di pari passo con quella analitica mostrando la corrispondenza fra la soluzione di base ammissibile raggiunta e il vertice del poliedro. Per la soluzione di problemi di programmazione lineare intera si usa il metodo dei piani di taglio con tagli frazionari di Gomory. S\'identifica una variabile di base frazionaria all\'ottimo, si aggiunge il taglio corrispondente e si risolve con il metodo duale del simplesso.">
<!-- Add the following three tags inside head -->
<meta itemprop="name" content="Soluzione della Programmazione Lineare step by step">
<meta itemprop="description" content="Algoritmo del simplesso in forma tabellare (step by step). Risoluzione grafica della programmazione lineare. Programmazione lineare intera con tagli di Gomory.">
';
$this->alta = '<!doctype html>
<html lang="it">
<head>
<title>Ricerca Operativa - ' . $this->titolo . '</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-sRIl4kxILFvY47J16cr9ZwB07vP4J8+LH7qKQnuqkuIAvNWLzeN8tE5YBujZqJLB" crossorigin="anonymous">
<script defer src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js" integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI" crossorigin="anonymous"></script>
' . $keywords . '
</head>
<body class="bg-body-tertiary">
' . /*
<!-- BANNER PUBBLICITA --
<div class="text-center">
<script type="text/javascript">
//<![CDATA[
document.write(\'<s\'+\'cript type="text/javascript" src="http://ad.altervista.org/js.ad/size=728X90/r=\'+new Date().getTime()+\'"><\/s\'+\'cript>\');
//]]>
</script>
</div>
-- FINE BANNER PUBBLICITA -->
'
<!--
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
-->
'*/
implode('', file('analyticstracking.php') ?: [])
. '<div class="container py-4">'
. $testata . '
<!-- TAGLIA 1 -->
<hr class="my-4">
<main class="card shadow-sm"><div class="card-body">
<!-- FINE TESTATA -->
';
}
function setta_bassa(): void
{
if (!isset($this->setta_bassa)) {
$this->setta_bassa = 1;
}
$this->bassa = '
</div></main>
<!-- INIZIO PIEDE -->
<hr class="my-4">
<!-- TAGLIA 2 -->
<div class="row g-2 text-center text-md-start">
<div class="col-md-3"><a class="btn btn-outline-primary w-100" href="index.php">Home</a></div>
<div class="col-md-3"><a class="btn btn-outline-primary w-100" href="immissione_dati.php">Nuovo Problema</a></div>
<div class="col-md-3"><a class="btn btn-outline-secondary w-100" href="show_src.php?script=' . $this->filename . '" target="sorgenti">Codice Sorgente</a></div>
<div class="col-md-3"><a class="btn btn-outline-secondary w-100" href="info.php" target="info">Documentazione</a></div>
</div>
<hr class="my-4">
<div class="row small text-muted">
<div class="col-md-4 mt-2">Roberto Foschini (2022)</div>
<div class="col-md-4 mt-2 text-md-center"><a href="mailto:rfoschini@team.itisravenna.it">rfoschini@team.itisravenna.it</a></div>
<div class="col-md-4 mt-2 text-md-end"><a href="https://school.cdoctor.it">https://school.cdoctor.it</a></div>
</div>
<!-- Un po\' di pubblicità affinchè il sito possa ripagarsi l\'hosting. -->
<br />
<br />
<!-- BANNER PUBBLICITA -->
<!--
<div class="text-center">
<script>!function(d,l,e,s,c){e=d.createElement("script");e.src="//ad.altervista.org/js.ad/size=2X2/?ref="+encodeURIComponent(l.hostname+l.pathname)+"&r="+Date.now();s=d.scripts;c=s[s.length-1];c.parentNode.insertBefore(e,c)}(document,location)</script>
<script>!function(d,l,e,s,c){e=d.createElement("script");e.src="//ad.altervista.org/js2.ad/size=336X280/?ref="+encodeURIComponent(l.hostname+l.pathname)+"&r="+Date.now();s=d.scripts;c=s[s.length-1];c.parentNode.insertBefore(e,c)}(document,location)</script>
-->
</div>
<!-- STATISTICHE -->
<!--
<script>
(function(i,s,o,g,r,a,m){i[\'GoogleAnalyticsObject\']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,\'script\',\'//www.google-analytics.com/analytics.js\',\'ga\');
ga(\'create\', \'UA-1178179-1\', \'altervista.org\');
ga(\'send\', \'pageview\');
</script>
-->
<!-- FINE STATISTICHE -->
</div>
<!-- -->
</body>
</html>';
}
}
?>