Code Monkey home page Code Monkey logo

ommatlab's Introduction

OpenModelica License: OSMC-PL

OpenModelica is an open-source Modelica-based modeling and simulation environment intended for industrial and academic usage.

OpenModelica User's Guide

The User's Guide is automatically generated from the documentation repository.

OpenModelica environment

The OpenModelica Compiler is the core of the OpenModelica project. OMEdit is the graphical user interface on top of the compiler. OMSimulator is a capable FMI and SSP-based Co-Simulation environment, available as a standalone version or integrated in OMEdit. In addition there are interactive environments OMNotebook, OMPlot and OMShell interaction with the OMCompiler as well as various other tools: OMOptim, OMParser, OMSens, OMSense_Qt.

Working with the repository

OpenModelica.git is a superproject. Clone the project using one of:

# Faster pulling by using openmodelica.org read-only mirror (low latency in Europe; very important when updating all submodules)
# Replace the openmodelica.org pull URL with https://github.com/OpenModelica/OpenModelica.git if you want to pull directly from github
# The default choice is to push to your fork on github.com (SSH). Replace MY_FORK with OpenModelica to push directly to the OpenModelica repositories (if you have access)
MY_FORK=<MyGitHubUserName>
git clone --recurse-submodules https://openmodelica.org/git-readonly/OpenModelica.git
cd OpenModelica
git remote set-url --push origin [email protected]:$MY_FORK/OpenModelica.git
git submodule foreach --recursive 'git remote set-url --push origin `git config --get remote.origin.url | sed s,^.*/,[email protected]:'$MY_FORK'/,`'

If you are a developer and want to update your local git repository to the latest developments or latest heads, use:

# After cloning
cd OpenModelica
git checkout master
git pull
# To checkout the latest master on each submodule run
# you will need to merge each submodule, but your changes will remain
git submodule foreach --recursive "git checkout master && git pull"

# Running master on all submodules might lead to build errors
# so use this to make sure you force all submodules to the commits
# from the OpenModelica glue project which are properly tested
git submodule update --force --init --recursive

In order to push to the repository, you will push to your own fork of OpenModelica.git, etc. You will need to create a fork of each repository that you want to push to (by clicking the Fork button in the GitHub web interface).

If you do not checkout the repositories for some GUI clients (such as OMOptim.git), these directories will be ignored by autoconf and skipped during compilation.

To checkout a specific version of OpenModelica, say tag v1.16.2 do:

git clone --recurse-submodules https://github.com/OpenModelica/OpenModelica.git
cd OpenModelica
git checkout v1.16.2
git submodule update --force --init --recursive

If you have issues building you can try to clean and reset the repository using:

git clean -fdx
git submodule foreach --recursive git clean -fdx
git reset --hard
git submodule foreach --recursive git reset --hard
git submodule update --init --recursive

To check your working copy status and the hashes of the submodules, use:

git status
git submodule status --recursive

To checkout a minimal version of OpenModelica

git clone https://openmodelica.org/git-readonly/OpenModelica.git OpenModelica-minimal
cd OpenModelica-minimal
git submodule update --init --recursive libraries

Build OpenModelica

We automatically generate nightly builds for Windows and for various flavours of Linux. You can download and install them directly if you just want to run the latest development version of OpenModelica without the effort of compiling the sources yourself.

How to run

Here is a short example session. This example uses OMShell-terminal, but OMShell, mos-scripts, or OMNotebook work the same way.

$ cd trunk/build/bin
$ ./OMShell-terminal
OMShell Copyright 1997-2015, Open Source Modelica Consortium (OSMC)
Distributed under OMSC-PL and GPL, see www.openmodelica.org

To get help on using OMShell and OpenModelica, type "help()" and press enter
Started server using:omc -d=interactive > /tmp/omshell.log 2>&1 &
>>> loadModel(Modelica)
true
>>> getErrorString()
""
>> instantiateModel(Modelica.Electrical.Analog.Basic.Resistor)
"class Modelica.Electrical.Analog.Basic.Resistor \"Ideal linear electrical resistor\"
  Real v(quantity = \"ElectricPotential\", unit = \"V\") \"Voltage drop between the two pins (= p.v - n.v)\";
  Real i(quantity = \"ElectricCurrent\", unit = \"A\") \"Current flowing from pin p to pin n\";
  Real p.v(quantity = \"ElectricPotential\", unit = \"V\") \"Potential at the pin\";
  Real p.i(quantity = \"ElectricCurrent\", unit = \"A\") \"Current flowing into the pin\";
  Real n.v(quantity = \"ElectricPotential\", unit = \"V\") \"Potential at the pin\";
  Real n.i(quantity = \"ElectricCurrent\", unit = \"A\") \"Current flowing into the pin\";
  parameter Boolean useHeatPort = false \"=true, if HeatPort is enabled\";
  parameter Real T(quantity = \"ThermodynamicTemperature\", unit = \"K\", displayUnit = \"degC\", min = 0.0, start = 288.15, nominal = 300.0) = T_ref \"Fixed device temperature if useHeatPort = false\";
  Real LossPower(quantity = \"Power\", unit = \"W\") \"Loss power leaving component via HeatPort\";
  Real T_heatPort(quantity = \"ThermodynamicTemperature\", unit = \"K\", displayUnit = \"degC\", min = 0.0, start = 288.15, nominal = 300.0) \"Temperature of HeatPort\";
  parameter Real R(quantity = \"Resistance\", unit = \"Ohm\", start = 1.0) \"Resistance at temperature T_ref\";
  parameter Real T_ref(quantity = \"ThermodynamicTemperature\", unit = \"K\", displayUnit = \"degC\", min = 0.0, start = 288.15, nominal = 300.0) = 300.15 \"Reference temperature\";
  parameter Real alpha(quantity = \"LinearTemperatureCoefficient\", unit = \"1/K\") = 0.0 \"Temperature coefficient of resistance (R_actual = R*(1 + alpha*(T_heatPort - T_ref))\";
  Real R_actual(quantity = \"Resistance\", unit = \"Ohm\") \"Actual resistance = R*(1 + alpha*(T_heatPort - T_ref))\";
equation
  assert(1.0 + alpha * (T_heatPort - T_ref) >= 1e-15, \"Temperature outside scope of model!\");
  R_actual = R * (1.0 + alpha * (T_heatPort - T_ref));
  v = R_actual * i;
  LossPower = v * i;
  v = p.v - n.v;
  0.0 = p.i + n.i;
  i = p.i;
  T_heatPort = T;
  p.i = 0.0;
  n.i = 0.0;
end Modelica.Electrical.Analog.Basic.Resistor;
"
>> a:=1:5;
>> b:=3:8
{3,4,5,6,7,8}
>>> a*b

>>> getErrorString()
"[<interactive>:1:1-1:0:writable] Error: Incompatible argument types to operation scalar product in component <NO COMPONENT>, left type: Integer[5], right type: Integer[6]
[<interactive>:1:1-1:0:writable] Error: Incompatible argument types to operation scalar product in component <NO COMPONENT>, left type: Real[5], right type: Real[6]
[<interactive>:1:1-1:0:writable] Error: Cannot resolve type of expression a * b. The operands have types Integer[5], Integer[6] in component <NO COMPONENT>.
"
>> b:=3:7;
>> a*b
85
>>> listVariables()
{b, a}
>>

How to contribute to the OpenModelica Compiler

The long-term development of OpenModelica is supported by a non-profit organization - the Open Source Modelica Consortium (OSMC).

See CONTRIBUTING.md on how to contribute to the development. If you encounter any bugs, feel free to open a ticket about it. For general questions regarding OpenModelica there is a discussions section available.

License

See OSMC-License.txt.

How to cite

See the CITATIONS file for information on how to cite OpenModelica in any publications reporting work done using OpenModelica. For a complete list of all publications related to OpenModelica see doc/bibliography/openmodelica.bib.


Last updated: 2023-06-21

ommatlab's People

Contributors

adrpo avatar arun3688 avatar casella avatar crazy734 avatar hkiel avatar jkrt avatar mohammadhadializadeh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ommatlab's Issues

incorrect order of names in linear states

Hello,

I use the linearize command for the linearization of the following system:

der(x[1])= 4*x[1]+2*x[2]+3*x[3]+5*y1+3*u;   
der(x[2])= 1*x[2]+8*x[3]+2*y2;            
der(x[3])= x[3]+y1+2*y2;               
der(x[4])= x[4]+x[5]+y1+2*y2; 
der(x[5])= x[1]+x[6]+y1+3*y2; 
der(x[6])= x[2]+x[7]+y1+2*y2; 
der(x[7])= x[7]+x[8]+8*y1+2*y2; 
der(x[8])= x[10]+2*y2; 
der(x[9])= x[3]+x[9]+x[1]+y1+2*y2;   ///2x[3]
der(x[10])= x[1]+x[2]+x[3]+2*x[8]+12*y1+25*y2;
der(x[11])= 3*x[1]+a+x[8]+7*y1+2*y2+5*x[9]; 
der(a)= x[11]+x[10]+10*y1+2*y2;   

y1=x[1]+2*x[2]+a;
y2=x[3]+2+x[5]+x[8]; 

The linearization command works correctly.
When I use omc.getLinearStates() it returns the following array:
["a" "x[10]" "x[11]" "x[1]" "x[2]" "x[3]" "x[4]" "x[5]" "x[6]" "x[7]" "x[8]" "x[9]"]

However, the order of the state variable names is as the following in the linearized.mo file :

  Real 'x_a' = x[1];
  Real 'x_x[1]' = x[2];
  Real 'x_x[2]' = x[3];
  Real 'x_x[3]' = x[4];
  Real 'x_x[4]' = x[5];
  Real 'x_x[5]' = x[6];
  Real 'x_x[6]' = x[7];
  Real 'x_x[7]' = x[8];
  Real 'x_x[8]' = x[9];
  Real 'x_x[9]' = x[10];
  Real 'x_x[10]' = x[11];
  Real 'x_x[11]' = x[12];

Please consider that the A, B, C, and D matrices are the same in both the linearized file and the result of the linearize command.

For advanced control problems like MPC, it is necessary for the resulting state names order to be as same as the order in linearized.mo file. Because it is difficult to check the correct state name order in each iteration( there is a possibility of introducing new states to the model due to the hybrid form of the system).

The same bug is possible for these commands too:

omc.getLinearOutputs()
omc.getLinearInputs()

the supplementary files:
test.zip

Thanks for your help

Minor bug, regular expression, output signals non-negative

Some of my torque signals were non-zero when calling omc.getSolutions() because parseExpression() missed the signs. But when I changed line 855 to the following, everything worked:
final=regexp(args,'"(.*?)"|[{}()=]|[-a-zA-Z0-9_.]+','match');
(I just added the first minus in [-a-zA-Z0-9_.])

OMMatlab lots of invalid Matlab syntax (Matlab R2015b)

Hi,

I just wanted to give OMMatlab a try and downloaded it. After trying to run it the first time, Matlab found a lot of syntax errors in OMMatlab.m all of which are due to unallowed use of the " character.

Example from line 85:
libmsg = obj.sendExpression("loadFile( """+ libraries{n} +""")");

The syntax used is very invalid Matlab code. First, Matlab only accepts the ' character for string definition. Second, in Matlab language, strings are concatenated using vector notation [string1 string2] instead of adding with a + operator.

I am very curious to learn how anybody was able to execute OMMatlab in view of these syntax errors? Or is everybody trying in Octave, which is much less stringent in terms of Matlab syntax?

I would appreciate if OMMatlab would be fixed to be actual Matlab. I can give advice if needed.

BR,
Robert

adding static javaclasspath.txt to preddir does not working

@hkiel , add the jar files location to javaclasspath.txt at prefdir location does not work, And it only works when the path is added to which classpath.txt file in the matlab location, I found some answers which suggest to add the path in classpath.txt
see ,https://se.mathworks.com/matlabcentral/answers/96993-how-can-i-use-a-java-class-from-a-jar-file-in-matlab

also see issue Error using OMMatlab

Should we change the readme file instruction ?

Boosting Linearization Process

Hello,

Is there any way to boost the omc.linearize() process? I'm attaching a sample file.
smp.zip

It takes 6 minutes on my computer to do the linearization process for a single iteration, but I need this process to run 20000 iterations in a for loop with different start values which is very time-consuming(around 97 days!!). Does any specific flag or method exist for refining the procedure not only for linearization but also for simulation?

Observer

Hello,
I'm not sure if I'm asking this question in the right part.

Is there any way to design nonlinear state estimators like EKF or UKF in the OpenModelica?

Linearization model

Hello
When I use the Linearize command for a hybrid system( contains if- else statement) I get the following error:

>> a=omc.linearize()
Index in position 2 is invalid. Array indices must be positive integers or logical values.

Error in OMMatlab/getLinearMatrixValues (line 843)
                    tmpMatrix(r,c)=val;

Error in OMMatlab/getLinearMatrix (line 818)
            tmpMatrix_A=getLinearMatrixValues(obj,matrix_A);

Error in OMMatlab/linearize (line 777)
                    result=getLinearMatrix(obj);

Error using OMMatlab

Hi,

I'm trying to execute the commands import OMMatlab.*" and "omc=OMMatlab() but I got errors:

Error using OMMatlab
Error: File: OMMatlab.m Line:14 Column: 22
The input character is not valid in MATLAB statements or expressions.

I did all the installation:

1- I wrote pathtool on the Matlab Command Window. A window appears, I added the directory where I have the OMMatlab folder: "C:\Downloads\OMMatlab"

2- Then I wrote prefdir. I created the "javaclasspath.txt" file in the location that prefdir showed me. Inside the file I wrote "C:\Downloads\OMMatlab\jeromq-0.4.4-SNAPSHOT.jar"

3- I tried to execute the commands like import OMMatlab.* and omc=OMMatlab() but I always get the same error (I wrote at the beginning). I though about if I need to put the OMMatlab folder into a specific location. I tried to change it to "C:\OpenModelica1.12.0-64bit\OMMatlab\jeromq-0.4.4-SNAPSHOT.jar" into the 1 and 2 installation steps, but it doesn't work.

I opened the OMMatlab.m file in Matlab and I saw some ",I changed it to ' but it doesn´t work. Am I missing something?

Thanks in advance.

Problem when using setParametrs+Linearization

Hi

When trying to set initial states from upstream with set parameters, the Linearization command does not consider the upstream specified parameter values.
For example, consider the model

model test7
  Real[2] x;
  parameter Real[2] x_PI;
  input Real u;
initial equation
  x=x_PI;
equation
  der(x[1])=x[1]^2+u;
  der(x[2])=x[2]^3;
end test7;

Matlab command:

clear all
import OMMatlab.*
global fie

omc=OMMatlab();

omc.ModelicaSystem("test7.mo","test7");

omc.setInputs("u=2");

omc.setParameters("x_PI_1_=2");
omc.setParameters("x_PI_2_=3");

omc.setLinearizationOptions(["startTime=0","stopTime=0"])%"stepSize=0.0001","tolerance=1e-05"])% 
a=omc.linearize()

A=cell2mat(a(1));

It considers the initial condition as [0;0] , and returns the A=[0 0;0 0], while I set the initial values as [2;3] and it is supposed for A to be [4 0;0 27]

Large scale parameter specification Problem

Please consider the following model:


model test8
parameter Real[1,300] x_P;
parameter Real[1,300] y_P;
  Real[1,300] x;
Real[1,300] y(start=y_P);
  
 input Real u;

equation

der(x)=x.^0.1 .+u;
y=2*x;

initial equation
x=x_P;

end test8;

and the following Matlab script for upstream simulation:

clear all
import OMMatlab.*


omc=OMMatlab();
omc.ModelicaSystem("test8.mo","test8");
%% Setting input
omc.setInputs("u=2");

%% initiallizing the system (initial equation)
for i=1:300
    omc.setParameters("x_P_1_"+num2str(i)+"_="+mat2str(1.12345678910,11));
end

%% Specifying initial guess for y
for i=1:300
    omc.setParameters("y_P_1_"+num2str(i)+"_="+mat2str(2*1.12345678910,11));
end
%% Simulate

 omc.setSimulationOptions(["startTime=0","stopTime=1"]);
 omc.simulate()

it returns:

The command line is too long. 

ans =

     1

This problem is expected for Linearize command too.

Could you please comment / do possible fixes?

License is missing

This repository currently lacks a license. Maybe we should add the same as for OMJulia

Invalid installation instructions

Do not edit pathdef.m ( -> % DO NOT MODIFY THIS FILE. IT IS AN AUTOGENERATED FILE.), but use pathtool to add the path.
Do not edit classpath.txt, but create file javaclasspath.txt in preferences folder (can be found by prefdir)

'ZMQ.context' error

Dear all
I received a error in Matlab as follows:

Unable to resolve the name 'ZMQ.context'.
Error in OMMatlab (line 113)
obj.context=ZMQ.context(1);

Could you please guide me to solve the problem?

FATAL Problem, Lin-Sim sequential use

Please consider the following model & Matlab script:

model test8
parameter Real[1,3] x_P;
parameter Real[1,3] y_P;
  Real[1,3] x;
Real[1,3] y(start=y_P);
  
 input Real u;

equation

der(x)=x.^0.1 .+u;
y=2*x;

initial equation
x=x_P;

end test8;
clear all
import OMMatlab.*


omc=OMMatlab();
omc.ModelicaSystem("test8.mo","test8");
%% Setting input
omc.setInputs("u=2");

%% initiallizing the system (initial equation)
for i=1:3
    omc.setParameters("x_P_1_"+num2str(i)+"_="+mat2str(1));
end

%% Simulate

 %omc.setSimulationOptions(["startTime=0","stopTime=1"]);
  omc.setSimulationOptions(["startTime=0","stopTime=0"]); % Problematic
 omc.simulate()
 r=omc.getSolutions("x[1,2]");

 %% reinitialize & linearize
 for i=1:3
    omc.setParameters("x_P_1_"+num2str(i)+"_="+mat2str(2));
 end


  omc.setLinearizationOptions(["startTime=0","stopTime=1"]);
 b= omc.linearize();

When we use simulation options as omc.setSimulationOptions(["startTime=0","stopTime=1"]); the sequential use of simulation and linearization completes successfully.

But if we set the simulation options as omc.setSimulationOptions(["startTime=0","stopTime=0"]); ( in case we want to initialize the model and get the initial states only), the simulation finishes successfully. But when it comes to run linearization, the process does not stop and fills the Windows drive(C:\ in my PC) completely (like an infinity loop for data generation)!!!!!!!

However, both the linearization and simulation have simple mathematical solutions in each case!

Linearization Bug

Hey,

There's a minor issue in the linearization function that I may have noticed in line 757. The isempty function does not work if the fields of the struct are empty, i.e. even if it is a 1X1 struct with no fieldnames as well, the ~isempty(matrix_name) returns a 1.

if(~isempty(matrix_name)) fields=fieldnames(matrix_name);

I also found the solution by changing it to

if(~isempty(fieldnames(matrix_name))) fields=fieldnames(matrix_name);

Variable are not changing the value

Hello guys, I have a windows 10 installed and it's my first time using the OMMatlab interface. I have the Matlab R2022b and Open Modelica 1.22.3 installed on my PC (installed on C:/). I pick an example here and when i change the mass and the stopTime it changes on the output but it's no plotting with the right values.

I already update my java, add the /bin on the Path environment variable on Windows and nothing is happening. What can it be?

The steps I install was create a folder on the Matlab toolbox folder called ommatlab, and run the pathtool and add this directory

Then i runned the prefdir and add the javaclasspath.txt and past this path C:/Users/luisa/Downloads/OMMatlab-master/OMMatlab-master/jeromq-0.4.4-SNAPSHOT.jar (It doesn't make any difference if I use / or )

This is my file on Matlab called acionador.m

import OMMatlab.*
omc = OMMatlab();
omc.sendExpression("getVersion()")
omc.sendExpression('loadFile("exemplo.mo")')
omc.ModelicaSystem("exemplo.mo","exemplo")
omc.sendExpression("getClassNames()")
omc.getParameters(["m","E"])
omc.setParameters("m = 0.7")
omc.getParameters(["m","E"])
omc.getSimulationOptions(["stopTime","stepSize"])
omc.setSimulationOptions(["stopTime=2","stepSize=0.001"])
omc.getSimulationOptions(["stopTime","stepSize"])
omc.simulate();
omc.sendExpression("simulate(exemplo)")
omc.sendExpression("plot(h)")

This is the output from this file

>> acionador
ans = 

    "OpenModelica v1.22.3 (64-bit)"
ans = 
    "true"
ans = 
    "true"
ans = 
    "C:/Users/luisa/AppData/Local/Temp/tp6a06a83f_8709_4da3_a5e2_5c1e7083784c"
ans = 
  1×4 string array
    "ModelicaServices"    "Complex"    "Modelica"    "exemplo"
ans = 
  1×2 string array
    "0.1"    "220.0"
ans = 
  1×2 string array
    "0.7"    "220.0"
ans = 
  1×2 string array
    "1"    "0.002"
ans = 
  1×2 string array
    "2"    "0.001"
LOG_SUCCESS       | info    | The initialization finished successfully without homotopy method.
LOG_SUCCESS       | info    | The simulation finished successfully.
ans =
     0
ans = 
  struct with fields:

           resultFile: "C:/Users/luisa/AppData/Local/Temp/tp6a06a83f_8709_4da3_a5e2_5c1e7083784c/exemplo_res.mat"
    simulationOptions: "startTime = 0.0, stopTime = 1.0, numberOfIntervals = 500, tolerance = 1e-06, method = 'dassl', fileNamePrefix = 'exemplo', options = '', outputFormat = 'mat', variableFilter = '.*', cflags = '', simflags = ''"
             messages: "LOG_SUCCESS       | info    | The initialization finished successfully without homotopy method.↵LOG_SUCCESS       | info    | The simulation finished successfully.↵"
         timeFrontend: "0.1742779"
          timeBackend: "0.0816281"
          timeSimCode: "0.0064083"
        timeTemplates: "0.017791"
          timeCompile: "6.2424061"
       timeSimulation: "0.0984259"
            timeTotal: "6.6213661"
ans = 
    "true"

You can see on the second input from omc.getParameters(["m","E"]) m is already 0.7 and the stoptime have the same behavior, but it's still plotting the graph with the stopTime 1

Do you guys have any clue about this problem?

Test Error

Hello,
I want to use OMMATLAB for the first time. I've just followed the procedure, but I get an error when I want to test the interference.

image

getSolutions bug for large numbers

Hi.
Consider the following model

model test2
  parameter Real a_Pi=-1.55555555555e16;
  Real x; 
equation
  der(x) = a_Pi;
end test2;

When trying to simulate using the following code:

clear all
import OMMatlab.*
omc=OMMatlab();
omc.ModelicaSystem("test2.mo","test2");
omc.setSimulationOptions(["startTime=0","stopTime=0"]);
omc.simulate()
a=omc.getSolutions("a_Pi")

it returns :

a =

  1×1 cell array

    {["-1.555555555e"    "16"    "-1.555555555e"    "16"]}

that is a deprecated form of -1.5555555e16. It happens not only for parameters but also for large state variables with many decimals when trying to get them by getSolutions.

changing values and simulate

Hi!

I've been working for a while trying to change some values and simulate again but is always keeping the same result.

I try to simulate BouncingBall for 1 time, and e = 0.7 I changed it to e=1.4 and simulate again but the value is 0.7 again. What can I do to keep the new one? (I used system("./BouncingBall -override=e="+String(1.4)+" -r=BouncingBall" + "_res.mat");)

setting parameter for a vector parameter

Hello,
I defined a vector parameter in my OM model like this:
parameter Real[10] a
But when I try to set the parameters with OMMatlab command, I'm getting an error
omc.setParameters("a[1:10]=[1,1,1,1,1,1,1,1,1,1]")

what is the correct way to set a vector parameter with OMMatlab?

initialization

Hi, I'm trying to implement a Model Predictive Control on an Open Modelica written model. I want to enforce the control algorithm on Matlab and pass the optimal values of parameters to OM with OMMatlab.
I need to simulate the model in multiple separate but simultaneous time intervals. For example, I'm going to simulate the model from 0 to 10s and then do some calculations in Matlab, and change some parameters of the model, and then I want to start the simulation from time=10 to 20. So I need to pass the simulator's state values of time =10 as the initial conditions in the second interval. I have around 2000 variables(2000 initial states), and I'm not sure how to enter the values of past time steps to the OM as the initial conditions. Is there any effective method to handle this problem?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.