CMSlv: Difference between revisions

From ASCEND
Jump to navigation Jump to search
No edit summary
No edit summary
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
{{solvers}}
{{solvers}}
{{stub}}
{{stub}}
This is the [[conditional modelling]] solver implemented by Vicente Rico-Ramirez<ref>http://ascend.cheme.cmu.edu/ftp/pdfThesis/victhesis.pdf</ref>.  Currently this solver is fully operational -- it solves the sample models given in Vicente's thesis, and these have been incorporated in the the [[TestSuite]]. You need to have [[CONOPT]] installed before CMSlv will work; it's used as part of the boundary-crossing algorithm.
This is the [[conditional modelling]] solver implemented by Vicente Rico-Ramirez<ref>http://ascend.cheme.cmu.edu/ftp/pdfThesis/victhesis.pdf</ref>.  Currently this solver is fully operational -- it solves the sample models given in Vicente's thesis, and these have been incorporated in the the [[TestSuite]]. You need to have [[CONOPT]] installed before CMSlv will work; it's used as part of the boundary-crossing algorithm. CMSlv also makes use of a subsidiary logical-expression-solvers called [[LRSlv]].
 
[[File:cmslv.png|thumb|500px|none|Implementation of CMSlv (from Vicente Rico-Ramirez' thesis, see our [[publications]]).]]


== Example ==
== Example ==

Latest revision as of 10:54, 1 April 2015

NLA
QRSlv
CMSlv
IPSlv
NLP
CONOPT
IPOPT
TRON
MINOS
Opt
NGSlv
DAE/ODE
IDA
LSODE
DOPRI5
RADAU5
LA
Linsolqr
Linsol
LP
MakeMPS
Logic
LRSlv

This is the conditional modelling solver implemented by Vicente Rico-Ramirez[1]. Currently this solver is fully operational -- it solves the sample models given in Vicente's thesis, and these have been incorporated in the the TestSuite. You need to have CONOPT installed before CMSlv will work; it's used as part of the boundary-crossing algorithm. CMSlv also makes use of a subsidiary logical-expression-solvers called LRSlv.

Implementation of CMSlv (from Vicente Rico-Ramirez' thesis, see our publications).

Example

Here is an extract of a full example called models/linmassbal.a4c:

  (* Boundaries *)
  CONDITIONAL
      cond1: Fmain <= B[1];
      cond2: Fmain >= B[2];
  END CONDITIONAL;

  bol1 == SATISFIED(cond1,1e-08{lb_mole/hour});
  bol2 == SATISFIED(cond2,1e-08{lb_mole/hour});

  (* Variant Equations *)
  eq1a: Fsub1 = a[1] * Fmain;
  eq1b: Fsub2 = b[1] * Fmain;
  eq2a: Fsub1 = a[2] * Fmain;
  eq2b: Fsub2 = b[2] * Fmain;
  eq3a: Fsub1 = a[3] * Fmain;
  eq3b: Fsub2 = b[3] * Fmain;

  (* Disjunctive Statements *)
  WHEN (bol1,bol2)
      CASE TRUE,FALSE:
          USE eq1a;
          USE eq1b;
      CASE FALSE,FALSE:
          USE eq2a;
          USE eq2b;
      CASE FALSE,TRUE:
          USE eq3a;
          USE eq3b;
  END WHEN;

References